繁体   English   中英

使用CListCtrl显示utf-8字符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM