我要实现一个多语言的小系统,只有几个控件上的文本需要改变语言,所以不想用DLL方式去做语言包,觉得开支比较大。
我发现MFC中Insert->Resource Copy选项可以复制已有的StringTable(P.R.C.)的内容,
把复制的改为StringTable(English (U.S.)),并把其中的项的值由中文改为英文,两个StringTable的项的ID是一样的,但StringTable本身没有ID,想请教的是,我可不可以在程序中做某种判断,在LoadString载入同一String的ID时,根据需要读到不同的StringTable,实现多语言?如果不能,那Resource Copy这个功能是干什么用呢?小弟新手,谢谢各位大哥赐教。

解决方案 »

  1.   

    StringTable是有id的,通过id来区分就可以了
      

  2.   

    谢谢捧场,但是你说的StringTable有ID,我没找到啊,好像是整个Resource有一个ID叫IDR_MAINFRAME,系统开始自动载入这个ID,但是StringTable本身我找不到可以区分的ID啊,可以告诉我吗?谢谢了
      

  3.   

    只要你能想到就能实现在程序初始化的时候,例如:C**App::InitInstance()里面加上: 
    SetThreadLocale(MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_DEFAULT), SORT_DEFAULT));//调用中文StringTabel 
    SetThreadLocale(MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT), SORT_DEFAULT));//英文 类推...
      

  4.   

    楼上的大哥你真帅呆了,理解了我的意思;我试了下,果然可行,谢谢了; 
    但还有个问题,我在VC上实验是可用,但我的系统是在MFC上开发的,没有SetThreadLocale这个函数, 
    能告诉我有功能类似的函数吗?谢谢了
      

  5.   

    SetThreadLocale在MFC的App里面用不可以吗?App类不也有InitInstance的?