标签:汉字 fine 一个 style 函数 占用 ascii set windows
SetWindowTextW表示设置的字符串是WCHAR (双字节字符 )
SetWindowTextA表示设置的字符串是CHAR (单字节字符 )
SetWindowText表示设置的字符串是自动匹配当前项目的字符环境是单字节还是双字节字符
#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是一个东西。
函数功能:该函数改变指定窗口的标题栏的文本内容(如果窗口有标题栏)。如果指定窗口是一个控件,则改变控件的文本内容。然而,SetWindowText函数不改变其他应用程序中的控件的文本内容。
函数原型:BOOL SetWindowText(HWND hwnd,LPCTSTR lpString);
参数:
hWnd:要改变文本内容的窗口或控件的句柄。
lpString:指向一个空结束的字符串的指针,该字符串将作为窗口或控件的新文本。
返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。
备注:如果目标窗口属于当前进程,SetWindowText函数会使WM_SETTEXT消息发送给指定的窗口或控件。然而,如果控件是以WS_CAPTION风格创建的列表框控件,SetWindowText函数将为控件设置文本,而不是为列表项设置文本。
SetWindowText函数不扩展tab字符(ASCII代码0×09),Tab字符以字符‘}’来显示。
标签:汉字 fine 一个 style 函数 占用 ascii set windows
原文地址:https://www.cnblogs.com/zhangbing12304/p/11118222.html