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

隨筆-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>
            亚洲精选国产| 欧美一区二区三区视频| 亚洲另类视频| 亚洲国内自拍| 国产一区久久| 国产亚洲aⅴaaaaaa毛片| 欧美亚韩一区| 国产精品日本精品| 国模精品一区二区三区| 国产欧美日韩视频| 在线精品国产成人综合| 亚洲欧洲偷拍精品| 亚洲欧美日韩综合一区| 久久精品亚洲一区二区| 美国十次了思思久久精品导航| 老巨人导航500精品| 欧美日精品一区视频| 国产精品尤物福利片在线观看| 国产拍揄自揄精品视频麻豆| 激情另类综合| 性色一区二区| 亚洲精选一区二区| 午夜精品国产| 国产精品扒开腿做爽爽爽视频| 亚洲成色精品| 久久亚洲精选| 午夜在线视频观看日韩17c| 欧美精品黄色| 亚洲国产成人精品视频| 欧美一区午夜精品| 日韩午夜剧场| 欧美日韩精品免费观看视频| 亚洲第一黄色| 牛人盗摄一区二区三区视频| 性亚洲最疯狂xxxx高清| 国产精品揄拍一区二区| 亚洲综合电影| 午夜国产不卡在线观看视频| 欧美日韩a区| 亚洲私人影吧| 亚洲一区二区在线视频 | 亚洲欧美日韩国产| 日韩视频免费在线观看| 国产精品v欧美精品v日韩| 一区二区三区欧美| 亚洲在线中文字幕| 极品少妇一区二区三区精品视频| 久久久亚洲影院你懂的| 狂野欧美一区| 亚洲国产精品va在线看黑人 | 亚洲国产欧美一区二区三区丁香婷| 亚洲女性裸体视频| 一区二区在线视频观看| 最新亚洲电影| 国产亚洲欧美日韩美女| 欧美高清不卡| 国内一区二区三区| 亚洲精品在线观看视频| 国产一区999| 在线亚洲美日韩| 伊伊综合在线| 性欧美精品高清| 亚洲视频视频在线| 欧美激情欧美狂野欧美精品| 久久久无码精品亚洲日韩按摩| 欧美日韩一区二区高清| 欧美大色视频| 激情一区二区三区| 久久精品国产999大香线蕉| 亚洲午夜在线观看视频在线| 久久亚裔精品欧美| 久久一区二区三区国产精品| 国产精品亚洲综合色区韩国| 99视频一区| 久久成人一区二区| 国内精品视频在线播放| 久久精品国产清高在天天线 | 亚洲成人在线网| 久久综合五月天婷婷伊人| 欧美在线视频观看| 国产一区二区黄| 欧美在线亚洲| 国产欧美日韩不卡| 久久爱www.| 欧美国产视频在线| 亚洲免费电影在线观看| 欧美精品成人一区二区在线观看 | 亚洲电影免费| 免费永久网站黄欧美| 99日韩精品| 你懂的视频欧美| 亚洲一区网站| 亚洲风情亚aⅴ在线发布| 欧美日韩免费一区二区三区视频| av成人天堂| 亚洲高清免费视频| 欧美专区在线观看一区| 亚洲欧洲在线观看| 国产精品一二三四区| 欧美高清一区二区| 久久精品一区蜜桃臀影院| 亚洲精品美女久久7777777| 久久久99精品免费观看不卡| 亚洲美女网站| 亚洲精品1234| 亚洲国产高清高潮精品美女| 国产欧美另类| 欧美三级欧美一级| 欧美日韩国产小视频| 久久在线免费观看视频| 麻豆精品视频| 欧美jjzz| 欧美性事免费在线观看| 欧美日韩成人在线观看| 国产精品久久久久久久久免费樱桃 | 国产欧美日韩| 狠狠色丁香婷婷综合久久片| 黄色亚洲免费| 欧美一级理论片| 久久久欧美精品| 欧美va亚洲va香蕉在线| 欧美日韩综合在线| 国产午夜精品久久| 亚洲国产欧美精品| 一区二区高清在线观看| 亚洲欧美999| 久久人体大胆视频| 欧美大色视频| 欧美激情第3页| 亚洲精品乱码久久久久久蜜桃麻豆 | 伊人激情综合| 亚洲精品久久久蜜桃| 亚洲欧洲精品一区二区三区波多野1战4 | 亚洲一区激情| 性久久久久久久| 亚洲桃花岛网站| 欧美一区二区三区四区夜夜大片| 欧美中文在线观看| 久久久久久亚洲精品杨幂换脸 | 欧美视频在线观看一区二区| 欧美日韩国产首页在线观看| 国产嫩草一区二区三区在线观看| 欧美日韩免费在线| 国产一区视频在线观看免费| 亚洲成人在线| 欧美日韩国产成人高清视频| 香蕉久久a毛片| 蜜桃久久av一区| 国产一区二区三区在线观看精品| 国产亚洲欧美激情| 亚洲欧美一区二区三区在线| 欧美不卡高清| 香蕉成人伊视频在线观看| 欧美成人精品三级在线观看 | 在线国产精品一区| 亚洲欧美高清| 亚洲国产欧美在线| 久久精品一区中文字幕| 国产日韩欧美二区| 在线激情影院一区| 老司机免费视频一区二区| 亚洲一区欧美二区| 国产精品午夜av在线| 中文一区二区| 亚洲午夜激情在线| 国产欧美韩国高清| 亚洲电影视频在线| 免费看的黄色欧美网站| 久久久久久久久岛国免费| 欧美在线网址| 韩国美女久久| 免费不卡在线视频| 久久青草福利网站| 亚洲乱码国产乱码精品精| 亚洲国产精品黑人久久久| 欧美日韩免费高清一区色橹橹| a91a精品视频在线观看| 亚洲午夜精品网| 在线精品国产欧美| 亚洲午夜精品久久久久久浪潮 | 亚洲美女在线一区| 欧美日韩综合不卡| 久久国产乱子精品免费女| 麻豆成人在线播放| 欧美精品一区二区视频| 一区二区三区 在线观看视频| 亚洲一区二区三区午夜| 曰本成人黄色| 亚洲图片欧洲图片av| 亚洲电影免费观看高清完整版| 亚洲高清123| 国产一区二区三区在线观看免费| 亚洲日韩视频| 亚洲激情另类| 久久久综合网站| 欧美一级二区| 国产欧美1区2区3区| 99国产精品国产精品毛片| 亚洲精一区二区三区| 久久久人成影片一区二区三区观看 |