大家平常用到的软件,一般都支持多语言,至少支持两种,中文和英文,实现这样的功能有许多方法,不过在windows mobile下最简单的方法是用纯资源DLL来支持多语言。什么是纯资源DLL?就是DLL中主要只有一些资源,并且不提供DLL入口点。下面是如何创建一个原程序相关的纯资源的DLL。
首先是新建一个普通的智能设备DLL工程,然后在工程属性-》链接器-》高级-》无入口点,选择是(/NOENTRY),然后将原程序所有的资源文件拷贝至这个工程下,然后添加进工程,然后修改资源里的所有内容,要做什么语言资源就改成什么语言内容,然后编译,OK,一个纯资源的DLL做成了。
下面是如何在原程序中调用这个DLL,首先你的程序已经有了一个缺省的资源了,所以在程序的入口处,你可以通过对当前系统语言判断来决定调用哪个资源,下面的代码,原程序时内置中文资源,然后DLL是英文资源。
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
int langID = GetSystemDefaultUILanguage();
if( 0x0804 == langID )//中文
{
globalVar.hRcInst = hInstance;//设定一个全局的instance 来保存winmain传入的instance 。
}
else if( 0x0409 == langID )//英文
{
globalVar.hRcInst = LoadLibrary(_T("EPatch.dll"));//获取到英文纯资源DLL的instance 。
}
}
好了,这样就完成了DLL的载入,下面需要用到资源的时候,就根据globalVar.hRcInst 去获得对应资源了,这个方法的关键是,你的程序中所有需要用到字符串的地方,全部写在资源里,然后调用,这样可以保证完美语言支持。
浙公网安备 33010602011771号