windows程序运行原理

重温孙鑫《VC++深入编程》

windows程序都是事件驱动的,而且是基于消息的。

windows应用程序,操作系统,计算机硬件之间的交互关系

          应用程序---------消息队列

                |

                |

         操作系统

                |

                |

         I/O设备

1,操作系统可以接收I/O设备的信息,但它并不对这一事件做任何反应,并把它封装成MSG后给消息队列。由应用程序来对这一事件作出反应。对事件作出反应的过程就是消息响应。

2,应用程序从消息队列中提取消息,然后通过Windows API通知操作系统执行某个具体的动作。

while (GetMessage(&msg, NULL, 0, 0))

{

    TranslateMessage(&msg);

    DispatchMessage(&msg);

}

GetMessage()从消息队列中取出消息,经过TranslateMessage(&msg)对一些消息进行翻译解释,然后DispatchMessage(&msg)把消息投递给操作系统,由操作系统调用窗口过程回调函数WindowProc进行消息处理。

LRESULT CALLBACK WindowProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
);

#define CALLBACK    __stdcall

实际上CALLBACK是一种调用约定,VC++6.0默认的调用约定为__cdecl,而回调函数WindowProc是属于__stdcall,所以在使用它时,需要有一个调用约定的声明。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值