如何在WM平台下, 给创建的Dialog添加菜单, 以下这段代码添加在CFileAssociationDlg::OnInitDialog()方法内, CFileAssociationDlg是你要创建的对话框.
// 创建SHMENUBARINFO结构体
SHMENUBARINFO mbi;
// 初始化, 每个字节都置为0
ZeroMemory(&mbi, sizeof(SHMENUBARINFO));
// 设置结构体SHMENUBARINFO的长度
mbi.cbSize = sizeof(SHMENUBARINFO);
// 设置控制菜单的窗口,即CFileAssociationDlg对话框
mbi.hwndParent = this->m_hWnd;
// IDR_HELLO_MENU为资源文件中的Menu ID, 需要创建该菜单
mbi.nToolBarId = IDR_HELLO_MENU;
// 应用程序的实例
mbi.hInstRes = AfxGetInstanceHandle();
// Bitmap identifier used to load the bitmap resource for buttons with images from the instance specified by hInstRes.
mbi.nBmpId = 0;
// Number of images in the bitmap referred to by nBmpId.
mbi.cBmpImages = 0;
// 设置菜单属性, 这里需要注意的是SHCMBF_HMENU , SHCMBF_HIDESIPBUTTON属性, 前者必须要有, 否则菜单会创建失败, 后者只应用于Mobile
// 平台, 用来隐藏输入法菜单
mbi.dwFlags = SHCMBF_COLORBK | SHCMBF_HMENU | SHCMBF_HIDESIPBUTTON;
// 创建菜单
if(SHCreateMenuBar(&mbi))
{
}
else
{
::DestroyWindow(m_hWnd);
PostQuitMessage(1);
return(-1);
}