我正在使用在Visual Studio中选择的“使用Unicode字符集”构建MFC C++应用程序。我定义了UNICODE,我的CString是16位的,我处理的文件名中带有日语字符,等等。但是,当我将包含日语字符的Unicode字符串放入CComboBox(使用AddString)时,它们显示为?????。 。
我正在运行Windows XP Professional x64(英语)。如果我使用Windows控制面板的“区域和语言选项”,“高级”选项卡,并将非Unicode程序的“语言”设置为日语,则我的组合框看起来正确。
因此,我希望我的组合框看起来正确,并且我想了解为什么“非Unicode程序的语言”设置会改变Unicode程序的行为。我还应该告诉Windows我的应用程序是Unicode应用程序吗?
谢谢你的帮助!
最佳答案
Windows通过它们调用的函数知道Unicode和非Unicode程序之间的区别。大多数Windows API函数都有两种变体,一种以非Unicode结尾于A,另一种以Unicode结尾于W。定义这些功能的包含文件将使用编译器设置为您自动选择一个或另一个。
字符可能无法正确显示,因为您选择了不包含它们的字体作为默认的UI字体。