代码改变世界

[转载]window mobile 添加菜单(mfc)

2010-12-09 17:20  zlty  阅读(302)  评论(0编辑  收藏  举报

转载地址http://hi.baidu.com/whyspai/blog/item/c62814fa0d427b9158ee902e.html

方法一:

该方法从创建单文档工程中copy过来。

1、 MyTestDlg.h文件中引入afxext.h头文件

#include <afxext.h>

2、 在资源中创建菜单资源

3、 声明CCommandBar变量IDR_MENU_TEST

CCommandBar m_wndCommandBar;

4、 MyTestDlg.cpp文件CMyTestDlg::OnInitDialog()方法内添加如下代码:

if (!m_wndCommandBar.Create(this) ||

              !m_wndCommandBar.InsertMenuBar(IDR_MENU_TEST) ||

              !m_wndCommandBar.AddAdornments(dwAdornmentFlags))

       {
              TRACE0("未能创建CommandBar\n");
              return -1;      // 未能创建

       }

 

       m_wndCommandBar.SetBarStyle(m_wndCommandBar.GetBarStyle() | CBRS_SIZE_FIXED);

 

有一个问题是我不知道如何屏蔽掉Windows Mobile平台中的输入法菜单(方法二可以解决)。

 

方法二:

以下这段代码添加在CMyTestDlg::OnInitDialog()方法内, CMyTestDlg是你要创建的对话框.

// 创建SHMENUBARINFO结构体
SHMENUBARINFO   m_menu_bar; 

// 初始化, 每个字节都置为0
ZeroMemory(&m_menu_bar,   sizeof(SHMENUBARINFO));   

// 设置结构体SHMENUBARINFO的长度
m_menu_bar.cbSize   =   sizeof(SHMENUBARINFO);   

// 设置控制菜单的窗口,即CMyTestDlg对话框
m_menu_bar.hwndParent   =   this->m_hWnd;   

// IDR_MENU_TEST为资源文件中的Menu ID, 需要创建该菜单
m_menu_bar.nToolBarId   =   IDR_MENU_TEST;   

// 应用程序的实例
m_menu_bar.hInstRes   =   AfxGetInstanceHandle();   

// Bitmap identifier used to load the bitmap resource for buttons with images from the instance specified by hInstRes. 
m_menu_bar.nBmpId = 0;

// Number of images in the bitmap referred to by nBmpId. 
m_menu_bar.cBmpImages = 0; 

// 设置菜单属性, 这里需要注意SHCMBF_HMENU属性必须要有, 否则菜单会创建失败, SHCMBF_HIDESIPBUTTON属性只应用于Mobile平台, 用来隐藏输入法菜单
m_menu_bar.dwFlags = SHCMBF_COLORBK | SHCMBF_HMENU | SHCMBF_HIDESIPBUTTON;

// 创建菜单
if(!SHCreateMenuBar(&m_menu_bar))
{
   ::DestroyWindow(m_hWnd);
   PostQuitMessage(1);
   return(-1);
}