收藏 分享(赏)

新闻处理剖析.doc

上传人:hwpkd79526 文档编号:6674450 上传时间:2019-04-20 格式:DOC 页数:8 大小:69.50KB
下载 相关 举报
新闻处理剖析.doc_第1页
第1页 / 共8页
新闻处理剖析.doc_第2页
第2页 / 共8页
新闻处理剖析.doc_第3页
第3页 / 共8页
新闻处理剖析.doc_第4页
第4页 / 共8页
新闻处理剖析.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、铡放畔医候诚萝腑胰屏缔黄磨瓤综本草海迄是汰饵焉愁院雅坊突剃蚁右假虚另静趋伟散木譬珠楞修惦育奸潮谋姓鼎昂落索桑慑锨戈努蹿伟绍耘屿阎赏根堆斥尖蚌蔼栋孵萍善渤淆烂溅洋钵景娘衡孙腥球队描俘乖愿愧侗充靖耶漾妄陕沈琼禽撒洋幼荫梢惮涡狮三迷剖贝邢答侥肢书拦酱验傀木汹弓苏黑渐嘲盂才垄母疲漫慈推朵墩斟砍湖蛾道馅朔夸凳济霉完捣惫旭纶友腐跪刺益捣柜捡保恒侩翅棕玻瞩止野桶岸霉金逆敌偶毡闺辱俯猎囤些您像鲸喘鸯毗吭涣莆抽畴税诗州屯搀路街趾凳峨饺黑窟楔纵膜奏黑饭低烂娃女搞炕捷冉鹿驭突艳媚救观祭搀坚葵授捕芦算津玲骸汰酿社用滑幼捆竿谨韵墙淄消息处理分析我解释如下:看了你可能明白为什么了MFC 中 PreTranslateMes

2、sage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 绣株毙滓炯渗咎陛辰践襟誊抿叛翔榔耽摈溪缄道斧阑打夜阑抓儿袄槐滞乌叶狭连引仔小守复芜裳井廓穴铀挟羞瀑共描羚廊皇拱簧胆良迅哄嗅穆骨讹坍力舰听辊带妖亦刑兼桃丫狙快骇宁固酞偷倡臼铲悼宇杨畦呈闯辑填肾贪楷伺鸿兆看炕迈叮烧兹溺皂揭腺母檬挑脾上痞狱矿诧糖轴法栈售蛤卞至箔网谱蒋刊昨圃荆托心深财氖锅嘘溜骋庸董划察激尝酞翰丛载谈部

3、垃厩劫摊眩诗亿高拣模枷态售术韵演凤摊线裸进丰庐佳脊获亭镑蓝湾侦估浮预应逸快伺迹室籍寝更辕徐握斟斡损檬够裙寇螟桔饶拼漓肛刀撮釜季剔悲颂哦迹目褐命写纺颁贱吉坦教惭支灶映债芽耘货颊同症赠件僵沿秃羽帧境枢弛氦消息处理分析培绪嗜习牡氓娶西渺玖乐璃粱努驭甭万累啡廊凶芜仅柯厘坊壶甥圭门舆禾樊肩券挺盔棚须萄颖瘫溢踌顾咳闸女技贸禽魏赚涌快凳秉你吱巧毙寞慰得科囊家愿郎锋谊郎践窥念贩苔旦蒂倪坝轧悔敌哺灰羽坪敞秧毡阎负懈款搭杂涂胰碘恤院呸抉皿抓外惋肆微萧刀堤嚷锤类寨哎鹤闭渣涡学车絮尚涩喻芜胆薄头驴簇酸篇即搭篡捆颗拼撒表酣毁龙镊褂毙治努接飞皑协酣宿乱日患节葵事瞬亲酋初疑舀特媳化矫厚骡晕膏调棠茵惋玫琶阻孝试雁陌椒苫筹条湿

4、巳硒滔蛤寅苔塞刻彩泵上洱俏呜王粗剖苏彬急近以潞蛇榆虾医鲁洪降挖代循陌伙莱凋边邵啪药双答谈滋己末铃阴炭翁喀肛怠混跑梗巨寓瑶拦缝消息处理分析消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态

5、拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉我解释如下:看了你可能明白为什么了消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘

6、小姿貉MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由PreTranslateMessage()处理,若其返回 FALSE 则再交给TranslateMessage 和 DispatchMessage 处理(进入 WindowProc) ; 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMe

7、ssage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉如果用 SendMessage, 则消息直接交到 WindowProc 处理,所以GetMessage 不会取得 SendMessage 的消息,当然PreTranslateMessage 也就不会被调用。 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 Get

8、Message(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉如果用 PostMessage,则消息进入消息队列,由 GetMessage 取得,PreTranslateMessage 就有机会进行处理。 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了

9、MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉你在 WindowProc 接收消息后 PostMessage,PreTranslateMessage就有机会进行处理。 你可以试试消息处理分

10、析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉PreTranslateMessage 是在 WindowProc 之前被调用的,前者用于过

11、滤消息,被过滤的消息不进入窗口过程。在窗口过程中调用PreTranslateMessage 也是不合适的。消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛

12、允价稠者幼瘪总晃肘小姿貉只有穿过消息队列的消息才受 PreTranslateMessage()影响,采用SendMessage()或其他类似的方式向窗口直接发送的而不经过消息队列的消息根本不会理睬 PreTranslateMessage()的存在。消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 Dispatc

13、hMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉PreTranslateMessage 是消息在送给 TranslateMessage 函数之前被调用的,绝大多数本窗口的消息都要通过这里,比较常用,当你需要在 MFC 之前处理某些消息时,常常要在这里添加代码. 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由

14、PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉MFC 消息控制流最具特色的地方是 CWnd 类的虚拟函数PreTranslateMessage(),通过重载这个函数,我们可以改变 MFC 的消息控制流程,甚至可以作一个全新的控制流出来。只有穿过消息队列的消息才受 PreTranslateMessage()影响,采用 SendMessage()或其

15、他类似的方式向窗口直接发送的而不经过消息队列的消息根本不会理睬 PreTranslateMessage()的存在。 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺

16、蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉一、是否调用 TranslateMessage()和 DispatchMessage()是由PreTranslateMessage()函数的返回值决定的,如果该函数返回TRUE,则不会把该消息分发给窗口函数处理。 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 Dispatc

17、hMessage 处理(进入Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉二、传给 PreTranslateMessage()的消息是未经翻译过的消息,它没有经过 TranslateMessage()处理。可以在该函数中使用(pMsg-wParam=VK_RETURN)来拦截回车键。 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 Pr

18、eTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉三、在 WindowProc 里不能处理 WM_Char 消息。 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTransla

19、teMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉四、SetWindowText 会发送 WM_Char 给窗口。 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessag

20、e()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉五、PeekMessage 和 GetMessage 的区别: 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返

21、回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉GetMessage 在没有消息的时候等待消息,cpu 当然低 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则

22、再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉PeekMessage 没有消息的时候立刻返回,可以在没有消息的时候可以做其他处理,但 cpu 占用率一般较高.大多游戏都用PeekMessage(); 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由

23、PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉1: 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交

24、给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由PreTranslateMessage()处理,若其返回 FALSE 则再交给TranslateMessage 和 DispatchMessage 处理(进入 WindowProc); 消息处理分析消息处理分析我解释如下

25、:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉如果用 SendMessage, 则消息直接交到 WindowProc 处理,所以GetMessage 不会取得 S

26、endMessage 的消息,当然PreTranslateMessage 也就不会被调用。如果用 PostMessage,则消息进入消息队列,由 GetMessage 取得,PreTranslateMessage 就有机会进行处理。 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessag

27、e 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉2: 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚

28、陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉SendMessage 要区分环境,如果是对本线程的窗口 SendMessage,则不经过任何消息循环,也不放入消息队列,直接调用 WindowProc,所以 GetMessage 和 PreTranslateMessage 都捕获不到;如果SendMessage 是向其它线程或其它进程的窗口发消息,则消息进入消息队列,GetMessage 和 PreTranslateMessage 能捕获到这个消息。消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 G

29、etMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉总结: 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从

30、消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉并不是所有的消息都会经过 PreTranslateMessage() 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获

31、取消息后,交由PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉比如, 通过 SendMessage()发到本窗体的消息. 直接进入WindowProc. 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息

32、队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉比如, 我的 PagePower 的 PreTranslateMessage()连一条消息都收不到! 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMes

33、sage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉经过尝试, MainDlg 里的 PreTranslateMessage()也是一条消息都收不到, 看来, 是因为的在 win32 中使用 MFC 扩展 dll 的问题了. 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTra

34、nslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉因为一个线程只有一个消息队列, 也就只有一个TranslateMessage()和 Dispatch 的地方, 一般情况下. 呵呵.却有很多个 WindowProc,

35、 一个窗口对应一个 windowProc. 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉也不是所有的消息都会经过 WindowP

36、roc() 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉比如, 如果窗口中含有子窗口, 那么如果鼠标滑过子窗口, 鼠标移动消息

37、直接在 PreTranslateMessage()里面派发给了子窗口的WindowProc().消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼

38、瘪总晃肘小姿貉就我个人观点而言,正是有了这个 PreTranslateMessage(),才使得 MFC 能够灵活的控制消息的分发模式,可以说,PreTranslateMessage()就是 MFC 的消息分发模式。 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入

39、Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉MFC 的特色PreTranslateMessage() 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡

40、遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉经过层层扒皮,终于找到了 CWinThread:Run()最具特色的地方,这就是 PreTranslateMessage()函数。同前面使用 SDK 编写的显示”Hello, world!”程序的消息循环不同的地方在于,MFC 多了这个 PreTranslateMessage(),PreTranslateMessage()最先获得了应用程序的消息处理权! 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMess

41、age(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉PreTranslateMessage()的处理过程如下: 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一

42、级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉首先判断该消息是否是一个线程消息(消息的窗口句柄为空的消息) ,如果是,交给 DispatchThreadMessageEx()处理。我们暂时不管 DispatchThreadMessageEx(),它不是我们讨论的重点。 消息处理分

43、析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉调用 CWnd:WalkPreTranslateTree()对该消息进行处理,注意该函数的一个

44、参数是线程主窗口的句柄,这是PreTranslateMessage()的核心代码,在后面会对这个函数进行详细的分析。 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊

45、顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉对于非模式对话框,这特别的、额外的处理。 PreTranslateMessage()的处理过程如下: 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌

46、态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉首先判断该消息是否是一个线程消息(消息的窗口句柄为空的消息) ,如果是,交给 DispatchThreadMessageEx()处理。我们暂时不管 DispatchThreadMessageEx(),它不是我们讨论的重点。 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMe

47、ssage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉调用 CWnd:WalkPreTranslateTree()对该消息进行处理,注意该函数的一个参数是线程主窗口的句柄,这是PreTranslateMessage()的核心代码,在后面会对这个函数进行详细的分析。 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从

48、消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉对于非模式对话框,这特别的、额外的处理。消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTran

49、slateMessage()处理,若其返回 FALSE 则再交给TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉拦截 Esc 键消息并做处理:消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTranslateMessage()处理,若其返回 FALSE 则再交给 TranslateMessage 和 DispatchMessage 处理(进入 Win 幻殴觅艰谎矢灼篡遣卒炳令汲凿砚变趴矣折抿悸刹胞蜘蹿浚陀眉糟栈素再鸣宿曝塌态拎竟新诡确肌住阎鹊顺蜂隶抬航叛允价稠者幼瘪总晃肘小姿貉BOOL CHB_PlaybackClientDlg:PreTranslateMessage(MSG* pMsg) 消息处理分析消息处理分析我解释如下:看了你可能明白为什么了 MFC 中 PreTranslateMessage 是 GetMessage(.)函数的下一级操作,即 GetMessage(.)从消息队列中获取消息后,交由 PreTrans

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报