#include "resource.h"这个可以通过资源文件添加菜单资源。 添加好后,必须在资源文件中进行编译执行,否则可能会出现找不到菜单句柄ID,或者即使能找到句柄ID,但是在窗口执行后, 你会开心的发现只有菜单,却死活都点不出菜单项(作者本人眼泪崩溃过) #include<windows.h> #include <tchar.h> #include<stdio.h> HINSTANCE hinst; #include "resource.h" int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int); LRESULT CALLBACK MainWinProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX wcex;//父窗口创建 HWND hwnd; MSG msg; BOOL fGotMessage; hinst = hInstance; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = MainWinProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION); wcex.hCursor = LoadCursor(NULL, IDC_CROSS); wcex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wcex.lpszMenuName = (char*) IDR_MENU1;//菜单初始化定义//使用(char*)目的是 //将菜单句柄ID号由数字转成字符形式 wcex.lpszClassName = "MainWClass"; wcex.hIconSm = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(5), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CXSMICON), LR_DEFAULTCOLOR); WNDCLASSEX wce;//子窗口注册 wce.cbSize = sizeof(WNDCLASSEX); wce.style = CS_HREDRAW | CS_VREDRAW; wce.lpfnWndProc = DefWindowProc; wce.cbClsExtra = 0; wce.cbWndExtra = 0; wce.hInstance = hInstance; wce.hIcon = LoadIcon(NULL, IDI_APPLICATION); wce.hCursor = LoadCursor(NULL, IDC_CROSS); wce.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wce.lpszMenuName = NULL; wce.lpszClassName = "Child"; wce.hIconSm = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(5), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CXSMICON), LR_DEFAULTCOLOR); if (!RegisterClassEx(&wcex)) { return 1; } if (!RegisterClassEx(&wce)) { return 1; } hwnd = CreateWindow("MainWClass", "window", WS_OVERLAPPEDWINDOW, 0, 0, 1000, 1000, NULL, NULL, hInstance, NULL); //父窗口设计 HWND C1 = CreateWindow("Child", "c1", WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW, 100, 20, 30, 70, hwnd, NULL, hInstance, NULL); //凡是C开头的都是子窗口创建 HWND C2 = CreateWindow("Child", "c1", WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW, 400, 20, 30, 70, hwnd, NULL, hInstance, NULL); HWND C13 = CreateWindow("Child", "c1", WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW, 600, 20, 30, 70, hwnd, NULL, hInstance, NULL); if (!hwnd) { return 1; } ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); while ((fGotMessage = GetMessage(&msg, NULL, 0, 0)) != 0 && fGotMessage != -1) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } MSG unse; LRESULT CALLBACK MainWinProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_COMMAND://菜单信息处理函数,定义点击目的 { switch (LOWORD(wParam)) { case ID_40001: MessageBox(hwnd, "信息", "我被点击了", MB_OK); break; default: return DefWindowProc(hwnd, uMsg, wParam, lParam); } break; return 0; } case WM_DESTROY://窗口处理程序 PostQuitMessage(0); return 0; case WM_SYSCOMMAND: if (wParam == SC_CLOSE) { int nRet = MessageBox(hwnd, "是否关闭", "infe", MB_YESNO); if (nRet == IDYES) { DestroyWindow(hwnd); } else { return 0; } break; } default: return DefWindowProc(hwnd, uMsg, wParam, lParam); return 0; } }
06-02
1344
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)