目 录CONTENT

文章目录

windows窗口程序绑定菜单资源的三种方式

醉酒的行者
2025-04-23 / 0 评论 / 0 点赞 / 10 阅读 / 0 字

最近开发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实现挂载菜单
}
...

以上是三种窗口挂载菜单资源的三种方式,希望对你有所帮助。

0

评论区