Windows三大模块:GDI32.DLL USER32.DLL KERNEL32.DLL
一些缩写:
API: Application Programming Interface
DLL: Dynamic Link Library
GUI: Graphics User Interface
MDI: Multiple Document Interface
MFC: Microsoft Foundation Class
OLE: Object Linking & Embedded
OWL:Object Windows Library
SDK:Software Development Kit
SDI: Single Document Interface
UI: User Interface
每个Windows程序都有一个如下循环
Msg msg;
while(GetMessage(&msg,NULL,NULL,NULL))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
MSG的数据结构
typedef struct tagMsg
{
HWND hwnd;
UINT message; //WM_xxx
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
}
Windows程序的生与死:
1、程序初始化中调用CreateWindow,为程序创建一个窗口,作为程序的屏幕舞台。CreateWindow产生窗口之后产生WM_CREATE直接给窗口函数,后者于是可以在此时做些初始化操作
2、在程序活着的过程中,不断以GetMessage从消息队列中抓取消息。如果这个消息是WM_QUIT,GetMessage会传回0而结束while循环,进而结束整个程序。
3、DispatchMessage通过Windows USER模块的协助和监督,把消息分派至窗口函数。消息将在该处被判别并处理。
4、程序不断进行2、和3、的操作。
5、当使用者按下系统菜单中的Close命令项时,系统发出WM_CLOSE。通常程序的窗口函数不拦截此消息,于是DefWindowProc处理它。
6、DefWindowProc收到WM_CLOSE后,调用DestroyWindow把窗口清除。DestroyWindow本身又会送出WM_DESTROY。
7、程序对WM_DESTROY的标准反应是调用PostQuitMessage。
8、PostQuitMessage没什么其他操作,就只送出WM_QUIT消息,准备让消息循环中的GetMessage取得,结束消息循环。