[英]using CListCtrl to display utf-8 characters
我试图在过去的几个小时里在我的CListCtrl
显示文本但没有成功。 我正在使用std::ifstream
读取.txt文件,该文件使用utf-8
填充CListCtrl
。
“项目属性 - >字符”设置为“未设置”,我无法将其更改为使用Unicode,这是一个原本不是我编写的旧项目。
从UTF-8到ANSI的转换也不起作用,我也不能使用boost库。 当我读到CListCtrl
不支持UTF-8。
我很高兴听到任何可能有效的解决方案,扩展CListCtrl
来替换旧的等等。我正在使用VS2010,.NET4。
您需要使用Unicode版本的列表视图API(例如LVM_SETITEMW)。 MBCS版本的MFC调用ANSI API版本的Windows API,这些版本可能无法在您的文件中显示某些Unicode字符。
这意味着,如果要更改项目,则需要发送带有LVITEMW结构的LVM_SETITEMW消息。 如果要更改许多列表控件,可以使用MFC的代码作为参考编写CListCtrlW类。 LVITEMW期望字符串为UTF-16,因此您需要将字符串数据转换为UTF-16。 您可以通过MultiByteToWideChar或CA2W与CP_UTF8代码页执行此操作。 此外,如果您使用的字体无法处理输入中的某些Unicode字符,则需要更改字体。
如果需要UI中的许多位置来处理Unicode输入,您可以尝试将业务逻辑的ANSI部分移出到DLL,然后将主exe项目更改为Unicode。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.