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,这时候就将传进来的指定消息消息进行了处理。

 

你可能感兴趣的:(windows)