最近开发win32时,使用菜单资源,菜单的资源是定义在资源的文件中,当把一个菜单资源定义好后,整个菜单资源会有一个Id,比如IDR_001, 如何将该菜单资源挂载到windows的窗口程序呢?
有三种方式:
1 注册窗口类时,设置菜单
WNDCLASS wc = { 0 };
...
wc.lpszMenuName = (char *)IDR_001;//这里就是菜单资源的id,将其赋值给wc.lpszMenuName实现挂载菜单
...
2 创建窗口传参时,设置菜单
WNDCLASS wc = { 0 };
...
HMENU hMenu = LoadMenu(hIns, (char*)IDR_MENU1);
HWND hWnd = CreateWindowEx(0, "Main", "window", WS_OVERLAPPEDWINDOW, 100, 100, 500, 500, NULL,
//hMenu就是菜单的窗口句柄,通过给CreateWindowEx传入hMenu实现挂载菜单
hMenu , hIns, (LPVOID*)pszText);
...
3 windows窗口函数捕获WM_CREATE消息,通过SetMenu函数挂载菜单
...
HINSTANCE g_hInstance = 0;//保存整窗口程序的句柄
//捕获WM_CREATE消息窗口处理函数
void OnCreate(HWND hWnd) {
HMENU hMenu = LoadMenu(g_hInstance, (char*)IDR_MENU1);
SetMenu(hWnd, hMenu);//hMenu就是菜单的窗口句柄,通过给SetMenu传入hMenu实现挂载菜单
}
...
以上是三种窗口挂载菜单资源的三种方式,希望对你有所帮助。
评论区