API:Windows操作系统提供给应用程序编程的接口(Application Programming Interface),简称API函数,就是系统提供的函数,所有主要的Windows函数都在Windows.h头文件中进行了声明。
SDK:SDK(Software Development Kit),中文翻译为软件开发包。包括API函数,帮助文档,微软提供的辅助开发工具。
1.2窗口与句柄
窗口分为客户区和非客户区。
客户区:客户区是窗口的一部分,应用程序通常在客户区中显示文字或者绘制图形。
非客户区:标题栏、菜单栏、系统菜单、最小化框和最大化框、可调边框统称为窗口的非客户区。
对话框和消息框也是一种窗口,在对话框上实际上还有许多的子窗口。
窗口是通过窗口句柄来标识的,我们要对某个窗口进行操作,首先要得到这个窗口的句柄。
1.3消息与消息队列
在Windows程序中,消息是由MSG结构体来表示的。
typedef struct tagMSG { // msg
HWND hwnd; //表示消息所属的窗口
UINT message; //消息的标识符,用数值来表示,对应的数值定义为WM_XXX宏,如WM_LBUTTONDOWN(鼠标左键按下消息),WM_CHAR(字符消息)
WPARAM wParam; //消息的附加消息
LPARAM lParam; //消息的附加消息
DWORD time; //消息投递到消息队列的时间
POINT pt; //鼠标的当前位置
} MSG;
消息队列:按下鼠标左键时,产生WM_LBUTTONDOWN消息,系统将消息放到窗口所属应用程序的消息队列中,应用程序通过消息循环取出消息,进行消息响应。
进队消息:消息由系统放入到应用程序的消息队列中,然后由应用程序取出和发送。不进队消息:在系统调用窗口过程时直接发送给窗口。进队消息和不进队消息最终都由系统调用窗口过程函数对消息进行处理。