perhaps 发表于 2013-1-28 13:21:22

MFC全接触(二)

上一次和MFC邂逅,我和她谈得很投机。分别的时候,她还依依不舍地对我说:“别忘了给我消息哦。”忙了一个月了,直到这几天,我才想起她告诉我的那句话。今天终于忍不住要给她发条消息了,但是我该怎么发呢?完了,她都没有告诉我怎么发呢?看来又得自己努力了。
        我们都知道Windows应用程序是消息驱动(Message-Driven)的。而我们在编写应用程序的时候也是建立起消息映射表,并通过实现消息响应函数去处理用户操作产生的事件消息。关于消息驱动,有一个基本的概念要明确的,就是应用程序并不能直接得到来自用户操作的信息,而这些信息则是被操作系统拦截并封装成MSG类,然后再将信息发往相应的应用程序。        
        既然要发消息,那么就得先了解一下MSG的结构了。在WINUSER.H中,我们找到了MSG的定义:
         <div style="padding-right: 5.4pt; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; width: 98%; padding-top: 4px;">http://www.agoit.com/Images/OutliningIndicators/ExpandedBlockStart.gifhttp://www.agoit.com/Images/OutliningIndicators/ContractedBlock.giftypedef struct tagMSG http://www.agoit.com/Images/dot.gif{
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif    HWND        hwnd;
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif    UINT        message;
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif    WPARAM      wParam;
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif    LPARAM      lParam;
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif    DWORD       time;
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif    POINT       pt;
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif#ifdef _MAC
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif    DWORD       lPrivate;
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif#endif
http://www.agoit.com/Images/OutliningIndicators/ExpandedBlockEnd.gif} MSG, *PMSG, NEAR *NPMSG, FAR *LPMSG;
http://www.agoit.com/Images/OutliningIndicators/None.gif
页: [1]
查看完整版本: MFC全接触(二)