WM6的WIN32程序创建菜单,利用资源文件

本文介绍在WM6环境下使用SHCreateMenuBar()创建菜单的方法,并通过SHInitDialog()实现窗口全屏显示及OK按钮的显示控制。文章详细解释了如何在WM_CREATE消息中绘制菜单,并展示了具体的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在WM6里面编写的WIN32程序,资源文件的菜单添加方法。

可以用SHCreateMenuBar()来进行添加,其中须要设置资源句柄,父窗口句柄,和要添加的菜单ID

而用SHInitDialog()可以设置窗口全屏显示,以及是否显示右下角的OK按钮。

如果要按右下角的OK按键退出的话,需要在WM_COMMAND里面对

LOWORD(wParam)==IDOK时,退出程序。

在WM_CREATE里面调用下面的窗口,画菜单即可。

BOOL DrawMenu(HWND hwnd) { SHMENUBARINFO shmbi; ZeroMemory(&shmbi, sizeof(shmbi)); shmbi.cbSize = sizeof(shmbi); shmbi.dwFlags = SHCMBF_HMENU; shmbi.nToolBarId = IDR_MENU1; // The menu id shmbi.hwndParent = hwnd; // The dialog handle shmbi.hInstRes = g_hInstance; // The resource handle if (!SHCreateMenuBar(&shmbi)) { TCHAR szBuf[128]; swprintf(szBuf, TEXT("SHCreateMenuBar :%d"), GetLastError()); MessageBox(NULL, szBuf, TEXT("Error"), MB_OK | MB_ICONERROR); return FALSE; } SHINITDLGINFO shidi; shidi.hDlg = hwnd; shidi.dwFlags = SHIDIF_SIZEDLGFULLSCREEN; shidi.dwMask = SHIDIM_FLAGS; if (!SHInitDialog(&shidi)) { TCHAR szBuf[128]; swprintf(szBuf, TEXT("SHInitDialog :%d"), GetLastError()); MessageBox(NULL, szBuf, TEXT("Error"), MB_OK | MB_ICONERROR); return FALSE; } SHDoneButton(hwnd, SHDB_SHOW); // Display the OK button on right; }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值