MFC 对话框中动态创建N级菜单以及响应事件
2014-05-16 12:28
731 查看
创建一个基于对话框的工程,工程名为CreateMenu
为该对话框增加一个文件菜单项和测试菜单项,如下图所示
测试菜单项至少要有一个子菜单项
在对话框属性中关联该菜单
在resource.h中增加一个ID_TESTMENU宏
#defineID_TESTMENU5000
在对话框中添加一个Button按钮,建立消息映射,编辑代码如下
[code]{
[/code]
响应单击菜单的事件
添加OnCommand的消息映射,编辑代码如下
[code]{
[/code]
运行结果:
源码下载
为该对话框增加一个文件菜单项和测试菜单项,如下图所示
测试菜单项至少要有一个子菜单项
在对话框属性中关联该菜单
在resource.h中增加一个ID_TESTMENU宏
#defineID_TESTMENU5000
在对话框中添加一个Button按钮,建立消息映射,编辑代码如下
voidCCreateMenuDlg::OnButton1()
[code]{
//TODO:Addyourcontrolnotificationhandlercodehere
charbuf[2];
//获取顶级菜单
CMenu*pMenu=GetMenu();
//获取1级菜单
CMenu*pFileMenu=pMenu->GetSubMenu(0);
CMenu*pTestMenu=pMenu->GetSubMenu(1);
//添加2级菜单
if(pTestMenu->GetSafeHmenu()==NULL)
return;
//添加一个2级弹出菜单,将"文件"菜单项作为该菜单的子菜单
pTestMenu->AppendMenu(MF_POPUP,(UINT)pFileMenu->m_hMenu,"文件");
//添加一个2级弹出菜单,该菜单的子菜单为空
pTestMenu->AppendMenu(MF_POPUP,(UINT)pTestMenu->m_hMenu,"测试");
//添加10个2级普通菜单
for(UINTm_ID=1;m_ID<=10;m_ID++)
{
itoa(m_ID,buf,10);
pTestMenu->AppendMenu(MF_SEPARATOR);
pTestMenu->AppendMenu(
MF_STRING,m_ID+ID_TESTMENU,"2级菜单"+CString(buf));
}
//添加n级菜单
CMenu*pnMenu=pTestMenu->GetSubMenu(2);
pnMenu->AppendMenu(MF_POPUP,(UINT)pnMenu->m_hMenu,"3级菜单");
for(inti=0;i<5;i++)
{
pnMenu=pnMenu->GetSubMenu(0);
if(pnMenu==NULL)return;
itoa(i+4,buf,10);
pnMenu->AppendMenu(
MF_POPUP,(UINT)pnMenu->m_hMenu,buf+CString("级菜单"));
}
pnMenu->GetSubMenu(0)->AppendMenu(
MF_STRING,ID_TESTMENU,"9级菜单");
}
[/code]
响应单击菜单的事件
添加OnCommand的消息映射,编辑代码如下
BOOLCCreateMenuDlg::OnCommand(WPARAMwParam,LPARAMlParam)
[code]{
//TODO:Addyourspecializedcodehereand/orcallthebaseclass
UINTuMsg=LOWORD(wParam);
charbuf[2];
if(uMsg==ID_TESTMENU)
{
MessageBox("HELLO!");
}
for(UINTi=1;i<=10;i++)
{
if(uMsg==ID_TESTMENU+i)
{
itoa(i,buf,10);
MessageBox("HELLO!"+CString(buf));
}
}
returnCDialog::OnCommand(wParam,lParam);
}
[/code]
运行结果:
相关文章推荐
- 【原创】MFC中动态创建N级菜单以及响应事件
- MFC中动态创建N级菜单以及响应事件——续——动态添加菜单/菜单项、子菜单、右键菜单
- MFC中动态创建N级菜单以及响应事件
- MFC中动态创建N级菜单以及响应事件
- 在MFC中动态创建控件以及事件响应
- 在MFC中动态创建控件以及事件响应
- 在MFC中动态创建控件以及事件响应
- 在MFC中动态创建控件以及事件响应
- 在MFC中动态创建控件以及事件响应
- 在MFC中动态创建控件以及事件响应
- 在MFC中动态创建控件以及事件响应
- MFC中动态创建控件以及事件响应
- 在MFC中动态创建控件以及事件响应(静态控件)
- (转)在MFC中动态创建控件以及事件响应
- 在MFC中动态创建控件以及事件响应
- 在MFC中动态创建控件以及事件响应
- MFC中动态创建控件以及事件响应实现方法
- 在MFC中动态创建控件以及事件响应
- 对话框和MDI中动态创建按钮CButton,并响应事件
- MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应