正文

WinCE6.0下CMenu创建菜单及其子菜单的实现2010-07-29 21:36:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/ddtme/51546.html

分享到:

 (一)、实现Popup菜单。 1、定义宏定义,也就是菜单项 #define IDM_MENU0 WM_USER+200 #define IDM_MENU1 WM_USER+201 #define IDM_MENU2 WM_USER+202 #define IDM_MENU3 WM_USER+203 #define IDM_ITEM0 WM_USER+210 #define IDM_ITEM1 WM_USER+211 #define IDM_ITEM2 WM_USER+212 #define IDM_ITEM3 WM_USER+213 #define IDM_ITEM4 WM_USER+214 #define IDM_ITEM5 WM_USER+215 #define IDM_ITEM6 WM_USER+216 #define IDM_ITEM7 WM_USER+217 #define IDM_ITEM8 WM_USER+218 #define IDM_ITEM9 WM_USER+219 #define IDM_ITEM10 WM_USER+220 #define IDM_ITEM11 WM_USER+221 #define IDM_ITEM12 WM_USER+222 #define IDM_ITEM13 WM_USER+223 #define IDM_ITEM14 WM_USER+224 #define IDM_ITEM15 WM_USER+225 #define IDM_ITEM16 WM_USER+226 2、创建CMenu对象 在头文件中定义,CMenu *m_pMenu; 在OnInitDialog中添加实现  m_pMenu = new CMenu();  m_pMenu->LoadMenu(IDR_WinGuoSearch); #if 0  m_pMenu2 = new CMenu();  m_pMenu2->LoadMenu(IDR_WinGuoSearch);  m_pMenu->AppendMenu(MF_BYPOSITION|MF_POPUP|MF_STRING,(UINT)m_pMenu3->GetSubMenu(0)->m_hMenu,L"测试子菜单");  m_pMenu->AppendMenu(MF_STRING,IDM_ITEM0,L"升级");  m_pMenu->AppendMenu(MF_SEPARATOR,IDM_ITEM3,L"");  m_pMenu3 = new CMenu();  m_pMenu3->CreatePopupMenu();  //第二个参数是菜单的句柄HMENU  m_pMenu3->AppendMenu(MF_STRING,IDM_ITEM6,L"每周更新");  m_pMenu3->AppendMenu(MF_STRING,IDM_ITEM7,L"没两周更新");  m_pMenu3->AppendMenu(MF_STRING,IDM_ITEM8,L"每月更新");  m_pMenu3->AppendMenu(MF_STRING,IDM_ITEM9,L"暂不更新");  m_pMenu->AppendMenu(MF_BYPOSITION|MF_POPUP|MF_STRING,(UINT)m_pMenu3->m_hMenu,L"更新设置");  m_pMenu->AppendMenu(MF_STRING,IDM_ITEM2,L"提醒设置");  m_pMenu->AppendMenu(MF_SEPARATOR,IDM_ITEM3,L"");  m_pMenu->AppendMenu(MF_STRING,IDM_ITEM4,L"帮助");  m_pMenu->AppendMenu(MF_STRING,IDM_ITEM5,L"关于"); #endif 3、添加消息映射函数,实现菜单项的事件处理。  ON_COMMAND(IDM_ITEM0, &CWinGuoSearchDlg::OnUpdateWinGuo)   4、显示。     //显示菜单     m_pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_BOTTOMALIGN,0,230+25,this,NULL); 效果图如下: 图为点击选项按钮(这个是通过自己绘图,不是系统自带的菜单栏)的事件,在事件里面触发的。是为模拟系统自带的菜单项而做的。效果还不错哦,和系统的一摸一样。   (二)利用资源菜单创建Popup菜单的方法。 说明:资源菜单中有菜单栏,菜单栏是主菜单项,每个菜单项下面的菜单都属于Popup菜单,直接获取子菜单就可以当作Popup菜单使用。   1、载入资源菜单  m_pMenu = new CMenu();  m_pMenu->LoadMenu(IDR_WinGuoSearch); 2、获取子菜单   CMenu *pMenu =  m_pMenu->GetSubMenu(0);   3、显示菜单       pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_BOTTOMALIGN,0,230+25,this,NULL);   4、菜单的事件处理:资源菜单的事件处理可以直接在资源管理器中添加。 这是这类Popup菜单的好处。 也可以直接添加消息映射代码来处理。

阅读(6438) | 评论(3)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册