【win32_001】win32基础知识点--WinMain函数、控制台、格式化字符串、数据类型(字符、字符串、整数、bool)

右键单击项目名称 → 属性 → 配置属性 → 高级 → 高级属性 → 字符集

1.WinMain函数

  • WinMain 函数是A版本的入口
  • wWinMain 函数是W版本的入口
  • _tWinMain函数是通用的入口,但需要包含tchar.h头文件

2. 打印到控制台

2.1 方法1:writeconsole

writeconsole函数说明网页

    PCTSTR    test1 = TEXT("123456789 \n");
    AllocConsole();
    HANDLE  HConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    WriteConsole(HConsole, test1, _tcslen(test1), NULL, NULL);

2.2 方法2:_tfreopen_s

_tfreopen_s函数说明网页

	AllocConsole();
	FILE* stream;
	_tfreopen_s(&stream,TEXT("CONOUT$"), TEXT("w"), stdout);//tchar.h
	cout << "This is a test info" << endl;

3.字符

  • 用char数据类型定义变量就表示使用多字节字符集存储字符。
    • 标准ASCII部分:使用1Byte。
    • 非标准ASCII部分:大于1Byte;
  • 用wchar_t数据类型定义变量表示使用Unicode字符集存储字符,使用固定2字节来表示一个字符。
  • 宽字符串的结束标志0,是占用2Byte,而不是1Byte。
  • 若要声明宽字符文本或宽字符字符串文本,请将 L 放在文本之前。
char=CHAR(A字符集)wchar_t =WCHAR(W字符集)TCHAR(通用)
char c = ‘A’; //1bytewchar_t wc = L’A’; //2byteTCHAR tc = ‘A’;
TCHAR tc = TEXT(‘A’);
char *pStr = “A”;//2byte,含结束标志0wchar_t *pwStr = L"A";//4byte ,含结束标志0PCTSTR ptstr = TEXT(“C语言”);
char szStr[] = “A”;//2bytewchar_t szwStr[] = L"A";//4byteTCHAR sztBuf[] = TEXT(“C语言”);
PSTR=LPSTR=char*PWSTR=LPWSTR=wcahr_t*PTSTR=LPTSTR=TCHAR*
PCSTR=LPCSTR=const char*PCWSTR=LPCWSTR=const wcahr_t*PCTSTR=LPCTSTR= const TCHAR*

4. 字符串、格式化字符串函数

A字符集W字符集通用说明
StringCbPrintfAStringCbPrintfWStringCbPrintf格式化字符串,%[标志][宽度][.精度][大小]类型
strlenwcslen_tcslen返回字符个数(不含末尾0),不是字节个数
strchrwcschr_tcschr字符串中首次出现指定的1字符的物理地址
strstrwcsstr_tcsstr字符串中首次出现指定的字符串的物理地址
strcatwcscat_tcscat字符串拼接
  • 安全版本的函数会在原函数后面加_s后缀
  • StringCchCopy函数只会从pString指向的字符串中复制5−1个字符,并把szResType缓冲区的第5个字符设置为0,要想得到5个字符的以0结尾的字符串,可以把StringCchCopy函数的第2个参数设置为5 + 1。强烈建议使用StringCchCopy代替_tcscpy_s函数!
  • 当然,也可以使用内存复制函数memcpy_s

5. 整数

在这里插入图片描述

6. bool

使用注意:
一般bool 的false=0;true=1 | 2 | …|n
false是为0,true是非零
不建议这样用:

if (result == TRUE) // Wrong!
因为result不一定只返回1true),当返回2时,实际也是true,但这个条件却不满足。
因为true应该是非0的集合的意思,而不是仅仅为某一个具体的非0

建议这样用:

`if (result ) 或者if (result !=FALSE) `

7. 前缀缩写

在这里插入图片描述

8. 有两种类型的窗口

应用程序窗口和控件窗口。

8.1 应用程序窗口

又叫做main窗口。它通常具有带有标题栏、 最小化 和 最大化 按钮以及其他标准 UI 元素的框架。
框架称为窗口的非工作区,操作系统管理窗口的该部分。
框架中的区域是工作区,这是程序管理的窗口的一部分。
应用程序窗口是控件窗口的父窗口

控件窗口(按钮等)

控件窗口称为应用程序窗口的子窗口。

所有者窗口

应用程序窗口拥有对话框窗口,对话框窗口是两个按钮窗口的父窗口。 下图显示了这些关系:
在这里插入图片描述

8.2 窗口句柄HWND

从本质上讲,它只是操作系统用来标识对象的数字。 你可以将 Windows 想象成有一个大表,其中包含已创建的所有窗口。 它使用此表按句柄查找窗口。
窗口句柄由创建窗口的函数返回: CreateWindow 和 CreateWindowEx。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_1615549892

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值