《Windows程序设计》:第二节

我将上一节程序做简单的修改
#include <windows.h>
int wWinMain(
In HINSTANCE,
In_opt HINSTANCE ,
In LPWSTR,
In int
)
{
MessageBox(NULL, TEXT(“我爱你!”), TEXT(“表白小程序”), MB_OKCANCEL | MB_ICONWARNING | MB_DEFBUTTON2);
}

在这个程序里,加了注释,没有注释会有警告弹出来;
关注注释,详细请查询:https://docs.microsoft.com/zh-cn/cpp/code-quality/understanding-sal?view=vs-2019#what-is-sal-and-why-should-you-use-it

对于最后一个参数,运用了按位与来表示叠加状态。
MB_OKCANCEL | MB_ICONWARNING | MB_DEFBUTTON2
详情见上节message()函数详解。

下面进入本章主题,代码如下:

#include <windows.h>
#include<stdio.h>
#include<locale.h>
int main()
{
wchar_t str[] = L"我爱你";
setlocale(LC_ALL, “Chs”);
printf("%ls %lc\n", str, str[0]);
return 0;
}
我们引入unicode概念,
#define TEXT(quote) __TEXT(quote) // r_winnt
#define __TEXT(quote) L##quote // r_winnt
TEXT()在unicode中即表示宽字符;
#define __TEXT(quote) quote // r_winnt
#define TEXT(quote) __TEXT(quote) // r_winnt
在多字符中表示char型字符。
查看头文件的方式:
使用格式 #ifndef M_H 对应的含义 如果不存在 M_H

              #define   M_H                                      那就引入M_H

                ..........................

                #endif                                                 否则就不引入

在C语言中我们用char定义一个一个字节的字符,用wchar_t定义一个宽字符,但是在windows这两个我们都不用,我们使用TCHAR,那TCHAR又是个什么东西呢?
在这里插入图片描述
我们可以看到,TCHAR就是WCHAR.

那在windows中我们定义字符呢,我们就可以这样写了,有两种方式,一种是字符指针,一种是字符数组,字符数组呢,建议加上static把他放到静态区中,不要放在栈中,还有不要放在堆中。

Windows 编程中,使用 TCHAR 来定义字符及字符串。

在宽字符的环境里,Windows 自动将 TCHAR 替换为 C 语言的 wchar_t 类型,TEXT() 自动在字符串前加 L 标识。

Windows NT 架构全面支持 Unicode,在今后的编程中,我们应该尽量使用 Unicode 才符合时代发展的趋势。

如果还有朋友对Uincode感兴趣的朋友,可以看这篇文章!《第002讲:Unicode 的解救方案》
https://fishc.com.cn/forum.php?mod=viewthread&tid=47025&extra=page%3D1%26filter%3Dtypeid%26typeid%3D407

如果使用unicode编码,TCHAR对应WCHAR。
如果使用ANSI编码,TCHAR对应CHAR。

本人建议,凡是涉及窗体程序,一律使用WCHAR编码!字符串使用WCHAR*PWSTR;定义L"内容"。即PWSTR。
使用WCHAR和PWSTR进行变量类型声明。字符串双引号前加L。涉及到控制台,用ANSI编码,用原c语言的定义。

发布了7 篇原创文章 · 获赞 0 · 访问量 78

猜你喜欢

转载自blog.csdn.net/qq_36430421/article/details/105086261