简述下使用资源StringTable实现MFC多语言的坑。
SetThreadLocale会影响LoadString()的语言选择,所以不能用LoadString(),一旦你界面为中文,但是Windows的地区设置为英文就显示???了。
另外SetUIThread也不能用,微软说了,不能用这2个函数来设置用户语言,所以网上一些文章是错的。
比如这个兄弟:MFC的多国语言界面的实现 - 闲云鹤 - 博客园
正确的做法是使用 FindResourceEx函数,这里做了一个很好的例子:
如何使用 LoadResource 加载字符串表中的字符串(MUI)
唯一不足是,你需要到项目,属性,资源,命令行,添加“-n”,这样资源字符串就会自动多一个\0出来,试试吧。