Avatar billede karlkoder Nybegynder
03. april 2001 - 11:28 Der er 21 kommentarer og
1 løsning

ProgressBar i VC++ ( IKKE MFC !!! )

Hvordan fylder jeg min ProgressBar ud ??

MÅ IKKE VÆRE I MFC !!!

- Karl
Avatar billede disky Nybegynder
03. april 2001 - 11:29 #1
tegn en firkant der blvier større og større
Avatar billede borrisholt Novice
03. april 2001 - 11:34 #2
FRA MSDN :

Progress Bar Control
Progress bar controls indicate the progress of a lengthy operation such as downloading a file from the Internet. Usually the progress is expressed as a percentage from 0 to 100.

The window class name for a progress bar control is PROGRESS_CLASS, which is defined as \"msctls_progress\" in commctrl.h.



Jens B
Avatar billede wisen Nybegynder
03. april 2001 - 11:35 #3
< MSDN >

A progress bar\'s range represents the entire duration of the operation, and the current position represents the progress that the application has made toward completing the operation. The window procedure uses the range and the current position to determine the percentage of the progress bar to fill with the highlight color as well as to determine what text, if any, to display within the progress bar.

If you do not set the range values, the system sets the minimum value to zero and the maximum value to 100. You can adjust the range to convenient integers by using the PBM_SETRANGE message.

A progress bar provides several messages that you can use to set the current position. The PBM_SETPOS message sets the position to a specified value. The PBM_DELTAPOS message advances the position by adding a specified value to the current position. The PBM_SETSTEP message enables you to specify a step increment for a progress bar. Subsequently, when you send the PBM_STEPIT message to the progress bar, the current position advances by the specified increment. The default step increment is 10.

Note The range values in a progress bar are considered signed integers. Any number greater than 0x7FFFFFFF is interpreted as a negative number.

< /MSDN >

Du må kunne bruge de messages til at manipulere med den. Det burde bare være noget med nogle \"sendmessage\" :)
Avatar billede wisen Nybegynder
03. april 2001 - 11:44 #4
Her er de forskellige messages, med parametre :

PBM_SETRANGE : wParam = 0; lParam = MAKELPARAM(nMinRange, nMaxRange);
PBM_SETPOS  : wParam = (WPARAM) nNewPos;  lParam = 0;
PBM_GETPOS  : wParam = 0; lParam = 0;

Bemærk at PBM_GETPOS returnerer en UINT !

/wisen




Avatar billede borrisholt Novice
03. april 2001 - 12:10 #5
prøv etv
hwnd pHandle =    Progress_handle = CreateWindow(PROGRESS_CLASS, \"test\", WS_CHILD| WS_VISIBLE|WS_BORDER, 10, 10, 200, 35, handle, NULL, hInst, NULL);

hvor handle er et handle til dit main vindue og hInst er et handle til application instance. Send etv bud efter et eksempel : Jens@Borrisholt.com

Jens B
Avatar billede karlkoder Nybegynder
05. april 2001 - 08:18 #6
hvilken dll skal loades ??
Avatar billede borrisholt Novice
05. april 2001 - 08:19 #7
du skal bare inkuldere <comonctrl.h>

Jens B

Avatar billede karlkoder Nybegynder
05. april 2001 - 08:20 #8
borrisholt:

den giver mig følgende fejl:

LNK2001: unresolved external symbol \"struct HINSTANCE__ *  g_hinst\" (?g_hinst@@3PAUHINSTANCE__@@A)
Avatar billede karlkoder Nybegynder
05. april 2001 - 08:21 #9
borrisholt:

jeg prøvede at sende dig en mail i går men jeg fik en fejl besked tilbage...

ville have spurgt dig om du havde et kørtbart eksempel i VC++ (IKKE MFC)
Avatar billede borrisholt Novice
05. april 2001 - 08:34 #10
karlkoder  >>

Du nosser i et eller ander, hvad ved jeg ikke ... Send mig lige en mail igen ...

Jens B
Avatar billede wisen Nybegynder
06. april 2001 - 10:48 #11
... Du skal måske kalde \"InitCommonControlsEx\" før du skaber din \"PROGRESS_CLASS\".

INITCOMMONCONTROLSEX initcontrols;
initcontrols.dwICC =  ICC_PROGRESS_CLASS ;
initcontrols.dwSize = sizeof(initcontrols);
InitCommonControlsEx(&initcontrols);

Prøv evt. med det. (Jeg har ikke teste det !)
Avatar billede borrisholt Novice
06. april 2001 - 10:58 #12
wisen >> Jeg ved ikke hvad karlkoder har gjort galt .....  Anyway jeg har tilbudt manden et eksempel det virker ... men indtil videre har jeg ikke hørt fra ham ..... Så problemet er nok ikke så stort ....


Jens B
Avatar billede wisen Nybegynder
06. april 2001 - 11:00 #13
Nope, eller måske han selv har fundet ud af det !?!
Avatar billede karlkoder Nybegynder
07. april 2001 - 11:21 #14
jeg har selv fundet en stump kode. Den og så det jeg har fået fra jer gutter af har jeg gjort at det nu kører...

problemet er at når progressbaren kører er alt andet resterende \'dødt\' på dialogboxen...    =(

kan det være på grund af at jeg bruger CreateWindowEx istedet for CreateWindow ??

meget mærkeligt ihvertfald..

er der nogen som kender noget til unace og dens progress-callbacks ??
Avatar billede karlkoder Nybegynder
07. april 2001 - 11:23 #15
hvis man trykker på noget andet end dialogboxen område forsvinder dialogboxen (som de jo plejer) men jeg kan ikke komme tilbage før at den process (unace) som kører / bliver fyldt ud i progressbaren er færdig...
Avatar billede karlkoder Nybegynder
07. april 2001 - 11:41 #16
kan man ikke sende SendMessage afsted til en progressbar uden at den skal laves i et seperat window ??

jeg tænker her på andre controls så som edit/combo boxe osv...

dem skal man jo ikke åbne op i et selvstændigt \'window\'...
Avatar billede karlkoder Nybegynder
07. april 2001 - 11:44 #17
det er bare underligt fordi jeg har jo tegnet en progressbar i editoren, givet den ID osv..  men jeg bruger den ikke på grund af at den jo kører i et WINDOW..
Avatar billede wisen Nybegynder
09. april 2001 - 07:48 #18
Jammen hvis du har lavet en progressbar i ressourceeditoren, er det ikke nødvendigt bagefter at lave en \"CreateWindow\", det er jo een af de ting du bliver sparet for. Du skal desuden huske af progressbaren er \"child\" af den dialog den ligger på.
Avatar billede borrisholt Novice
09. april 2001 - 08:17 #19
karlkoder  >> Hvis nu du blot sender mig den e-mail, eller offenligører din egen så skal jeg nok vise dig hvordan mang gør ....

Jens B
Avatar billede karlkoder Nybegynder
09. april 2001 - 16:03 #20
borrisholt >> Kan du sende mig et eksempel på det ??

sketzh_@hotmail.com
Avatar billede karlkoder Nybegynder
09. april 2001 - 23:08 #21
der er kun et hvidt baggrundsbillede...  =(
Avatar billede borrisholt Novice
10. april 2001 - 07:51 #22
Jeg har lige tagen den zip fil jeg sendte dig i går pakket den ud og kompileret eksemplet, og det virker .....

Hvis du ikke bruger windows 2000 som jeg så prøv etv at erstatte CreateWindow med CreateWindow .. Under alle omstendighedder så ved du jo selv hvordam man sætter en progressbar på et vindue så må du jo aselv tilrette metoden void CMainWindow::CreateProgressBar()

Jens B
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester