文章目录
右键单击项目名称 → 属性 → 配置属性 → 高级 → 高级属性 → 字符集
1.WinMain函数
- WinMain 函数是A版本的入口
- wWinMain 函数是W版本的入口
- _tWinMain函数是通用的入口,但需要包含tchar.h头文件
2. 打印到控制台
2.1 方法1: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
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’; //1byte | wchar_t wc = L’A’; //2byte | TCHAR tc = ‘A’; TCHAR tc = TEXT(‘A’); |
char *pStr = “A”;//2byte,含结束标志0 | wchar_t *pwStr = L"A";//4byte ,含结束标志0 | PCTSTR ptstr = TEXT(“C语言”); |
char szStr[] = “A”;//2byte | wchar_t szwStr[] = L"A";//4byte | TCHAR 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字符集 | 通用 | 说明 |
---|---|---|---|
StringCbPrintfA | StringCbPrintfW | StringCbPrintf | 格式化字符串,%[标志][宽度][.精度][大小]类型 |
strlen | wcslen | _tcslen | 返回字符个数(不含末尾0),不是字节个数 |
strchr | wcschr | _tcschr | 字符串中首次出现指定的1字符的物理地址 |
strstr | wcsstr | _tcsstr | 字符串中首次出现指定的字符串的物理地址 |
strcat | wcscat | _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不一定只返回1(true),当返回2时,实际也是true,但这个条件却不满足。
因为true应该是非0的集合的意思,而不是仅仅为某一个具体的非0值
建议这样用:
`if (result ) 或者if (result !=FALSE) `
7. 前缀缩写
8. 有两种类型的窗口
应用程序窗口和控件窗口。
8.1 应用程序窗口
又叫做main窗口。它通常具有带有标题栏、 最小化 和 最大化 按钮以及其他标准 UI 元素的框架。
框架称为窗口的非工作区,操作系统管理窗口的该部分。
框架中的区域是工作区,这是程序管理的窗口的一部分。
应用程序窗口是控件窗口的父窗口
控件窗口(按钮等)
控件窗口称为应用程序窗口的子窗口。
所有者窗口
应用程序窗口拥有对话框窗口,对话框窗口是两个按钮窗口的父窗口。 下图显示了这些关系:
8.2 窗口句柄HWND
从本质上讲,它只是操作系统用来标识对象的数字。 你可以将 Windows 想象成有一个大表,其中包含已创建的所有窗口。 它使用此表按句柄查找窗口。
窗口句柄由创建窗口的函数返回: CreateWindow 和 CreateWindowEx。