青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

一步一步實(shí)現(xiàn)自己的模擬控件(5)——隱藏類

 

隱藏驅(qū)動(dòng)類:

為了讓用戶有更簡單的使用接口,我們需要把不必要的東西進(jìn)行一定的隱藏。前面我就提到WidgetDriver對(duì)于用戶來說是不關(guān)心的東西,那么我們就將其進(jìn)行隱藏。

  方案1:

  將WidgetDriver放到Widget.cpp中,這樣的隱藏方式是最嚴(yán)密的,對(duì)于用戶來說完全看不到WidgetDriver。但是隨著我們的實(shí)現(xiàn)膨脹,這會(huì)讓我們的Widget.cpp變得非常臃腫。

  方案2:

  不改變文件結(jié)構(gòu),將WidgetDriver私有化,通過友元聲明使得只有Widget類對(duì)象能夠訪問WidgetDriver。這樣用戶雖然能夠看到WidgetDriver這個(gè)類定義,但是卻無法使用,這樣對(duì)于代碼的結(jié)構(gòu)組織也更有利。

我采用了方案2

class Driver_{
friend
class Widget;

DriverImpl_
* pImpl_;

private:
explicit Driver_(HWND hWnd);
~Driver_();
Driver_(
const Driver_&);
Driver_
& operator =(const Driver_&);

private:
void SetRootWidget(Widget* pRootWidget);
HWND GetContainerWindow()
const;
Widget
* GetRootWidget() const;
};

 

因?yàn)槲覀冸[藏了WidgetDriver,那么它的職能就能夠進(jìn)行簡化。前面提到的根控件和WidgetDriver之間的關(guān)系我們就能夠改為當(dāng)方面控制了。于是我將WidgetDriver放到了根控件中進(jìn)行管理,我們只需要操作根控件便可。

Widget::Widget(HWND hWnd)
: pImpl_(
new WidgetImpl)
{
pImpl_
->pDriver = new widget::Driver_(hWnd);
pImpl_
->pDriver->SetRootWidget(this);
}

Widget::
~Widget()
{
if (IsRoot())
{
delete pImpl_
->pDriver;
}
delete pImpl_;
}

 

前面我們都沒有提到應(yīng)該何時(shí)結(jié)束我們的系統(tǒng),但是我們的系統(tǒng)生命周期和窗口是息息相關(guān)的,在窗口銷毀的時(shí)候那么和這個(gè)窗口相關(guān)聯(lián)的控件體系就應(yīng)該銷毀。于是我們對(duì)消息過濾器做了一點(diǎn)點(diǎn)改動(dòng):

LRESULT MessageFilter::Filter(const Param& param, Widget* pRootWidget)
{
assert(param.originalProc);
assert(pRootWidget);
#ifdef _DEBUG
std::stringstream ss;
ss
<<"窗口消息: "<<std::showbase<<std::hex<<param.message<<" 進(jìn)入Widget消息過濾!\r\n";
::OutputDebugStringA(ss.str().c_str());
#endif // _DEBUG

LRESULT ret
= ::CallWindowProc(
param.originalProc,
param.hWnd,
param.message,
param.wParam,
param.lParam);

if (WM_DESTROY == param.message)
{
// 銷毀根控件
pRootWidget->Destroy();
}

return ret;
}
我們?cè)诮邮盏絎M_DESTROY窗口消息的時(shí)候銷毀根控件,根控件析構(gòu)的時(shí)候又會(huì)銷毀控件驅(qū)動(dòng),控件驅(qū)動(dòng)析構(gòu)的時(shí)候會(huì)解除和窗口的關(guān)聯(lián)。

 

下一步我們便要開始對(duì)我們的控件進(jìn)行設(shè)計(jì)了,我們自始至終都將控件抽象為窗口客戶區(qū)的一個(gè)區(qū)域,所以說我們并不打算使用繼承來擴(kuò)展控件。后面會(huì)看到我們使用插入式的擴(kuò)展,這樣的方式具備動(dòng)態(tài)替換的能力甚至還能將一個(gè)擴(kuò)展共享給多個(gè)控件使用。

下載測(cè)試工程源碼

作者: Evil.Ghost 發(fā)表于 2011-04-07 20:55 原文鏈接

評(píng)論: 0 查看評(píng)論 發(fā)表評(píng)論


最新新聞:
· 蘋果iPad 2通過3C認(rèn)證 最晚5月國內(nèi)上市(2011-04-10 09:18)
· 盲目依賴iPhone等工具導(dǎo)航 英國驢友迷路多(2011-04-10 09:14)
· 趣談:想擔(dān)任CEO的話,最好是去蘋果工作,其次是微軟,再才是Google(2011-04-10 08:26)
· 騰訊將建立新數(shù)據(jù)中心,規(guī)模為蘋果的兩倍(2011-04-10 08:25)
· 輕量化的微型博客Tumblr(2011-04-10 08:03)

編輯推薦:非戰(zhàn)之罪,從永中Office談起

網(wǎng)站導(dǎo)航:博客園首頁  我的園子  新聞  閃存  小組  博問  知識(shí)庫

posted on 2011-04-07 20:55 EvilGhost 閱讀(1164) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿

隨筆檔案(12)

文章檔案(1)

最新隨筆

搜索

積分與排名

最新隨筆

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            麻豆av一区二区三区| 亚洲一级二级在线| 欧美日韩三区四区| 亚洲欧美日韩在线播放| 性欧美在线看片a免费观看| 狠狠久久综合婷婷不卡| 欧美激情中文字幕一区二区| 欧美精品一区在线发布| 欧美日韩www| 日韩视频在线永久播放| 亚洲免费婷婷| 伊人夜夜躁av伊人久久| 亚洲精品国久久99热| 国产精品高潮呻吟久久av无限| 欧美资源在线观看| 久久中文在线| 一区二区免费在线视频| 午夜精品美女自拍福到在线 | 国产精品久久久久久久第一福利| 欧美一区二区高清| 久久蜜桃资源一区二区老牛| 亚洲美女电影在线| 亚洲免费在线播放| 老司机精品久久| 欧美一区永久视频免费观看| 国产精品美女诱惑| 亚洲成色最大综合在线| 亚洲精品欧美一区二区三区| 国产日韩欧美| 亚洲国产婷婷香蕉久久久久久99| 久久精品国产91精品亚洲| 亚洲精品日韩在线| 亚洲综合国产激情另类一区| 亚洲国产另类久久久精品极度| 夜夜嗨av色一区二区不卡| 韩国av一区二区| 亚洲精品少妇| 红桃av永久久久| 一本到高清视频免费精品| 久久国产黑丝| 亚洲国产精品久久久久婷婷884| 久久综合激情| 国产精品成人免费| 蜜桃av一区二区三区| 欧美午夜在线| 欧美激情第三页| 国产一区二区三区四区三区四| 亚洲激情小视频| 国产综合精品| 一区二区三区免费观看| 亚洲国产第一| 亚洲综合日韩在线| 日韩亚洲不卡在线| 久久免费视频这里只有精品| 亚洲制服丝袜在线| 午夜一区在线| 一区二区三区色| 麻豆精品网站| 久久精品国产亚洲精品| 欧美香蕉视频| 最新国产成人av网站网址麻豆| 欧美第一黄色网| 久久野战av| 国产精品日韩欧美一区| 99视频热这里只有精品免费| 久久久91精品国产一区二区三区| 亚洲一级二级在线| 欧美国产精品| 免费视频一区| 国内精品视频在线播放| 亚洲视屏一区| 噜噜噜噜噜久久久久久91| 久久精品国产99国产精品澳门| 欧美日韩综合视频| 亚洲精品一区二区三区婷婷月| 亚洲国产另类久久久精品极度| 欧美中文字幕在线观看| 欧美亚洲三级| 国产精品白丝av嫩草影院 | 国产精品第一页第二页第三页| 亚洲第一页在线| 欧美日韩亚洲91| 亚洲国产91| 亚洲黑丝一区二区| 久久人91精品久久久久久不卡| 久久久久久噜噜噜久久久精品| 国产精品日日做人人爱| 在线亚洲观看| 亚洲一区二区三区免费观看| 欧美日本乱大交xxxxx| 亚洲国产裸拍裸体视频在线观看乱了 | 国产精品中文在线| 中文欧美在线视频| 欧美在线你懂的| 亚洲午夜激情在线| 欧美日韩亚洲高清| 99国内精品久久久久久久软件| 欧美激情女人20p| 亚洲日本欧美日韩高观看| 久久免费视频在线观看| 欧美va亚洲va日韩∨a综合色| 一区二区亚洲| 亚洲一区二区三区四区五区黄 | 欧美日韩成人一区二区| 亚洲国产欧美一区二区三区同亚洲| 亚洲国产精品成人精品| 免费中文日韩| 亚洲激情啪啪| 一区二区三区四区五区视频 | 午夜精品一区二区三区在线视| 国产精品多人| 亚洲一区在线视频| 久久www成人_看片免费不卡| 国产日韩一区二区三区| 久久成人av少妇免费| 久久天堂精品| 亚洲国内自拍| 欧美日本一道本在线视频| 久久久噜噜噜久久狠狠50岁| 国内久久婷婷综合| 久久伊人亚洲| 亚洲国产精品久久久久婷婷老年 | 欧美大片专区| 日韩视频久久| 欧美一区二区免费视频| 国内精品久久久久久久97牛牛| 久久久久久欧美| 91久久久久久国产精品| 久久精品一区二区| 欧美激情视频一区二区三区免费| 日韩视频―中文字幕| 国产精品麻豆欧美日韩ww| 西瓜成人精品人成网站| 欧美成人影音| 中文国产一区| 国产欧美亚洲日本| 久久午夜色播影院免费高清| 最近看过的日韩成人| 亚洲综合国产| 激情久久综合| 欧美精品一区二区三区久久久竹菊| 亚洲午夜精品久久久久久app| 久久久久久一区| 亚洲九九精品| 国产精品亚洲综合天堂夜夜| 久久久www免费人成黑人精品 | 一本色道88久久加勒比精品 | 欧美一区二区在线| 极品裸体白嫩激情啪啪国产精品| 亚洲欧美日韩精品久久久| 久久一区二区三区国产精品| 亚洲伦伦在线| 国产精品久久久一区二区| 久久久久久穴| 一区二区日韩欧美| 久久一区二区三区av| 一区二区三区国产| 国产一区视频观看| 欧美精品亚洲一区二区在线播放| 亚洲欧美偷拍卡通变态| 日韩一区二区久久| 欧美激情一区二区三区四区| 亚洲欧美日韩一区二区| 亚洲国产精品美女| 欧美在线看片| 亚洲免费播放| 韩国女主播一区二区三区| 欧美日韩一级片在线观看| 午夜久久影院| 亚洲乱码一区二区| 麻豆精品网站| 午夜精品久久久久久久蜜桃app| 亚洲黄色成人网| 国产日韩欧美精品在线| 欧美日本不卡高清| 久久久www成人免费无遮挡大片 | 一本色道久久88综合亚洲精品ⅰ| 亚洲国产欧美另类丝袜| 国产精品影视天天线| 欧美精品日日鲁夜夜添| 久久精品99无色码中文字幕| 一区二区日韩精品| 亚洲盗摄视频| 久久免费黄色| 午夜精品久久久99热福利| 亚洲精品在线一区二区| 欧美精品网站| 久久婷婷色综合| 亚洲欧美日本国产专区一区| 亚洲精品欧美日韩专区| 欧美va亚洲va香蕉在线| 久久精品道一区二区三区| 亚洲视频一区在线| 亚洲人成人一区二区三区| 狠狠色丁香婷婷综合影院| 国产精品日韩欧美综合 | 欧美体内谢she精2性欧美 | 欧美国产日韩一区| 久久久久久久一区| 亚洲欧美中文另类|