动态修改smartphone中菜单项

定义菜单IDR_MAINFRAME,两个子菜单IDM_ACTION,IDM_MENU

IDR_MAINMENU RCDATA
BEGIN
   IDR_POPUP,
   2,
   I_IMAGENONE, IDM_ACTION, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, IDS_ACTION, 0, NOMENU,
   I_IMAGENONE, IDM_MENU, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_MENU, 0, 0,
END

1.显示/不显示该菜单项

以下使得IDM_ACTION不显示

  TBBUTTONINFO tbbi; 
  tbbi.cbSize = sizeof(tbbi); 
  tbbi.dwMask = TBIF_STATE; 
  tbbi.fsState = TBSTATE_INDETERMINATE; 
  SendMessage (SHFindMenuBar(hDlg), TB_SETBUTTONINFO, IDM_ACTION, (LPARAM)&tbbi); 
  如果要显亮该菜单项改变 tbbi.fsState = TBSTATE_ENABLED 即可 
  2.改变菜单项文本 

以下使得菜单名为Tools

TBBUTTONINFO tbbi;

tbbi.cbSize = sizeof(tbbi);

tbbi.dwMask = TBIF_TEXT;

tbbi.pszText = _T("Tools");

SendMessage (SHFindMenuBar(hDlg), TB_SETBUTTONINFO, IDM_MENU, (LPARAM)&tbbi);

同样你也可以从菜单获得文本 

TBBUTTONINFO tbbi;

TCHAR szBuf[255];

tbbi.cbSize = sizeof(tbbi);

tbbi.dwMask = TBIF_TEXT;

tbbi.pszText = szBuf;

tbbi.cchText = sizeof(szBuf)/sizeof(szBuf[0]);

SendMessage (SHFindMenuBar(hDlg), TB_GETBUTTONINFO, IDM_MENU, (LPARAM)&tbbi);

3.改变菜单ID

改变菜单ID_ACTION为0x1234

TBBUTTONINFO tbbi;

tbbi.cbSize = sizeof(tbbi);

tbbi.dwMask = TBIF_COMMAND;

tbbi.idCommand = 0x1234;

SendMessage (SHFindMenuBar(hDlg), TB_SETBUTTONINFO, IDM_ACTION, (LPARAM)&tbbi);

4。动态添加/移除菜单项

You may also want to change popup menu associated with menu bar item (add/remove items, enable/disable them etc.).

 HMENU of this popup menu is obtained through TBBUTTONINFO::lParam member variable:

TBBUTTONINFO tbbi;

tbbi.cbSize = sizeof(tbbi);

tbbi.dwMask = TBIF_LPARAM;

SendMessage (SHFindMenuBar(hDlg), TB_GETBUTTONINFO, IDM_MENU, (LPARAM)&tbbi);

HMENU hPopupMenu = (HMENU)tbbi.lParam;

Note that you can not change popup menu handle associated with menu bar item or remove it completely by setting item style to TBSTYLE_BUTTON.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值