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

隨筆-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>
            午夜久久福利| 国产精品欧美激情| 亚洲一二三四区| 亚洲国产精品久久久久久女王| 久久久久一区二区| 欧美专区第一页| 久久久一区二区三区| 免费永久网站黄欧美| 欧美日韩国产综合新一区| 国产精品video| 国产日韩欧美自拍| 亚洲国产你懂的| 中文av字幕一区| 久久九九有精品国产23| 欧美成人r级一区二区三区| 亚洲欧洲另类国产综合| 亚洲私人影吧| 美女91精品| 亚洲狼人综合| 亚洲国产成人不卡| 欧美精品一区在线发布| 欧美日韩亚洲精品内裤| 国产精品黄视频| 一区二区亚洲精品国产| 一本久道综合久久精品| 久久精品一区二区三区不卡| 亚洲第一黄色网| 亚洲综合久久久久| 欧美—级a级欧美特级ar全黄| 国产精品一二三视频| 亚洲美女中文字幕| 久久午夜电影| 亚洲欧美电影在线观看| 欧美国产在线视频| 黄色精品网站| 亚洲欧洲99久久| 亚洲美女在线国产| 欧美成年人视频网站| 国产精品一区二区久久久久| 亚洲免费观看| 亚洲第一精品电影| 久久精品亚洲精品| 国产无一区二区| 亚洲欧美在线免费观看| 日韩亚洲一区在线播放| 欧美阿v一级看视频| 精品51国产黑色丝袜高跟鞋| 欧美一区=区| 亚洲先锋成人| 国产精品高潮呻吟久久av无限| 亚洲人成久久| 欧美二区在线| 美女黄毛**国产精品啪啪| 国产午夜精品理论片a级探花| 亚洲你懂的在线视频| 一本一本久久a久久精品综合妖精| 免费欧美电影| 亚洲九九九在线观看| 亚洲福利一区| 欧美另类69精品久久久久9999| 99国内精品久久| 99在线精品免费视频九九视| 欧美日韩一区二区视频在线观看| 一本久久青青| 亚洲香蕉成视频在线观看| 国产精品免费电影| 久久精品国产亚洲a| 欧美一区二区三区久久精品茉莉花 | 另类专区欧美制服同性| 海角社区69精品视频| 久久久久国产一区二区三区四区 | 欧美日韩一区二区免费视频| 先锋影院在线亚洲| 中文精品视频| 国产老女人精品毛片久久| 欧美一区二区三区免费视| 午夜精品一区二区三区电影天堂| 国产一区亚洲一区| 欧美国产一区二区| 欧美三区视频| 久久久人成影片一区二区三区观看| 久久久精品午夜少妇| 亚洲精品资源| 亚洲欧美日韩一区在线观看| 伊人久久大香线| 亚洲精品久久久久久久久久久久久 | 99精品国产在热久久婷婷| 在线一区二区三区四区| 国产亚洲电影| 亚洲国产精品第一区二区| 国产精品va在线| 媚黑女一区二区| 国产精品久久久久久久久久直播 | 久久精品视频在线| 欧美国产日韩一区二区三区| 亚洲图片欧美日产| 久久婷婷丁香| 亚洲欧美一区二区原创| 久久精品视频va| 亚洲一区二区三区在线| 久久久久久亚洲精品中文字幕| 一区二区三区 在线观看视| 久久av一区| 亚洲欧美日韩成人高清在线一区| 久久亚洲春色中文字幕| 欧美一级专区| 欧美三区在线| 亚洲精品123区| 在线观看视频欧美| 性欧美xxxx大乳国产app| 亚洲天堂免费在线观看视频| 久久免费99精品久久久久久| 午夜欧美大尺度福利影院在线看| 欧美国产精品人人做人人爱| 久久蜜桃av一区精品变态类天堂| 欧美香蕉大胸在线视频观看| 亚洲电影天堂av| 亚洲电影在线观看| 香蕉国产精品偷在线观看不卡| 99这里只有久久精品视频| 久久久久久**毛片大全| 久久九九国产| 国产日韩精品一区二区三区| 亚洲人成在线观看一区二区| 在线电影国产精品| 久久国产免费| 久久天天躁狠狠躁夜夜av| 国产欧美一区在线| 亚洲欧美成人网| 亚洲高清二区| 艳妇臀荡乳欲伦亚洲一区| 久久久久久综合| 久久先锋影音av| 国产一区二区三区日韩欧美| 亚洲女优在线| 久久都是精品| 国产综合自拍| 久久久久91| 欧美成人一区二区在线| 亚洲第一搞黄网站| 蜜桃精品久久久久久久免费影院| 欧美成人在线免费观看| 亚洲国产精品va在看黑人| 欧美91视频| 99精品免费网| 午夜国产精品视频| 国产毛片一区二区| 欧美一区二区成人| 噜噜噜91成人网| 亚洲精品系列| 国产精品美女久久久免费| 亚洲一区自拍| 国内揄拍国内精品久久| 久久成人精品一区二区三区| 久久综合99re88久久爱| 亚洲国产日韩欧美| 欧美日韩免费在线观看| 亚洲一区国产一区| 久久综合九色综合久99| 亚洲区一区二| 国产精品任我爽爆在线播放 | 亚洲一区二区三区激情| 久久精品官网| 最近中文字幕mv在线一区二区三区四区| 欧美暴力喷水在线| 亚洲影视九九影院在线观看| 久久久一区二区| 夜夜夜久久久| 国产一区视频观看| 欧美精品久久久久久久免费观看| 亚洲一二三区在线观看| 欧美大片在线观看一区二区| 亚洲影视在线| 亚洲欧洲精品一区二区三区| 国产精品高清在线| 久久综合九色欧美综合狠狠| 一本大道av伊人久久综合| 麻豆91精品91久久久的内涵| 亚洲午夜精品在线| 91久久中文| 精品成人在线| 国产精品美女黄网| 欧美激情一区二区三区不卡| 亚洲综合导航| 亚洲美女视频网| 欧美国产大片| 久久久人成影片一区二区三区观看 | 国产一区二区三区网站| 欧美高清在线视频观看不卡| 午夜一区不卡| 亚洲一级在线观看| 亚洲毛片av在线| 欧美激情第五页| 老司机午夜精品| 久久久久国内| 久久久久九九视频| 国产精品网站在线播放| 一区二区三区精品久久久| 欧美成人有码| 免费不卡在线观看av|