一、WINDOWS程序的运行原理:
1、基于消息的事件驱动:将所有的事件都包装成消息,并存放于消息队列中,应用程序每次取走一条。
2、消息的捕捉与传递均由WINDOWS执行。
二、WINDOWS中用于存放消息的结构体:
结构体原型:
typedef struct tagMSG { // msg
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
} MSG;
参数释义:
hwnd:窗口句柄,即产生消息的窗口。
message:消息。
wParam:消息附加内容。如:产生了一个键盘消息,该附加消息则包含具体按下的键。
lParam:同样是附加消息。
time:消息产生的时间。
pt:消息产生时光标的位置。
关于结构体中的新数据类型:
HWND:窗口句柄。
WORD:16位的整数。
DWORD:双16位的整数。
名词:
句柄:资源的标识符。
消息队列:WINDOWS中每个程序都对应的有一个消息队列为它服务。实质是一块先进先出的缓冲区域。
三、WinMain函数:WINDOWS程序的入口。
函数原型:
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
);
参数释义:
hInstance:当前应用程序的实例句柄。
hPrevInstance:上一个窗口的实例句柄。
lpCmdLine:命令行参数。
nCmdShow:指定以何种模式显示窗口,具体的值有以下几种类型(宏):SW_HIDE/SW_MAXIMIZE/SW_MINIMIZE/SW_RESTORE/SW_SHOW/SW_SHOWMAXIMIZED/SW_SHOWMINIMIZED/SW_SHOWMINNOACTIVE/SW_SHOWNA/SW_SHOWNOACTIVATE/Displays /SW_SHOWNORMAL
四、窗口类:
结构原型:
typedef struct _WNDCLASS {
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HANDLE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
} WNDCLASS;
参数释义:
style:窗口类样式,可以有以下几种类型的值:CS_HREDRAW /CS_VREDRAW /CS_DBLCLKS /CS_NOCLOSE /CS_PARENTDC
lpfnWndProc:指针,消息处理过程函数,