windows基本编程思想是典型的面向对象编程:
在windows中,每个窗口就是一个对象,他们都拥有自己的属性和行为,windows程序设计中也使用了封装继承和多态等面向对象的程序设计思想
windows应用程序是由各种窗口组成,因此windows编程说到底就是窗口编程。
windows编程中约定的函数入口是WinMain,类似于c语言中的main函数,这个函数本身是由操作系统来调用的。windows编程中的CALLBACK函数也是由windows函数来调用的,用户看到函数前方有CALLBACK就绝不会主动去调用这个函数。
windows窗口的诞生过程:
定义窗口类的函数(WNDCLASS)->注册窗口类(RegisterClass)->创建窗口(CreateWindow)->显示窗口(ShowWindow)->更新窗口(UpdateWindow)->消息循环(GetMessage->TranslateMessage->DispatchMessage)
为何要先窗口类里面定义窗口的特征然后在通过CreateWindow来再次设置窗口参数而不是一次性在窗口类中设置完毕呢?
先定义窗口类再在CreateWindow中来设置窗口参数其实是一个非常聪明的设置方式,因为通过这种方式我们可以从一个窗口类中产生多个具有完全不同特征的窗口,这种处理方式类似于继承多态的处理方式,每个应用程序运行过程中可能产生多个窗口,我么不用为这些窗口单独定义窗口类,而只要使用CreateWindow来定义新窗口的特征就可以。
CreateWindow函数参数信息:
HWND WINAPI CreateWindow(
_In_opt_ LPCTSTR lpClassName, // 窗口类名称
_In_opt_ LPCTSTR lpWindowName, // 窗口标题
_In_ DWORD dwStyle, // 窗口风格,或称窗口格式
_In_ int x, // 初始 x 坐标
_In_ int y, // 初始 y 坐标
_In_ int nWidth, // 初始 x 方向尺寸
_In_ int nHeight, // 初始 y 方向尺寸
_In_opt_ HWND hWndParent, // 父窗口句柄
_In_opt_ HMENU hMenu, // 窗口菜单句柄
_In_opt_ HINSTANCE hInstance, // 程序实例句柄
_In_opt_ LPVOID lpParam // 创建参数
);
dwStyle样式详情:(WS->WindowsStyle)
CreateWindow函数返回值:
1、函数成功,返回新窗口句柄。
2、函数失败,返回NULL。
API档案来源:小甲鱼老师
(:зゝ∠)