Windows Mobile下使用Native C++(WTL, MFC, Win32)开发,如何为对话框加入菜单
2009-11-05 07:14
609 查看
背景
不像.NET Compact Framework, 使用Native C++开发开发对话框程序默认是没有菜单的,需要手工增加。本文讲述如何为对话框程序加入菜单。.NET Compact Framework
使用.NET Compact Framework的程序,默认增加菜单项(mainMenu1),只要编辑菜单显示,增加处理事件就能操控菜单了,非常方便。Native C++
使用Native C++进行开发,情况就大相径庭了。新增的对话框默认是没有菜单的,需要手工增加菜单支持,下面以一个WTL对话框程序作为例子讲述如何加入菜单支持。步骤如下:1.在资源文件增加菜单。
2.根据需求编辑菜单。
3.在对话框生成菜单。
修改OnInitDialog()函数来生成菜单。
LRESULT CConfigDialog::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { //AtlCreateEmptyMenuBar(m_hWnd); SHMENUBARINFO mbi; ZeroMemory(&mbi, sizeof(SHMENUBARINFO)); mbi.cbSize = sizeof(SHMENUBARINFO); mbi.hwndParent = m_hWnd; mbi.nToolBarId = IDR_MENU_CONFIG; //Menu resource ID mbi.hInstRes = ModuleHelper::GetResourceInstance(); //GetModuleInstance(); //similar as ::AfxGetInstanceHandle(); in MFC mbi.dwFlags |= SHCMBF_HMENU; if(!SHCreateMenuBar(&mbi)) { MessageBox(_T("Fail to create menu.")); } return bHandled = FALSE; }
4.加入菜单处理事件
在CConfigDialog类的加入事件处理映射。ID_OK和ID_CANCEL分别为菜单项的ID。
BEGIN_MSG_MAP(CConfigDialog) COMMAND_ID_HANDLER(ID_OK, OnOk) COMMAND_ID_HANDLER(ID_CANCEL, OnCancel) END_MSG_MAP() LRESULT OnOk(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/); LRESULT OnCancel(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
在cpp加入处理函数。
LRESULT CConfigDialog::OnOk(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { MessageBox(_T("OK")); return 0; } LRESULT CConfigDialog::OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { MessageBox(_T("Cancel")); return 0; }
完成了,如下图。
下面点击OK。
相关文章推荐
- 在Windows Mobile下使用WTL进行Native C++开发,如何显示等待图标
- 如何在win32控制台加入MFC对话框(Adding Windows To Your Console Application)
- MFC开发IM-第十六篇、如何使用其他对话框的变量
- 在Windows Mobile和Wince(Windows Embedded CE)下进行WTL开发,如何加入超链接(HyperLink)
- 在Windows Mobile和Wince(Windows Embedded CE)下如何使用.NET Compact Framework开发进程管理程序
- (GDI+) 如何在 MFC 或 Win32 应用程序中使用GDI+
- WTL Windows Mobile 编程: 给对话框添加左右菜单
- 图形的绘制,如何使用自定义画笔(颜色,线宽,线形)。如何为程序中添加选项菜单和选项设置对话框,如何使用标准颜色对话框,如何使用字体对话框,在选项对话框中实现预览功能。实现选项对话框和窗口类中的数据交换。如何改变对话框和控件的背景色,如何改变控件的文本颜色,
- VC/MFC如何使用CreateEx()创建自己的对话框资源
- 跟我一起玩Win32开发(18):使用对话框的两个技巧
- Win32平台各种主流开发框架(MFC、ATL、WTL、VCL等)
- Windows Mobile下使用Native C++开发日志类
- VC6开发对话框应用程序,菜单快捷按键不能使用
- MFC对话框如何使用工具栏并修改工具栏的背景颜色与自绘对话框统一
- duilib篇 如何在WTL和MFC中使用duilib及如何静态使用duilib库!(初级讲解 附带一个Demo)
- win32和MFC下如何使用控制台窗口
- WTL Windows Mobile 编程: 给对话框添加左右菜单
- 使用Eclipse RCP进行桌面程序开发(二):菜单、工具栏和对话框
- 使用Eclipse RCP进行桌面程序开发(二):菜单、工具栏和对话框
- 基于对话框的MFC程序加入菜单资源