Windows API 是Windows操作系统提供给应用程序的大量函数,开发程序调用这些接口,可以像搭建“积木”一样,可以搭建各种各样不同的程序。所以Windows API函数就是构建整个Windows 系统的基石。
接下来,关于API的基本结构如下图:
Windows API的数据类型是不同于C或者C++的数据类型的 ,它有一套属于自己的数据类型。同时,这两者之前又有一些关系。比如,部分数据类型是由标准C当中重定义而来,而有些是Windows 特有的。
其中,自定义规则遵循如下情况:
基本类型大写:即char 类型 改变为CHAR。
指针类型在其指向数据类型前添加“LP”或“P”即:DWORD的指针类型为“LPDWORD”和“PDWORD”。
句柄类型命名方式一般在对象前添加“H”.
无符号类型一般是以“U”开头,即:“INT”是符号类型,“UINT”则是无符号类型。
Windows 应用程序都是“消息(事件)驱动”的,任何一个窗口都能够接收消息,并对该消息做出相应的处理。Windows系统和应用程序均可产生消息。任何一个动作都会产生,比如:“点击”,“移动鼠标”,“敲击键盘”,“改变窗口大小”。
Windows中有个系统消息队列,以及分别为每个GUI线程维护一个各自的线程消息队列(应用程序消息队列),
UI线程启动一个消息循环,每次从本线程所对应的消息队列中取出一条消息,然后根据消息所包容的信息,将其转发给特定的窗口对象,此窗口对象所对应的“窗体过程”函数被调用以处理这些消息。
每个窗口都有一个窗口过程来处理窗口接收到的消息,窗口过程是一个回调函数,它是由Windows 自动调用。
一般窗口程序的开发,遵循如下图的流程:
WNDCLASS结构体:
窗口类WNDCLASS是Windows中用于创建窗口的模板,每个窗口类都有一个窗口过程(WndProc),负责处理发送该类窗口的所有的消息,一个应用程序在创建某类型的窗口前,必须先注册窗口类。
该窗口类主要有三种:
系统窗口类:系统内部使用,即基本的控件窗口类。
应用程序全局窗口类:注册窗口时,以CS_GLOBALCLASS标志注册的窗口类,该类可以所有的模块使用,一般为dll模块。
应用程序局部窗口类:没有CS_GLOBALCLASS标志注册的窗口类,只能在模块范围内使用。
创建窗口所需要的API为 CreateWindow()。其结构如下:
注释:其核心的元素为最后一个“IpParam”他是用来“绑定”注册窗口类的指针。
显示窗口所需要使用的API为ShowWindow(),其结构如下:
跟新窗口所需要使用的API为UpdateWindow(),其结构如下:
WNDPROC是一个函数指针,指向窗口过程函数。其定义结构如下:
注释:详细可以参考如下网址:https://www.xuenixiang.com/thread-2915-1-1.html
简单的消息循环一般包含三个API函数:GetMessage,TranslateMessage,DispatchMessage。常见写法如下:
[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!
最后于 2021-5-27 21:52
被天象独行编辑
,原因: