本站首页    管理页面    写新日志    退出

首页(46) 其它(20) VC++学习(17) 程序员(5) 音乐欣赏(3) 


Ashes to ashes Dust to dust
 
 ♀最新日志                                                        ♀最新回复                                  
[转]乐到我抽筋儿的几个极品笑话
PAYPAL的奇怪问题
第一次尝试
递归
明天交毕业设计中期报告了
等到googlepage了
GTalk和Gmail
修好了鼠标!
是不是中毒了?
有Windows Live Messen
回复:google打不开了
回复:《精通MFC》——第二章(III)
回复:《精通MFC》——第二章(III)
回复:《精通MFC》——第二章(III)
回复:理查得·克莱德曼 的经典钢琴曲
回复:理查得·克莱德曼 的经典钢琴曲
回复:理查得·克莱德曼 的经典钢琴曲
回复:修好了鼠标!
回复:理查得·克莱德曼 的经典钢琴曲
回复:理查得·克莱德曼 的经典钢琴曲
«October 2025»
1234
567891011
12131415161718
19202122232425
262728293031
 
 

[VC++学习]《精通MFC》——第三章(III)
读书笔记

LRESULT CWnd::WindowProc(UINT message, WPARAM      wParam,                                                                      LPARAM,lParam)              {                     //OnWndMsg 做了实际的消息处理                     LRESULT lResult = 0;                     If  (!OnWndMsg(message, wParam, lParam, &lResult))                            lResult = DefWindowProc(message, wParam, lParam);                     return lResult;              }              WindowProc把消息传递给OnWndMsg处理,OnWndMsg没有处理的消息       最终传递给默认的消息处理函数CWnd::DefWindowProc。                OnWndMsg              OnWndMsg承担了绝大部分消息处理的任务。                           演示代码:               P88                OnCommand              OnCommand的实现代码:                     演示代码:               P89                 ReflectLastMsg              bool PASCAL CWnd::ReflectLastMsg(HWND hWndChild, LRESULT*                                                                                 pResult)              {                     //省略了其他代码                     //找要通知的子窗口                     ASSERT(pWnd != NULL)                     //发送Notify消息                     return pWnd->SendChildNotifyLastMsg(pResult);                   }              消息反射的本质就是调用控件子窗口的SendChildNotifyLastMsg成员处理  最后一条消息。SendChildNotifyLastMsg成员内部调用OnChildNotify处理父窗    口反射回来的消息:              bool CWnd::SendChildNotifyLastMsg(LRESULT* pResult)              {                     _AFX_THREAD_STATE* pThreadState = _afxThreadState.GetData();                          return OnChildNotify(pThreadState->m_lastSentMsg.message,                                                                 pThreadState->m_lastSentMsg.wParam,                                                 pThreadState->m_lastSentMsg.lParam, pResult);              }              如果继续追踪OnChildNotify,会发现它调用了ReflectChildNotify:              bool CWnd::OnChildNotify(UINT uMsg, WPARAM wParam, LPARAM                                                                  lParam, LRESULT* pResult)              {                     //其他代码                     return ReflectChildNotify(uMsg, wParam, lParam, pResult);                   }                ReflectChildNotify具体负责处理父窗口反射给自身的消息。 ReflectChildNotify将反射的消息分成四类进行处理。第一类是普通的窗口消息,      这类消息的标志+WM_REFLECT_BASE构成新的消息标记,然后通过      OnWndMsg处理新消息。第二类是WM_COMMAND消息(命令消息),该消  息+WM_REFLECT_BASE构成新的消息标记,用OnCmdMsg处理该消息。第     三类是WM_NOTIFY消息,该消息标志+WM_REFLECT_BASE构成新的消息      标记,用OnCmdMsg处理该消息。第四类是WM_CTLCOLOR类的消息,这   些消息转化为OCM_CTLCOLOR消息,用OnWndMsg处理新消息。具体处理 参见下面的代码:演示代码:               P91                OnNotify              OnNotify负责处理WM_NOTIFY消息。它首先从通知消息参数中取得控         件ID、控件窗口句柄;接下来将把该消息反射给控件,以优先控件处理。如果   控件没有处理该消息,则以控件ID为命令ID,将该消息作为命令由OnCmdMsg  来处理:演示代码:               P93

 

00oo.. 发表于 2005/11/8 17:31:47

阅读全文(3322) | 回复(0) | 编辑 | 精华



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
 
♀链接


AoGo汇编小站: http://www.aogosoft.com/

CSDN:        http://www.csdn.net/

编程爱好者:   http://www.programfan.com/

阿蒙编程之家: http://www.vchome.net/

看雪学院:     http://www.pediy.com

VC开发指南:http://www.copathway.com

 

♀留言板                                                             ♀Blog信息

签写新留言

人生需要加油!
MSN LIVE messager邀请
我加你了google talk
blog名称:00oo..
日志总数:46
评论数量:228
留言数量:2
访问次数:393243
建立时间:2004年11月6日
用户名称:
登陆密码:
密码保存:



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144786471 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号