正文

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菜单的好处。
也可以直接添加消息映射代码来处理。

阅读(5865) | 评论(3)


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

评论

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