• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 224  文章 - 41  trackbacks - 0
            <2010年6月>
            303112345
            6789101112
            13141516171819
            20212223242526
            27282930123
            45678910

            享受編程

            常用鏈接

            留言簿(11)

            隨筆分類(lèi)(159)

            隨筆檔案(224)

            文章分類(lèi)(2)

            文章檔案(4)

            經(jīng)典c++博客

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            原文地址:http://www.wangchao.net.cn/bbsdetail_29511.html
            摘要:在前面我們分析了控件通知消息,和緊密聯(lián)系的還有一個(gè)新特性:消息反射。本文中,我想就這個(gè)問(wèn)題作一個(gè)全面的論述,如果有錯(cuò)誤,還望各路大蝦批評(píng)指正。

               什么是消息反射?
               在里面,子控件經(jīng)常向父控件發(fā)送消息,例如很多子控件要繪制自己的背景,就可能向父窗口發(fā)送消息。對(duì)于從子控件發(fā)來(lái)的消息,父控件有可能在處理之前,把消息返還給子控件處理,這樣消息看起來(lái)就想是從父窗口反射回來(lái)一樣,故此得名:消息反射。
               消息反射的由來(lái)
               在版本一下,父窗口(通常是一個(gè)對(duì)話(huà)框)會(huì)對(duì)這些消息進(jìn)行處理,換句話(huà)說(shuō),自控件的這些消息處理必須在父窗口類(lèi)體內(nèi),每當(dāng)我們添加子控件的時(shí)候,就要在父窗口類(lèi)中復(fù)制這些代碼,我們可以想象這是多么的復(fù)雜,代碼是多么的臃腫!
               我們可以想象,如果這些消息都讓父窗口類(lèi)去做,父窗口就成了一個(gè)萬(wàn)能的神,一個(gè)臃腫不堪的代碼機(jī),無(wú)論如何消息的處理都集中在父窗口類(lèi)中,會(huì)使父窗口繁重?zé)o比,但是子控件卻無(wú)事可做,并且代碼也無(wú)法重用,這對(duì)于一個(gè)程序員來(lái)講是多么痛苦的一件事?!
               在老版本的中,設(shè)計(jì)者也意識(shí)到了這個(gè)問(wèn)題,他們對(duì)一些消息采用了虛擬機(jī)制,例如:,這樣子控件就有機(jī)會(huì)控制自己的動(dòng)作,代碼的可重用性有了一定的提高,但是這還沒(méi)有達(dá)到大部分人的要求,所以在高版本的中,提出了一種更方便的機(jī)制:消息反射。
               通過(guò)消息反射機(jī)制,子控件窗口便能夠自行處理與自身相關(guān)的一些消息,增強(qiáng)了封裝性,同時(shí)也提高了子控件窗口類(lèi)的可重用性。不過(guò)需要注意的是:消息反射是實(shí)現(xiàn)的,不是實(shí)現(xiàn)的;要讓你的消息反射機(jī)制工作,你得類(lèi)必須從類(lèi)派生。
               中的處理
               如果想要處理消息反射,必須了解相應(yīng)的宏和函數(shù)原型。一般來(lái)講,是有一定的規(guī)律的,通常她在消息的前面加上一個(gè),然后再消息的最后加上 。例如我們前面提到的經(jīng)過(guò)處理后變成了則變成了
               凡事總會(huì)有例外,這里也是這樣,這里面有個(gè)例外:
               轉(zhuǎn)換成 
               轉(zhuǎn)換成 
               轉(zhuǎn)換成 
               對(duì)于函數(shù)原型,也必須是以 開(kāi)頭。
               利用添加消息反射
               中,打開(kāi)選擇項(xiàng)
               在下拉列表中選擇你要控制的類(lèi);
               中,選中相應(yīng)的類(lèi)名;
               一欄中找到前面帶有標(biāo)記的消息,那就是反射消息;
               雙擊鼠標(biāo)或者單擊添加按鈕,然后
               消息處理的過(guò)程
              子窗口向父窗口發(fā)送通知消息,激發(fā)父窗口去調(diào)用它的虛函數(shù)。大致的結(jié)構(gòu)如下
               
               
               file://hWndCtrl,發(fā)送窗口
               file://果子窗口已處理了此消息,返回
               
               
               
               
               
              聲明如下:
               它的主要任務(wù)就是調(diào)用發(fā)送窗口的
              聲明如下:
               調(diào)用發(fā)送窗口的虛函數(shù)函數(shù),進(jìn)行處理。 如果發(fā)送窗口沒(méi)有進(jìn)行重載處理,則調(diào)用函數(shù)進(jìn)行標(biāo)準(zhǔn)的反射消息的消息映射處理。
               使用的一個(gè)例子
               這里面我們舉一個(gè)簡(jiǎn)單的例子,希望大家能夠更清晰的掌握消息反射機(jī)制。
               創(chuàng)建一個(gè)基于對(duì)話(huà)框的工程。
               利用向?qū)?chuàng)建一個(gè)新的類(lèi):,基類(lèi)是
               頭文件中加入個(gè)成員變量:
               
              
              
               利用向?qū)г谄渲屑尤?/font>(看到了么,前面是不是有一個(gè)?),并且將它的函數(shù)體改為:
               
               
               
               
               
               
               同時(shí)我們?cè)?font face=瀹?huà)浣?.cpp
            文件中會(huì)看到,這就是我們所說(shuō)的經(jīng)過(guò)處理的宏,是不是很符合規(guī)則?
               在對(duì)話(huà)框中加入一個(gè),增加一個(gè)關(guān)聯(lián)的變量,選擇屬性,類(lèi)別為
               在對(duì)話(huà)框文件中加入,運(yùn)行,看到了什么?呵呵。

            代碼下載

            posted on 2009-12-11 09:13 漂漂 閱讀(254) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 深入vc++
            国产亚洲欧美成人久久片 | 欧美噜噜久久久XXX| 国产69精品久久久久9999APGF| 久久久久久伊人高潮影院| 久久99国产综合精品免费| 国产精品免费看久久久香蕉| 久久人人超碰精品CAOPOREN| 人妻精品久久无码区| 欧美亚洲另类久久综合| 久久国产欧美日韩精品| 国产香蕉97碰碰久久人人| 亚洲AV无码一区东京热久久| 久久久久国产一区二区三区| www.久久99| 亚洲女久久久噜噜噜熟女| 欧美一级久久久久久久大片| 69久久夜色精品国产69| 亚洲AV日韩精品久久久久| 久久噜噜久久久精品66| 欧美久久精品一级c片片| 伊人久久大香线蕉综合影院首页 | 久久天天躁狠狠躁夜夜躁2O2O| 99热精品久久只有精品| 久久婷婷五月综合色高清| 2021国产精品午夜久久| 久久伊人五月天论坛| 国产精品内射久久久久欢欢| 国产精品久久国产精品99盘| 日产精品久久久久久久性色| 久久午夜夜伦鲁鲁片免费无码影视 | 久久综合久久鬼色| 国产精品狼人久久久久影院| 久久精品国产一区二区三区日韩| 青草国产精品久久久久久| 日韩AV无码久久一区二区 | 久久人妻无码中文字幕| 久久久久亚洲av成人网人人软件| 久久国产精品无| 久久久久亚洲av成人网人人软件| 亚洲中文字幕无码久久2017| 日日躁夜夜躁狠狠久久AV|