Bonjour tout le monde,
j'essaye de réaliser une classe progress qui permettrait de créer une barre de progression n'importe où dans un projet beaucoup plus long. J'ai réussi à la faire fonctionner mais j'ai du chipoter en intégrant la fonction sensé contrôler la barre à l'intérieur du code même de la barre (moche!!) . Maintenant le soucis c'est que mon code n'exécute même pas la méthode InitDialog de windows (rentre pas dedans) et là je suis complétement piégé. Je suis parti d'un exemple tout fait et ai essayer de la modifier pour l'adapter à mon problème.
Voici le code
le resource.h :
resource.rc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part #define IDE_PB1 101
progress.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #include <windows.h> #include "resource.h" DIALOG1 DIALOG 60, 60, 160, 80 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "ProgressBar" BEGIN //DEFPUSHBUTTON "Progress", IDOK, 56, 55, 42, 12 CONTROL "", IDE_PB1, "msctls_progress32", 0 ,10, 20, 140, 12 END
progress.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #include <windows.h> class Progress { public: Progress(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow,int len); void next(); private: HWND *hand; int longueur; int cur; BOOL APIENTRY run_msg(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam); void quit(); };
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 #include <windows.h> #include "Progress.h" #include "resource.h" #include <commctrl.h> #include <iostream> using namespace std; Progress::Progress(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow,int len) { InitCommonControls(); DialogBox(hInstance,"DIALOG1",NULL,(DLGPROC)&Progress::run_msg); longueur=len; cur=0; } BOOL APIENTRY Progress::run_msg(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: SendDlgItemMessage(hDlg, IDE_PB1, PBM_SETRANGE, 0, MAKELONG(1,longueur)); SendDlgItemMessage(hDlg, IDE_PB1, PBM_SETSTEP, 1, 0); hand=&hDlg; return TRUE; case WM_COMMAND: if (LOWORD(wParam) == IDCANCEL) { EndDialog(*hand,0); } return TRUE; default: return FALSE; } } void Progress::next() { SendDlgItemMessage(*hand, IDE_PB1, PBM_STEPIT, 0, 0); cur=cur+1; if(cur==longueur) { quit(); } } void Progress::quit() { EndDialog(*hand,0); }
Merci d'avance pour ceux qui pourront m'aider ou qui auront essayer
Partager