Bonjour,
Je d�bute en Visual C++.
J'ai cr�� un menu � l'aide de l'�diteur de ressources.
Il a pour identifiant MAINMENU;
Comment dois je proc�der pour l'afficher sur ma fen�tre principale ?
Merci � tous.
Version imprimable
Bonjour,
Je d�bute en Visual C++.
J'ai cr�� un menu � l'aide de l'�diteur de ressources.
Il a pour identifiant MAINMENU;
Comment dois je proc�der pour l'afficher sur ma fen�tre principale ?
Merci � tous.
Le plus simple: LoadMenu(identifiant), et tu mets �a en membre HMENU de ta WNDCLASS.
Merci pour ta r�ponse mais je ne vois pas du tout o� mettre LoadMenu. J'ai essay� pas mal de choses et notamment mettre "IDR_MENU1" dans le champ lpszMenuName. Mais le menu ne s'affiche pas.
Voici mon code :
Merci � tousCode:
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120 // Includes #include <windows.h> #include "resource.h" // Function Declarations LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); // WinMain int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iCmdShow) { WNDCLASS wc; HWND hWnd; HDC hDC; HGLRC hRC; MSG msg; BOOL quit = FALSE; // register window class wc.style = CS_OWNDC; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon( NULL, IDI_APPLICATION ); wc.hCursor = LoadCursor( NULL, IDC_ARROW ); wc.hbrBackground = (HBRUSH)GetStockObject( BLACK_BRUSH ); wc.lpszMenuName = NULL; wc.lpszClassName = "GLSample"; RegisterClass( &wc ); // create main window hWnd = CreateWindow( "GLSample", "It's very easy to build a window ...", WS_CAPTION | WS_POPUPWINDOW | WS_VISIBLE, 0, 0, 512, 512, NULL, NULL, hInstance, NULL ); // program main loop while ( !quit ) { // check for messages if ( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) ) { // handle or dispatch messages if ( msg.message == WM_QUIT ) { quit = TRUE; } else { TranslateMessage( &msg ); DispatchMessage( &msg ); } } else { } } // destroy the window explicitly DestroyWindow( hWnd ); return msg.wParam; } // Window Procedure LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_CREATE: return 0; case WM_CLOSE: PostQuitMessage( 0 ); return 0; case WM_DESTROY: return 0; case WM_KEYDOWN: switch ( wParam ) { case VK_ESCAPE: PostQuitMessage(0); return 0; } return 0; default: return DefWindowProc( hWnd, message, wParam, lParam ); } }
Ah, je n'avais pas vu que c'�tait "menu name" et non pas menu tout court.
Normalement, �a devrait marcher en faisant ceci:
Code:wc.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);
Merci beaucoup.
Cela fonctionne !
Cela n'appara�t pas clairement dans les ouvrages ...
J'en �crirai un lorsque je serai au point ...