在进行windows编程的时候需要包含一个综合性头文件
Windows.h

Windows的数据类型基本上都是由c/c++类型重定义而来,主要表达的是数据的作用,能够根据类型名快速知道数据的作用(在C中有严格的定义,但在Windows中,主要是根据实际使用来自定义大小)

在Windows 使用 typedef 为大多数的类型取了别名,本身并没有提供任何新的类型,对于类型的新名称,更多的是凸显出类型的含义,例如类型通常被用于什么地方,而不会过于的考虑类型的大小(主要还是为了跨平台)。
BOOL: 实际上是一个 int 类型,在编程时不需要考虑内部实现,只需要看功能。
LRESULT: L 描述的是类型 LONG ,RESULT 说明这个类型描述的是结果。
WPARAM: W理论上是WORD类型,PARAM 表示当前类型应该作为函数的参数类型
LPARAM: L理论上是LONG类型,PARAM 表示当前类型应该作为函数的参数类型
LPSTR: LONG_PTR LP表示这是一个指针,STR表示一个字符串,连起来就是指向字符串的指针
LPCSTR:C 表示的实际上是 CONST,即一个指向常量字符串的指针
HWND: H 表示句柄(就是个标识),WND表示当前为窗口,即 HWND 为窗口句柄(一个标识窗口的变量),保存的是4字节的整数(在64位中是8个字节)
周考会考

什么是句柄?

windows是一个面向对象的语言,充斥着对象的概念,再操作大多数对象(窗口、图标、文件、进程、线程)的时候,都需要我们将一个句柄作为参数传递给相应的函数,其实起到的就是一个标识作用,让操作系统知道我们操作的是什么东西。
对于不同的对象而言,其句柄类型是不相同的,但是无论如何他们都是以H打头的数据类型,以下是部分句柄类型,他们全都可以代表一个对象:

HINSTANCE 实例句柄(代表此进程) HWND 窗口句柄
HMODULE 模块句柄 HDC 设备环境绘图句柄
HMENU 菜单句柄 HANDLE 内核对象句柄

入口函数的改变
int main()
int main(int argc, char* argv[])
改变为
GUI 程序的入口点必须是 int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)