bonjour tout le monde
je cherche un exemple de source qui créerai un bouton ou un composant quelconque dynamiquement.
merci
bonjour tout le monde
je cherche un exemple de source qui créerai un bouton ou un composant quelconque dynamiquement.
merci
Salut,
tiens, un petit exemple vite fait pour illustrer quelques concepts (Fenetre, Menu, Edit, et Boutton).
Ne réagissent que le menu quitter et le boutton, le reste est à faire...
Si tu as besoins de précisions, n'hésite pas
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91 #define ID_ABOUT 40000 #define ID_AIDE 40001 #define ID_QUIT 40002 #define ID_EDIT 40003 #define ID_BUTTON 40004 HINSTANCE ghInstance; LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc ; PAINTSTRUCT ps ; HMENU hMenu; HWND edit, but; switch (message) { case WM_CREATE: hMenu = CreateMenu(); AppendMenu (hMenu, MF_SEPARATOR, 0, NULL) ; AppendMenu (hMenu, MF_STRING, ID_ABOUT, TEXT ("À propos de...")) ; AppendMenu (hMenu, MF_STRING, ID_AIDE, TEXT ("Aide...")) ; AppendMenu (hMenu, MF_STRING, ID_QUIT, TEXT ("Quitter")) ; SetMenu(hwnd,hMenu); edit = CreateWindowEx(0, "EDIT", "", WS_VISIBLE|WS_CHILD| WS_BORDER|ES_WANTRETURN|ES_MULTILINE|ES_AUTOHSCROLL|ES_AUTOVSCROLL, 20, 50, 200, 40, hwnd, (HMENU)ID_EDIT, ghInstance, NULL); but = CreateWindowEx(0, "BUTTON", "Appuyer ici", WS_VISIBLE|WS_CHILD| WS_BORDER, 20, 100, 200, 40, hwnd, (HMENU)ID_BUTTON, ghInstance, NULL);return 0 ; case WM_PAINT : hdc = BeginPaint (hwnd, &ps) ; TextOut (hdc, 20, 10, "test", 4); EndPaint (hwnd, &ps) ; return 0 ; case WM_DESTROY : PostQuitMessage (0) ; return 0 ; case WM_COMMAND: switch (LOWORD (wParam)) { case ID_QUIT: PostQuitMessage (0) ; return 0 ; case ID_BUTTON : if (HIWORD (wParam) == BN_CLICKED) MessageBox(NULL,"Appuyé","",MB_ICONSTOP); return 0; } break ; } return DefWindowProc (hwnd, message, wParam, lParam) ; } int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { ghInstance = hInstance; static TCHAR nomApp[] = TEXT ("Démo") ; HWND hwnd ; MSG msg ; WNDCLASS wndclass ; wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = nomApp ; if (!RegisterClass (&wndclass)) { MessageBox (NULL, TEXT ("Nt ou supérieur uniquement"), nomApp, MB_ICONERROR) ; return 0 ; } hwnd = CreateWindowEx(WS_EX_TOPMOST | WS_EX_TOOLWINDOW, nomApp,"",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,250, 250, NULL,NULL,hInstance,NULL); ShowWindow (hwnd, nCmdShow) ; UpdateWindow (hwnd) ; while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; } return msg.wParam ; }
Bonjour,
j'ai compris la technique, j'ai déjà une fenetre main avec des ressources comme menu qui est lancé avec un CreateWindow.
J'ai bien une ptite creer les boutons à partir de la procedure
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
60
61 int APIENTRY WinMain(HINSTANCE hIns, HINSTANCE hPrevIns, LPSTR lpCmdLine, int nCmdShow) // *********************************************************************************** { WNDCLASS wc; HWND hWnd; MSG msg; int i; trace("WinMain(hIns=0x%x, hPrevIns=0x%x, lpCmdLine=\"%s\", nCmdShow=0x%x)\n", hIns, hPrevIns, lpCmdLine, nCmdShow); wc.style = 0; wc.lpfnWndProc = WinUraWinProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hIns; wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); wc.lpszMenuName = "WinUraMenu"; wc.lpszClassName = "WinUraWC"; if (!RegisterClass(&wc)) { Message("RegisterClass(\"WinUra\") impossible\n"); return 0; } wc.style = 0; wc.lpfnWndProc = WinPhotoProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hIns; wc.hIcon = NULL; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH); wc.lpszMenuName = ""; wc.lpszClassName = "Photo"; if (!RegisterClass(&wc)) { return 0; } hInst = hIns; hWnd = CreateWindow("WinUraWC", "WinUra", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hIns, NULL); ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); ForceClientAreaSize(hWnd, 720, 578);
qui est appelé au démarrage WinPhotoProc
une autre : à quoi correspond la valeur du #define ID_BUTTON 40004
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 LRESULT CALLBACK WinPhotoProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { static HDC hDesktopCompatibleDC=NULL; static HDC hDesktopDC=NULL; static HWND hDesktopWnd=NULL; //PAINTSTRUCT ps ; //HDC hdc ; int i, j=0 ; for(i=0;i<4;i++) PhotoWnd[i].Display(); switch( message ) { case WM_LBUTTONDOWN: for (i=0; i<4; i++) { PhotoWnd[i].Display(); // if (!PhotoWnd[i].bRunning){ ca fige les 4 photos sinon ca plante l'appli et le pc // PhotoWnd[i].Set() ;} if (PhotoWnd[i].hWnd==hWnd) { if (!PhotoWnd[i].bRunning) return 0; //On test si un image est déja stockée dans le fenêtre if(PhotoWnd[i].pBuf==0) { //Il n'y en a pas, on capture trace("Terminaison\n"); UranieStopMonitoring(hUranie, hWnd); UranieTerm(hUranie); PhotoWnd[i].Save(); PhotoWnd[i].bRunning=false; //Active le monitoring sur la première fenêtre libre i=-1; do{i++;}while((PhotoWnd[i].pBuf!=0)&&(i<4)); PhotoWnd[i].Set(); } else { //Il y en a une, on vide pBuf; delete [] PhotoWnd[i].pBuf; PhotoWnd[i].pBuf=0; PhotoWnd[i].Set(); } } } return 0; /* case WM_ACTIVATE: if (wParam == WA_CLICKACTIVE) { for (i=0; i<4; i++) { if (PhotoWnd[i].hWnd==(HWND)lParam) { if (!PhotoWnd[i].bRunning) // fenetre non active { hUranie = UranieInit(); UranieStartMonitoring(hUranie, hWnd); // je reactive } //alors c'est le handle de la fenetre activée } } } break;*/ /// G ESSAYE CA AUSSI } return DefWindowProc( hWnd, message, wParam, lParam ); }
merci
le define permet d'affecter un identifiant à un controle
pour créer les boutons, il faut le faire pour le message WM_CREATE de ta fenetre
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager