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

隨筆-162  評論-223  文章-30  trackbacks-0
   WTL是窗口模板庫(Windows Library Template)的簡稱,是一套輕量級C++ GUI庫,因為它使用了C++模板封裝了窗口界面操作API和消息映射處理,它擴展了ATL中的UI窗口部分,并支持如下更多的功能特性:
    (1)   對話框和通用控件:包括對話框數據交換(DDX),子類化,控件消息通知與反射等
    (2)   工具欄和狀態欄:包括工具條UI狀態更新,多窗格狀態條及UI狀態更新等
    (3)   分隔窗口:包括窗格容器,嵌套分隔,特殊繪制等
    (4)   屬性頁和向導:包括屬性表,普通屬性頁,向導屬性頁等
    (5)   GDI類等:包括GDI封裝類,通用對話框等
    (6)   使用ActiveX控件:包括使用控件類,調用控件的方法,控件事件映射處理等
    (7)   高級對話框UI類:包括自繪和外觀定制類,新控件類,控件UI狀態更新,對話框數據驗證DDV等
    (8)   支持拖放操作:包括拖放接口實現類,最近使用文件列表等
   綜上所述,使用WTL幾乎可以實現MFC所能實現的功能與界面,而且生成的執行文件體積更小,不需要動態鏈接庫就可直接快速地執行。

   根據WIN32窗口原理,當事件發生的時候,一般由父窗口接收其子窗口或控件的通知或命令消息,在這里父窗口是消息接收者,子窗口或控件是消息發送者,那么誰是消息處理者呢?實際上由誰來處理消息只是代碼上的邏輯,既可以在父窗口的窗口過程回調內處理,也可以在子窗口或控件的窗口過程回調內處理,在哪處理更方便合理就在哪處理,如果是在子窗口或控件窗口過程回調內處理,那么就需要作額外的處理了,也就是在父窗口中將消息反射給發送者,進而再由發送者處理。下面以父窗口為打開文件對話框,雙擊它的列表視圖控件為例,給出運用上面(1)中的控件消息通知與反射來處理NM_DBLCLK消息的兩種實現方式。

   繼承方式:由控件處理消息
   從CWindowImpl模板基類派生一個子窗口或控件子類即listview子類,添加消息映射項和消息處理函數,消息映射項用REFLECTED_NOTIFY_XXX或REFLECTED_COMMAND_XXX系列反射宏實現,具體使用哪個宏,決定于是否通知或命令消息,及消息對應的ID和通知碼。
1class CFileListViewCtrl : public CWindowImpl<CFileListViewCtrl, CListViewCtrl>
2{
3 protected:
4      BEGIN_MSG_MAP(CFileListViewCtrl)
5          REFLECTED_NOTIFY_CODE_HANDLER_EX(NM_DBLCLK,OnListViewDblclk)   //反射通知消息處理宏
6          CHAIN_MSG_MAP(CListViewCtrl)
7     END_MSG_MAP()
8    LRESULT OnListViewDblclk(NMHDR* pNMHDR);   //消息響應處理函數
9}
;
   
   在父窗口類消息映射鏈中最后添加反射通知宏REFLECT_NOTIFICATIONS()項。                                           
 1class COpenFileDlg : public CDialogImpl<COpenFileDlg>  ,  public CWinDataExchange<COpenFileDlg>
 2{
 3public:
 4   COpenFileDlg();
 5   ~COpenFileDlg();
 6  enum  { IDD = IDD_OPEN_FILE_DLG };
 7
 8protected:
 9     BEGIN_MSG_MAP(COpenFileDlg)
10            MESSAGE_HANDLER(WM_INITDIALOG,OnInitDialog) 
11            REFLECT_NOTIFICATIONS()      //消息反射通知宏
12     END_MSG_MAP()
13    
14     BEGIN_DDX_MAP(COpenFileDlg)
15           DDX_CONTROL(IDC_LIST_FILE,m_list_File)
16     END_DDX_MAP()
17
18     LRESULT OnInitDialog(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL& bHandle);
19     
20private:
21    CFileListViewCtrl  m_list_File;    //使用派生類實例作為成員變量
22}
;

 成員方式:由父窗口處理消息 
   直接使用ATL中的包含窗口模板類CContainedWindowT,參數為子控件的類名即listviewctrl,實例化為父窗口類的一個成員變量,在父窗口類消息映射鏈中添加ALT_MSG_MAP宏來實現消息分派,其參數為分派ID,這個ID為成員變量初始化時指定的常量;添加反射通知宏REFLECT_NOTIFICATIONS(),注意ALT_MSG_MAP宏必須在反射通知宏REFLECT_NOTIFICATIONS之后。  
 1class COpenFileDlg : public CDialogImpl<COpenFileDlg> ,  public CWinDataExchange<COpenFileDlg>
 2{
 3    public:
 4        COpenFileDlg();
 5       ~COpenFileDlg();
 6  enum  { IDD = IDD_OPEN_FILE_DLG };
 7 
 8  protected:
 9     BEGIN_MSG_MAP(COpenFileDlg)
10          MESSAGE_HANDLER(WM_INITDIALOG,OnInitDialog) 
11          REFLECT_NOTIFICATIONS()           //  消息反射通知宏
12          ALT_MSG_MAP(1)                             //  消息分派宏
13          REFLECTED_NOTIFY_CODE_HANDLER_EX(NM_DBLCLK,OnListViewDblclk)     //  反射通知消息處理宏
14     END_MSG_MAP()
15
16     BEGIN_DDX_MAP(COpenFileDlg)
17           DDX_CONTROL(IDC_LIST_FILE,m_list_File)
18     END_DDX_MAP()
19
20     LRESULT OnInitDialog(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL& bHandle);
21     LRESULT OnListViewDblclk(NMHDR* pNMHDR);            //消息響應處理函數
22  private:
23    CContainedWindowT<CListViewCtrl>   m_list_File;    //  實例化包含窗口模板類作為成員變量
24 }
;

   在父窗口內需要初始化m_list_File以指定分派ID號。                                                               
1COpenFileDlg:: COpenFileDlg():
2m_list_File(this,1)     // 指定消息分派ID為1
3{  
4}
posted on 2010-06-14 17:50 春秋十二月 閱讀(6060) 評論(0)  編輯 收藏 引用 所屬分類: C/C++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久不射中文字幕| 欧美电影在线| 亚洲欧美日韩另类| 欧美激情中文字幕在线| 欧美中文字幕在线播放| 国产精品久久久久久久9999 | 国产精品亚洲综合| 一区二区三区四区五区精品| 欧美二区在线播放| 六十路精品视频| 永久久久久久| 嫩草影视亚洲| 久久最新视频| 久久精品女人的天堂av| 欧美亚洲一区二区在线观看| 国产精品久久久久免费a∨| 一区二区三区精品| 一片黄亚洲嫩模| 国产精品av久久久久久麻豆网| 亚洲免费观看在线观看| 亚洲日本无吗高清不卡| 欧美国产精品一区| 在线视频免费在线观看一区二区| 亚洲精选国产| 国产精品日韩一区二区三区| 欧美在线高清| 久久午夜激情| aa级大片欧美三级| 亚洲午夜精品17c| 国产视频一区欧美| 久久综合狠狠综合久久综合88| 久久性天堂网| 亚洲视频在线观看三级| 亚洲一区中文字幕在线观看| 国产一区二区三区奇米久涩 | 亚洲主播在线| 午夜日韩激情| 亚洲三级性片| 午夜久久电影网| 亚洲韩日在线| 亚洲一区在线播放| 亚洲电影免费在线观看| 夜夜嗨av一区二区三区免费区| 国产欧美韩国高清| 亚洲国产视频一区| 国产日韩欧美另类| 欧美电影在线观看完整版| 国产精品久久91| 欧美激情亚洲激情| 国产女同一区二区| 日韩视频免费在线观看| 激情综合中文娱乐网| 亚洲美女毛片| 亚洲国产精品久久久久婷婷884| 一区二区三区高清不卡| 亚洲高清中文字幕| 午夜在线电影亚洲一区| 99国产欧美久久久精品| 久久久精品动漫| 亚洲欧美日韩直播| 欧美福利视频一区| 久久亚洲综合色| 国产精品外国| 一区二区三区黄色| 亚洲日韩成人| 久久久久久婷| 久久久www成人免费无遮挡大片| 欧美日韩亚洲一区二区三区四区| 久久先锋影音| 国产一区二区精品丝袜| 亚洲一区二区3| 亚洲色在线视频| 欧美美女操人视频| 亚洲国产欧美一区| 老司机成人在线视频| 国产日韩av一区二区| 亚洲精品亚洲人成人网| 精品999久久久| 亚欧美中日韩视频| 欧美一区二区三区在| 国产精品久久99| 亚洲性视频网址| 亚洲一区二区三区乱码aⅴ| 欧美大片在线看| 亚洲国产精品成人精品| 亚洲国产另类久久精品| 久久只精品国产| 欧美va亚洲va香蕉在线| 在线观看成人一级片| 久久久久久一区| 欧美成人精品在线视频| 在线成人激情视频| 葵司免费一区二区三区四区五区| 玖玖玖国产精品| 亚洲国产国产亚洲一二三| 久久影视三级福利片| 免费亚洲一区| 亚洲人成人一区二区在线观看| 欧美a级片一区| 亚洲精品日韩激情在线电影| 夜夜狂射影院欧美极品| 欧美日韩国产一区二区| 在线视频你懂得一区二区三区| 亚洲欧美日本伦理| 国产日韩精品一区二区三区在线| 欧美在线视频免费| 美国成人直播| 99ri日韩精品视频| 欧美色视频一区| 亚洲欧美一区二区三区久久| 久久精品视频在线播放| 亚洲第一精品福利| 欧美日韩成人一区| 亚洲影院色无极综合| 久久亚洲欧美国产精品乐播| 亚洲经典一区| 国产精品视频免费| 久久亚洲捆绑美女| 99精品免费视频| 久久久综合精品| 99热这里只有精品8| 国产精品播放| 久久综合九色综合欧美狠狠| 日韩系列在线| 久久久五月婷婷| 日韩视频二区| 国内成+人亚洲+欧美+综合在线| 免费影视亚洲| 亚洲免费在线播放| 亚洲国产美女| 久久久精品国产免费观看同学| 日韩视频一区二区三区在线播放免费观看 | 日韩视频中文| 久久久久久久999| 夜夜嗨av一区二区三区免费区| 国产情人节一区| 欧美精品久久久久久久| 亚洲一区二区三区乱码aⅴ| 伊人影院久久| 国产精品区一区| 欧美成人一区在线| 欧美一区二区视频在线观看2020| 亚洲第一在线视频| 欧美在线免费看| 宅男在线国产精品| 亚洲国产精品悠悠久久琪琪| 国产精品一区一区| 欧美日韩国产区一| 麻豆精品网站| 久久高清国产| 亚洲欧美日韩一区在线| 99热这里只有精品8| 亚洲黄色天堂| 欧美国产日本高清在线| 久久国产精品72免费观看| 亚洲综合色激情五月| 9久草视频在线视频精品| 亚洲激情视频在线播放| 精品动漫3d一区二区三区免费版 | 亚洲成色最大综合在线| 国产日本欧美一区二区三区在线 | 欧美特黄视频| 欧美激情一区三区| 免费的成人av| 久久阴道视频| 麻豆成人精品| 蜜臀av国产精品久久久久| 久久国产高清| 久久久久综合网| 久久亚洲影院| 美女网站在线免费欧美精品| 久久一区二区三区国产精品| 久久精品人人做人人爽电影蜜月| 午夜电影亚洲| 欧美一区二区视频97| 欧美亚洲综合在线| 欧美在线观看视频一区二区| 午夜在线a亚洲v天堂网2018| 午夜精品免费在线| 欧美一级专区免费大片| 欧美一区二区播放| 久久国产精品一区二区三区四区| 欧美一区在线视频| 久久人人爽爽爽人久久久| 开心色5月久久精品| 欧美xart系列高清| 欧美另类亚洲| 国产精品入口尤物| 国产一区在线观看视频| 在线看欧美日韩| 亚洲免费av电影| 亚洲欧美在线x视频| 久久精品夜夜夜夜久久| 久久野战av| 亚洲国产专区| 99精品国产福利在线观看免费 | 欧美日韩中文字幕在线| 国产精品欧美日韩一区二区| 国产有码在线一区二区视频| 亚洲成人原创|