首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MFC、Unicode和DDX_Text

MFC、Unicode和DDX_Text
EN

Stack Overflow用户
提问于 2015-03-23 23:31:25
回答 1查看 932关注 0票数 0

到处都是提供了一个强有力的理由:完全避开微软的TCHAR_T()LPCTSTR等等,把wchar_t也推到一边,勇敢地接受一个基于窄char类型的UTF-8字符串的世界。

这似乎很好,直到我来到MFC DDX_Text()宏,以便在编辑控件中和外部获取一个CString。是否有任何合理的办法:

  • CStringA myString声明为UTF-8字符串(或将ASCII/ANSI字符串声明为退化情况)
  • UNICODE定义编译
  • myString通过适当的转换和/或临时变量传递到第三个参数到DDX_Text(),并从相关的编辑控件获得合理的结果?

如果不是,如果应用程序想要使用UTF-8 (或者在退化情况下使用ASCII/ANSI ),您建议如何通过编辑控件处理字符串输入/输出?

(P.S.这是因为Visual 2013鼓励只使用Unicode的MFC。考虑到MFC应用程序和使用VS2013的愿望,这需要定义UNICODE .或者坚持一种不受欢迎的做事方式。

EN

回答 1

Stack Overflow用户

发布于 2015-03-24 04:38:22

Windows内部使用UTF-16作为UNICODE标准。因此,您必须遵循这一点,并使用CString,它在UNICODE中被定义为CStringW。此外,还必须使用_T()宏。所有Windows常用控件,如编辑框、列表框等,都在使用UNICODE。

我建议只使用UTF-8来建立关系网。

// UTF8转换

代码语言:javascript
复制
CStringA CUtility::UTF16toUTF8(const CStringW& utf16)
{
    return CW2A(utf16, CP_UTF8);
}

CStringW CUtility::UTF8toUTF16(const CStringA& utf8)
{
    return CA2W(utf8, CP_UTF8);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29222362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档