《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语言的定义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值