C++中SetWindowTextW, SetWindowTextA SetWindowText三者有什么区别?

 我来答
358097271
推荐于2017-10-07 · TA获得超过165个赞
知道小有建树答主
回答量:188
采纳率:0%
帮助的人:167万
展开全部
SetWindowTextW表示设置的字符串是WCHAR (双字节字符 )
SetWindowTextA表示设置的字符串是CHAR (单字节字符 )
SetWindowText表示设置的字符串是自动匹配当前项目的字符环境是单字节还是双字节字符
刷新①丅5e6
2018-08-05 · TA获得超过4333个赞
知道大有可为答主
回答量:1499
采纳率:64%
帮助的人:598万
展开全部
#ifdef UNICODE
#define SetWindowText  SetWindowTextW
#else
#define SetWindowText  SetWindowTextA
#endif // !UNICODE

首先解释A和W的不同意义:

其实MFC中

凡是涉及字符串处理的API函数都有A和W两个版本

A结尾的表示使用ANSI编码:中文的Windows操作系统一般对应的就是GBK,GBK在内存里英文占用一个字节 、汉字两个字节。 

W结尾的表示:

UTF-16版本---英文两个字节、汉字两个字节 

UTF-32版本---英文四个字节、汉字四个字节

如果楼主确定你的软件将来只需要英文或汉文字符,那就选择A版本的API,如果有可能要使用多国文字,那么最好使用W版本的API。

然后,楼主再看上面一段,MFC中的源代码,其实实际上只存在SetWindowTextW和SetWindowTextA,如果你的整个项目字符集是UNICODE格式的字符集,那SetWindowText和SetWindowTextW其实就是一个东西,如果不是UNICODE那SetWindowText就和SetWindowTextA是一个东西。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式