再读MFC的消息机制

      这些天又在使用MFC写程序,抽空重读了一下《深入浅出MFC》,同时对照着程序又循着消息传递路线走了一遍,就是侯杰老师说的“二万五千里长征”。这里想说一点自己的体会。

    

      在之前学习MFC是深刻感叹消息机制的精巧,通过宏定义就可以形成一张消息映射网,同时将FrameViewDocumentApp全部链接起来。而今日在看MFC消息机制感觉复杂无比,觉得它的设计很不符合面向对象的思想。CWinApp,CWnd,CDocument都继承自CCmdTargetCCmdTarget实现对WM_COMMAND类型的消息在消息映射表中的遍历,CWnd用来区分WM_COMMAND消息,并对非WM_COMMAND消息在消息映射表中实现从基类到父类的遍历。

      

       消息到来时,记录消息来源地this指针类型,然后调用CWnd::WindowProc函数来开始消息传递,如果是WM_COMMAND消息这转入CFrameWnd::OnCmdMsg中设计的  CView   CWnd  CWinApp之路

      在进入CView之后再转入CView::OnCmdMsg设计的CWnd  CDocument之路

      而CViewCDocumentCWndCWinApp最终都要调用CCmdTarget::OnCmdMsg实现对WM_COMMAND消息从基类到父类的推送。有空再研究下Spring的消息机制和QT的消息机制,希望不想MFC这般复杂。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值