<2024年3月>
252627282912
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

  • 随笔 - 4
  • 文章 - 10
  • 评论 - 1
  • 引用 - 0

常用链接

留言簿

随笔分类

随笔档案

文章分类

文章档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

动态更改菜单之ModifyMenu 收藏

动态更改菜单之ModifyMenu 收藏
        多语言支持,已经是桌面应用软件的发展趋势。用句流行的词就是“国际化”。除了语言翻译的工作外,比较重要的就是字符的编码问题。不过这些问题的讨论已经铺天盖地了,我就不想再多说细节了。我在此只记录一下我的软件“国际化”中的一个技术小片段:用ModifyMenu来动态加载文本信息,实现菜单内容的本地化功能。

        ModifyMenu函数原型:

/**//** MFC中的函数原型 */

/**//**
  * @param nPosition 该菜单项所在的位置索引,以0为第一个
  * @param nFlags 标志位,MF_BYCOMMAND、MF_BYPOSITION、MF_STRING,之间可以联合使用
  * @param nIDNewItem 资源ID
  * @param lpszNewItem 菜单内容文本
  */
BOOL ModifyMenu(
   UINT nPosition,
   UINT nFlags,
   UINT_PTR nIDNewItem = 0,
   LPCTSTR lpszNewItem = NULL
);

/**//**
  * @param nPosition 该菜单项所在的位置索引,以0为第一个
  * @param nFlags 标志位,MF_BYCOMMAND、MF_BYPOSITION、MF_STRING,之间可以联合使用
  * @param nIDNewItem 资源ID
  * @param pBmp  图片资源
  */
BOOL ModifyMenu(
   UINT nPosition,
   UINT nFlags,
   UINT_PTR nIDNewItem,
   const CBitmap* pBmp
);

详细说明:   MF_BYPOSITION主要用于通过偏移位置来标注需要操作的菜单项;MF_BYCOMMAND主要用于命令ID的情况;MF_STRING主要用于POPUP的菜单项更改文本内容。其中特别注意,资源ID必须不能被修改,否则原来定义的响应事件将失去作用。

        下面是我应用的一个代码片段:

menu.LoadMenu(IDR_MENU_BLANK); //装载自定义的右键菜单
menu.GetSubMenu(0)->ModifyMenu(0, MF_BYPOSITION | MF_STRING, ID_VIEW, LoadStringEx(ID_VIEW));
menu.ModifyMenu(ID_REFRESH, MF_BYCOMMAND, ID_REFRESH, LoadStringEx(ID_REFRESH));
menu.ModifyMenu(ID_PASTE, MF_BYCOMMAND, ID_PASTE, LoadStringEx(ID_PASTE));
menu.GetSubMenu(0)->ModifyMenu(6, MF_BYPOSITION | MF_STRING, ID_CREATE, LoadStringEx(ID_CREATE));
menu.ModifyMenu(ID_32787, MF_BYCOMMAND, ID_32787, LoadStringEx(ID_32787));
menu.ModifyMenu(ID_32788, MF_BYCOMMAND, ID_32788, LoadStringEx(ID_32788));
menu.ModifyMenu(ID_32790, MF_BYCOMMAND, ID_32790, LoadStringEx(ID_32790));
menu.ModifyMenu(ID_32791, MF_BYCOMMAND, ID_32791, LoadStringEx(ID_32791));

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bengold1979/archive/2008/05/05/2395786.aspx

posted on 2009-10-12 21:20 ally-zheng 阅读(2213) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理