随笔 - 2, 文章 - 73, 评论 - 60, 引用 - 0
数据加载中……

[Windows Mobile]windows mobile 5.0 下创建/隐藏菜单

在开发时经常要创建菜单,并且动态显示和隐藏菜单或者是某个子菜单。以下就是实现的方法:

1.创建并显示菜单
  SHMENUBARINFO mbi;
  ZeroMemory(&mbi, sizeof(SHMENUBARINFO));
  mbi.cbSize=sizeof(SHMENUBARINFO);
  mbi.hwndParent=m_hWnd;
  mbi.hInstRes=::AfxGetInstanceHandle();
  mbi.dwFlags=SHCMBF_HMENU|SHCMBF_HIDESIPBUTTON;//隐藏SIP
  mbi.nToolBarId=IDR_MYMENU;
  SHCreateMenuBar(&mbi);

2.隐藏菜单
  HWND hwnd=::SHFindMenuBar(m_hWnd);
  if(hwnd!=NULL)
  ::ShowWindow(hwnd,SW_HIDE);

3.隐藏某个子菜单项
   TBBUTTONINFO tbbi = {0};
   tbbi.cbSize = sizeof(TBBUTTONINFO);
   tbbi.dwMask = TBIF_LPARAM | TBIF_BYINDEX;               
   ::SendMessageW(mbi.hwndMB, TB_GETBUTTONINFO,0, (LPARAM)&tbbi); //0为SK1,1为SK2(即左右软键)
   g_hMenu = (HMENU)tbbi.lParam;//g_hMenu为全局变量,这样就可以在任何地方隐藏子菜单了

  EnableMenuItem(g_Menu,ID_TEST,MF_GRAYED);//隐藏子菜单
  //显示子菜单
  EnableMenuItem(g_Menu,ID_TEST,MF_ENABLED);

  在使用语言Module时,要注意库中的ID与应用程序中定义的ID是否一致。

4.使某个SK(Soft Key)不可用
::SHEnableSoftkey(mbi.hwndMB,0,TRUE,FALSE);

posted on 2008-07-02 17:09 郭天文 阅读(1218) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理