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字符以字符‘}’来显示。

ANSI和Unicode到底是什么

简单地说:
ANSI是美国要家标准(我没有精确用词,只表示一下意思),每个数字、字母、标点符号都用一个字节表示,汉字用2个字节表示;
UNICODE是国际标准(我没有精确用词,只表示一下意思),每个数字、字母、标点符号、汉字都用2个字节表示;

ANSI是历史发展的中间产物。最终是要淘汰的,尽管我们现在的PC机默认还是ANSI,但它是为了兼容以前的ANSI,新的东西如手机基本上都用UNICODE了。

【转】SetWindowText 的用法的更多相关文章

  1. 转:SetWindowText 的用法

    SetWindowText   函数功能:该函数改变指定窗口的标题栏的文本内容(如果窗口有标题栏).如果指定窗口是一个控件,则改变控件的文本内容.然而,SetWindowText函数不改变其他应用程序 ...

  2. VC++ 浅谈VS2010中CMFCToolBar的用法

    本文将给大家介绍Visual Studio 2010中CMFCToolBar的用法,CMFCToolBar可以让用户自定义工具栏图标,使用静态成员函数SetUserImages()将一个CMFCToo ...

  3. EditText 基本用法

    title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...

  4. jquery插件的用法之cookie 插件

    一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...

  5. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  6. [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

    一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...

  7. python enumerate 用法

    A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ...

  8. [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

    本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...

  9. 【JavaScript】innerHTML、innerText和outerHTML的用法区别

    用法: <div id="test">   <span style="color:red">test1</span> tes ...

随机推荐

  1. 如何利用maven将本地jar包引入到工程之中

    1.在个人开发模式下,可以将jar包放入项目的lib目录中,在pom.xml中做如下配置: <dependencies> <dependency> <groupId> ...

  2. java 查看类是从哪个jar包加载的

    package com.jason object FIndjar { def main(args: Array[String]): Unit = { val pd = classOf[org.apac ...

  3. turtle1

    #画风车 from turtle import * pensize(2) for i in range(4): seth(360-i*90) fd(150) rt(90) circle(-150,45 ...

  4. Java生成二进制文件与Postman以二进制流的形式发送请求

    业务描述: 模拟终端(智能家居)发送HTTP POST请求,请求参数为二进制流:而且,二进制流是加密后的数据,因此调试分两步: 1.Java代码生成加密后数据,并保存为二进制流文件 (电脑上的图片就是 ...

  5. PyGSP

    PyGSP # PyGSP (0.5.1) # matplotlib (3.1.2) # networkx (2.4) # numpy (1.17.4) from pygsp import graph ...

  6. 向DataGrid数据表格增加查询搜索框

    向DataGrid数据表格增加查询搜索框 效果如下: js代码: $(function(){ var dg = $('#dg').datagrid({ url:"${pageContext. ...

  7. java中对对象进行判空的操作--简洁编码

    java中对对象进行判空的操作 首先来看一下工具StringUtils的判断方法: 一种是org.apache.commons.lang3包下的: 另一种是org.springframework.ut ...

  8. Codeforces Round #604

    Beautiful Regional Contest 题意 题解 代码 Beautiful Sequence 题意 题解 代码 一个思路不够清晰的代码 Beautiful Mirrors with q ...

  9. 图像变化之Laplacian()函数 and Schaar()滤波及综合例子

    先来  Laplacian()函数 #include<math.h> #include<opencv2/opencv.hpp> #include<string.h> ...

  10. hdu 1427 速算24点【暴力枚举】

    速算24点 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...