欢迎来到山村网

Windows mobile多国语言实现

2019-03-02 09:49:57浏览:989 来源:山村网   
核心摘要:  介绍一种多国语言的实现办法,这也是微软推荐的方式,打开windows mobile下的windows目录可以看到有很多以MUI为后缀名的文件

  介绍一种多国语言的实现办法,这也是微软推荐的方式,打开windows mobile下的windows目录可以看到有很多以MUI为后缀名的文件,例如shellres.dll.0804.mui、 shell.dll.0804.mui。。。。。。我们可以用eXeScope.exe或者resources hacker这样的文件查看器查看一下这些文件究竟是怎么一回事,不难发现文件里面都是一些资源ID和相对应的字符串。也许你就疑惑这是为什么呢?这些文件有什么作用呢?下面分解。

  MUI是Multilingual User Interface的缩写,意为多语言用户界面,主要是用来实现软件的国际化,也就是软件的多国语言版本的实现。其实一个mui文件也是一个DLL来的,但是这个dll有点特殊,不像我们以往的带来了那样包含了很多的函数体供dll外或者本身调用,而是只包含字符串资源,所以可以在vs下新建一个dll项目,不需要其他代码,只需要dll的入口点如下:

  #include "windows.h"

  /////////////////////////////////////////////////////////////////////////////

  // DLL Entry Point

  extern "C"

  BOOL WINAPI DllMain(HANDLE hInstance, DWORD dwReason, LPVOID lpReserved)

  {

  return TRUE;

  }

  除此以外,刚才也提到了,dll里只包含字符串资源,所以必须添加一个资源配置文件如***.rc,在里面添加相应的字符串资源信息,如下:

  IDR_HELLO_MENUBAR MENU DISCARDABLE

  BEGIN

  MENUITEM "Exit", PSP_DLGINDIRECT

  POPUP "Menu"

  BEGIN

  MENUITEM "Exit", PSP_DLGINDIRECT

  MENUITEM "Test", ID_MENU_TEST

  END

  END

  在这里要特别注意了,因为每一个mui也就是说每一个dll就代表一种语言,所以在资源配置文件里就是通过对每个字符串资源进行相应语言的更改达到多国语言的效果,例如你要做成简体中文版本,你就必须在重新建一个dll,同样建立一个资源配置文件,但是得把刚才上面的这段资源配置脚本代码改成如下:

  IDR_HELLO_MENUBAR MENU DISCARDABLE

  BEGIN

  MENUITEM "退出", PSP_DLGINDIRECT

  POPUP "菜单"

  BEGIN

  MENUITEM "退出", PSP_DLGINDIRECT

  MENUITEM "测试", ID_MENU_TEST

  END

  END

  然后可以通过把定义资源ID的resources.h这个文件共享出来,让多个mui文件和应用程序用同一个资源ID。

  同时你还需要在dll项目添加一个导出文件如***.def,其实不需要导出函数名如下就可以:

  LIBRARY "hello.exe.0804.mui"

  EXPORTS

  也许你还会问,那应用程序怎么去通过匹配相应的mui文件来进行语言的定位?请看。

  刚才说到windows目录下有shellres.dll.0804.mui,其实mui文件的命名有一定的规则可循,可不是乱来的,首先 shellres.dll表明这个mui文件是专门用于shellres.dll多国语言版本,再例如hello.exe.0804.mui这个表示是专用于hello.exe。然后0804这又是表示什么意思呢,这是微软定义的语言ID是一个十六进制数,例如简体中文的ID就是0x0804,而美国英语 ID则是0409。其他国家的语言ID可以查看sdk中的Language Identifiers and Locales。

  那系统怎么去实现识别应用使用哪一个mui文件呢?在系统注册表中HKEY_CURRENT_USERControlPanel DesktopMultiUILanguageId记录了系统的默认语言ID,所以系统会根据这个默认ID进行自动配置,而不需程序员再使用代码控制。但是有一点要注意的是mui文件和应用程序要放在同一个目录下。在使用vs生成mui文件时,可以通过对项目属性进行设置,让vs直接生成mui文件,在dll项目中”项目属性”----“链接器”----“常规”中的”输出文件” $(OutDir)/your_mui_name,只需要修改your_mui_name为你相应的mui文件名就可以。

  使用mui来实现多国语言版本的实现,不需要更改应用程序的代码,只需要直接添加或删除独立的mui文件,mui文件和应用程序是高分离的,方便管理。

(责任编辑:豆豆)
下一篇:

各种SmartPhone上的跨平台开源框架的总结

上一篇:

Windows Mobile 6开发环境的配置过程

  • 信息二维码

    手机看新闻

  • 分享到
打赏
免责声明
• 
本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们 xfptx@outlook.com