整数类型
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) `
指针类型
前缀 P- 或 LP- ,两者等效
UTF-16 和 ANSI
UTF-16 字符称为 宽 字符,用于将其与 8 位 ANSI 字符区分开来。
wchar_t、WCHAR
Visual C++ 编译器支持用于宽字符的内置数据类型 wchar_t
typedef wchar_t WCHAR;
wchar_t a = L'a';
wchar_t *str = L"hello";
若要声明宽字符文本或宽字符字符串文本,请将 L 放在文本之前。
ANIS函数(xA)、Unicode函数(xW)
SetWindowTextA ,A结尾,表示采用 ANSI 字符串。
SetWindowTextW , W结尾,表示采用 Unicode 字符串。
推荐使用Unicode 字符集
因为通用、效率高(ANSI还需转为UTF-16)、新的函数只支持Unicode
TCHAR类型、TEXT()、_T()
兼容Windows 95
SetWindowText(TEXT("My Application"));
解释为:
SetWindowTextW(L"My Application"); // Unicode function with wide-character string.
SetWindowTextA("My Application"); // ANSI function.
前缀
头文件的定义
有些定义为 UNICODE,另一些定义为 _UNICODE 带有下划线前缀,都一样,推荐两者都定义。
有两种类型的窗口
应用程序窗口和控件窗口。
应用程序窗口
又叫做main窗口。它通常具有带有标题栏、 最小化 和 最大化 按钮以及其他标准 UI 元素的框架。
框架称为窗口的非工作区,操作系统管理窗口的该部分。
框架中的区域是工作区,这是程序管理的窗口的一部分。
应用程序窗口是控件窗口的父窗口
控件窗口(按钮等)
控件窗口称为应用程序窗口的子窗口。
所有者窗口
应用程序窗口拥有对话框窗口,对话框窗口是两个按钮窗口的父窗口。 下图显示了这些关系:
窗口句柄HWND
从本质上讲,它只是操作系统用来标识对象的数字。 你可以将 Windows 想象成有一个大表,其中包含已创建的所有窗口。 它使用此表按句柄查找窗口。
窗口句柄由创建窗口的函数返回: CreateWindow 和 CreateWindowEx。
入口函数WinMain 或 wWinMain
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR lpCmdLine, int nCmdShow)
{return 0;
}
wWinMain
hInstance 是 实例的句柄 或模块的句柄。 当可执行文件加载到内存中时,操作系统使用此值来标识可执行文件或 EXE。 某些 Windows 函数需要实例句柄,例如加载图标或位图。
hPrevInstance 没有任何意义。 它在 16 位 Windows 中使用,但现在始终为零。
pCmdLine 以 Unicode 字符串的形式包含命令行参数。
nCmdShow 是一个标志,指示主应用程序窗口是最小化、最大化还是正常显示。
函数返回一个 int 值。 操作系统不使用返回值,但你可以使用 该值将状态代码传递给另一个程序。
调用约定(如 WINAPI)定义函数如何从调用方接收参数。 例如,调用约定定义参数在堆栈上的显示顺序。 请确保声明 wWinMain 函数,如前面的示例所示。