gpt4 book ai didi

c++ - 无法在 Windows 对话框上显示其他 unicode 东亚语言

转载 作者:行者123 更新时间:2023-11-30 17:57:15 26 4
gpt4 key购买 nike

我使用DialogBox用于在我的应用程序中显示对话框的 API。在 DLGPROC 过程回调的 WM_INITDIALOG 消息处理中,我可以看到调试器中的文本字符串是正确的 Unicode,并且 SetDlgItemText用于设置对话框中 Rich Edit 控件上的文本。然而,当我尝试使用 GetDlgItemText API 从对话框中获取文本时,这些字符都是问号。

我的项目被编译为 Unicode。我还使用了spy++,它显示Windows Proc是Unicode。

我正在使用英语语言环境的 Windows 7 上测试中文,因此我还为我的机器安装了中文语言包,但它也没有帮助。

我无法解释我在这里看到的内容。如果有人能够对此或如何进一步调试进行一些说明,我们将不胜感激。

最佳答案

原来是因为那里的RichEdit控件。如果我只使用文本框,中文字符将与其他英文字符一起正确显示。因此,在阅读了一些内容之后,特别是 this one ,我进行了一些尝试,并且成功了。所以基本上我不应该使用 SetDlgItemText,而是应该使用以下代码(其中 m_strDisplay 是要在 Rich Edit 上显示的文本):

::SendMessage(hWndText, EM_AUTOURLDETECT, TRUE, NULL);
SETTEXTEX TextInfo = {0};
TextInfo.flags = ST_DEFAULT|SF_UNICODE;
TextInfo.codepage = 1200;
SendMessage(hWndText, EM_SETTEXTEX, (WPARAM)&TextInfo, (LPARAM)(LPCTSTR)m_strDisplay);

设置 RichEdit 控件上的文本。

关于c++ - 无法在 Windows 对话框上显示其他 unicode 东亚语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12942337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com