windows 程序的本体与操作系统之间的关系

 1 WinMain(hInst,hPrev,……)
 2 {
 3 MSG msg;
 4 RegisterClass(……);
 5 CreateWindow(……);
 6 ShowWindow(……);
 7 UpdateWindow(……);
 8 while(GetMessage(……))
 9 {
10 TranslateMessage(……);
11 DispatchMessage(……);
12 }
13 return msg.wParam;
14 }
15 
16 Window Procedure
17 
18 WndProc(hwnd,msg,wParam,lParam)
19 {
20 switch(msg):
21 case WM_CREATE:……;
22 case WM_COMMAND:……;
23 case WM_LBUTTONDOWN:……;
24 case WM_PAINT:……;
25 case WM_CLOSE:……;
26 case WM_DESTROY:……;
27 default:return DefWiindowProc(……);
28 }
View Code

操作系统维持两个消息队列,系统消息队列和应用消息队列,Windows操作系统将外界输入的消息放入到系统消息队列中,将应用产生的消息放到应用消息队列中,这些都是Windows的USER Module 模块的协助下完成的,然后Windows应用程序的winmain函数是主体,大概内容如下:

代码中的GetMessage从消息队列中获取消息,然后再DispatchMessage中就将消息作为参数传给WndProc函数了。WndProc是一个回调函数,在USER Module中有指向该函数的指针,在特定的事件或条件发生时由操作系统就调用的WndProc,这时候就将传进来的指定消息消息进行了处理。

原文地址:https://www.cnblogs.com/hackerl/p/3701347.html