一 Windows内部运行机制
1.API与SDK
api是windows操作系统提供给应用程序编程的接口(Application Proramming Interface)简称api函数,windows有1000多种api函数。
sdk全称是Software Development Kit,中文译为软件开发包。例如:购买语音卡的同时,厂商就会提供语音卡的sdk,这个sdk通常包含语音卡的api函数库、帮助文档、使用手册、辅助工具等资源。
2.句枘
句柄(HANDLE)是Windows程序中一个重要的概念,使用非常频繁。在windows程序中,有各种各样的资源(窗口、图标、光标等),系统在创建这些资源会为它们分配内存,并返回标识这些资源的标识号,即句柄。
例窗口句枘(HWND)、图标句柄(HICON)、光标句柄(HCURSOR)、画刷句柄(HBRUSH)
3.消息
windows程序设计是一事件驱动方式的程序设计模式,主要是基于消息的。
在windows程序中,消息是由MSG结构体来表示的。MSG结构体定义如下
typedef struct tagMSG {
HWND hwnd;
//消息所属的窗口
UINT message;
//消息的标识符,消息由数值表识的不便记忆,所以定义为宏WM_XXX(WM是windows message的缩写)XXX对定消息英文大写,例如鼠标左键按下消息WM_LBUTTONDOWN,键盘按下消息WM_KEYDOWN,字符消息就是WM_CHAR。
WPARAM wParam;
LPARAM lParam;
//wParam和lParam用于指定消息的附加信息。例如收到一个字符消息时,message的成员变量就是WM_CHAR,但用户到底输入的到底什么字符,就由wParam和lParam来说明。
DWORD time;
//消息投递到消息队列的时间。
POINT pt;
//鼠标的当前位置。
} MSG;
4.消息队列
每一个windows应用程序开始执行后,系统都会为该程序创建一个消息队列,这个消息队列用来存放该程序创建的窗口的消息。
当消息投放到消息队列中后,应用程序则通过一个消息循环不断地从消息队列中取出消息,并进行响应。这种消息机制,就是windows程序运行的机制。
5.进队消息和不进队消息
进队消息将由系统放入到应用程序的消息队列中,然后由应用程序取出并发送。不进队消息在系统调用窗口过程时直接发送给窗口。不管是进队消息还是不进队消息,最终都由系统调用窗口过程函数对消息进行处理。
6.WinMain函数
当Windows