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

KISS(Keep It Simple, Standard)

  C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
  10 Posts :: 0 Stories :: 24 Comments :: 0 Trackbacks

常用鏈接

留言簿(10)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

 

  一、創(chuàng)建DialogBar的派生類

首先,創(chuàng)建對話框資源:在對話框資源編輯器內(nèi)生成一個Dialog資源,并將其風格(Style)屬性必須設置為Child,不能設置為OverlappedPopup,否則運行肯定出錯;至于邊界屬性則隨用戶自己喜歡,一般都是選擇None。其余屬性也隨用戶選擇,一般沒有特殊要求還是選擇默認的好。

其次,創(chuàng)建基于CDialog的派生類:打開ClassWizard,為以上創(chuàng)建的資源添加一個以CDialog為基類的派生類(因為ClassWizard沒有將CDialogBar列在基類目錄清單中,所以用戶只能先以CDialog類派生)。

再次,修改派生類以CDialogBar為基類:通常需要手工修改幾處代碼,在本例中派生類以CDataStatus命名。(注:以后講解中凡是手工改動都是以灰背景顯示)

1 在頭文件中修改繼承關系

class CDataStatus : public CDialog 改為class CDataStatus : public CDialogBar

2 在代碼文件中修該構造函數(shù)繼承關系

CDataStatus::CDataStatus(CWnd* pParent /*=NULL*/)

: CDialog(CDataStatus::IDD, pParent)

{

    //{{AFX_DATA_INIT(CDataStatus)

           // NOTE: the ClassWizard will add member initialization here

    //}}AFX_DATA_INIT

}

改為

CDataStatus::CDataStatus(CWnd* pParent /*=NULL*/)

{

    //{{AFX_DATA_INIT(CDataStatus)

           // NOTE: the ClassWizard will add member initialization here

    //}}AFX_DATA_INIT

}

3 DDX綁定函數(shù)中的繼承關系去掉

即將void CDataStatus::DoDataExchange(CDataExchange* pDX)

{

    CDialog::DoDataExchange(pDX);

    //{{AFX_DATA_MAP(CCurrentCheckDlg)

    ………..

    //}}AFX_DATA_MAP

}

改為

void CDataStatus::DoDataExchange(CDataExchange* pDX)

{

    //{{AFX_DATA_MAP(CCurrentCheckDlg)

    ………….

    //}}AFX_DATA_MAP

}

4 重新初始化函數(shù)(這個相當重要,如果不這么做的話,DDX函數(shù)形同虛設,當然用戶的工具條如果沒有用到DDX的話當然可以不加這段代碼):

首先在ClassWizardMessageMap中對消息該CDataStatus類的WM_INITDIALOG消息添加處理函數(shù)默認名為OnInitDialog

其次手工修改代碼如下:

1             添加消息映射函數(shù)。由于對話框形式的初始化函數(shù)消息并未加載到消息映射內(nèi),為此我們需要手工添加,要不然代碼無法攔截該工具條的初始化消息,形式如下:

BEGIN_MESSAGE_MAP(CDataStatus, CDialogBar)

       //{{AFX_MSG_MAP(CDataStatus)

       .......

       //}}AFX_MSG_MAP

END_MESSAGE_MAP()

改為:

BEGIN_MESSAGE_MAP(CDataStatus, CDialogBar)

       //{{AFX_MSG_MAP(CDataStatus)

       .......

       ON_MESSAGE(WM_INITDIALOG,OnInitDialog)

       //}}AFX_MSG_MAP

END_MESSAGE_MAP()

2             修改OnInitDialog函數(shù),此函數(shù)并未傳遞參數(shù),但是在這里我們需要讓它傳遞參數(shù),代碼如下修改(當然頭文件中,對聲明也要做修改,在這里就不作贅述了)

BOOL CDataStatus::OnInitDialog()

{

       CDialogBar::OnInitDialog();

   

       // TODO: Add extra initialization here

       return TRUE; // return TRUE unless you set the focus to a control

              // EXCEPTION: OCX Property Pages should return FALSE

}

改為:

BOOL CDataStatus::OnInitDialog(UINT wParam,LONG lParam)

{

       //CDialogBar::OnInitDialog();

        

       // TODO: Add extra initialization here

       BOOL bRet = HandleInitDialog(wParam,lParam);

       if (!UpdateData(FALSE))

       {

              TRACE("InitCDataStatus Failed");

       }

       return TRUE; // return TRUE unless you set the focus to a control

                     // EXCEPTION: OCX Property Pages should return FALSE

}

 

二、在框架類中實現(xiàn)該派生類的對象化

首先,在框架類的頭文件內(nèi)聲明實例對象,本例實例化:CDataStatus    m_wndDataStatus;當然頭文件中不可避免要包含新派生類的頭文件。

其次,在框架類的OnCreate函數(shù)內(nèi)創(chuàng)建對象并將對象綁定對話框資源。形式與創(chuàng)建ToolBar原理一樣,本例實例如下:

if (!m_wndDataStatus.Create(this,IDD_DATASTATUS,WS_VISIBLE|WS_CHILD

|CBRS_SIZE_DYNAMIC|CBRS_BOTTOM,IDD_DATASTATUS))

      {

             TRACE0("Failed to create CDataStatus bar!");

             return -1;

      }

再次,最為關鍵的一點就是重寫框架類的OnCmdMsg虛函數(shù)。如果不重寫該函數(shù),那么不光DDX功能無法實現(xiàn),連最基本的OnCommand事件都無法實現(xiàn)。而且還得手工添加代碼,形式如下:

BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra,

AFX_CMDHANDLERINFO* pHandlerInfo)

{

      // TODO: Add your specialized code here and/or call the base class

      return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);

}

改為:

BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)

{

      // TODO: Add your specialized code here and/or call the base class

      if (m_wndDataStatus.OnCmdMsg(nID,nCode,pExtra,pHandlerInfo))

             return    TRUE;

      return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);

}

三、CReBar上添加該實例化對象

其實這一步倒是相當簡單,只是自己以前沒用過這個類,所以在這里也順便用了一下。

首先,在框架類的頭文件中用CRebar聲明一個對象,如CReBar   m_wndReBar;

其次,在框架類的代碼文件中的OnCreat函數(shù)體內(nèi),生成對象,代碼如下:

if (!m_wndReBar.Create(this,RBS_BANDBORDERS,WS_CHILD |

WS_VISIBLE| CBRS_BOTTOM|WS_CLIPSIBLINGS|WS_CLIPCHILDREN))

      {

             TRACE0("Failed to create Rebar \n");

             return -1;

      }

再次,就是將所要添加的toolbar以及新生成的CDataStatus對象m_wndDataStatus加進Rebar的對象m_wndReBar中,代碼如下:

m_wndReBar.AddBar(&m_wndDataStatus,NULL,NULL,

RBBS_GRIPPERALWAYS|RBBS_FIXEDBMP);

posted on 2007-08-24 17:17 QUIRE-0216 閱讀(716) 評論(0)  編輯 收藏 引用 所屬分類: MFC
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲国产精品成人| 亚洲国产精品综合| 欧美在线资源| 午夜精品一区二区三区四区 | 亚洲专区免费| 香蕉国产精品偷在线观看不卡| 亚洲欧美电影院| 久久9热精品视频| 欧美gay视频激情| 亚洲精品精选| 亚洲欧美日韩区| 噜噜噜噜噜久久久久久91| 欧美剧在线观看| 国产亚洲精品久久久久婷婷瑜伽| 激情视频一区| 亚洲中字在线| 亚洲国产精品成人va在线观看| 99精品视频一区| 久久男人资源视频| 国产精品久久影院| 在线观看一区二区精品视频| 这里只有视频精品| 免费观看成人鲁鲁鲁鲁鲁视频 | 久久欧美肥婆一二区| 亚洲人成亚洲人成在线观看| 亚洲欧美一区二区原创| 欧美国产日韩二区| 国产原创一区二区| 亚洲天堂激情| 亚洲高清视频在线| 久久精品国产免费观看| 欧美系列电影免费观看| 亚洲高清av在线| 久久精品五月| 亚洲午夜激情免费视频| 欧美电影免费观看| 亚洲国产aⅴ天堂久久| 久久精品视频亚洲| 亚洲午夜视频在线观看| 欧美片第一页| 亚洲区在线播放| 久久综合久久久| 亚洲字幕一区二区| 国产精品久久久久久福利一牛影视| 亚洲电影免费| 美日韩精品视频免费看| 欧美在线一区二区| 国产美女精品视频| 午夜宅男欧美| 午夜精品久久久久久| 国产精品美女在线| 久久久美女艺术照精彩视频福利播放| 国产精品成人一区| 亚洲综合二区| 一本色道久久| 欧美亚州韩日在线看免费版国语版| 亚洲九九爱视频| 最新亚洲一区| 欧美日韩不卡在线| 在线亚洲欧美视频| 亚洲视频免费看| 国产精品日韩在线播放| 欧美亚洲综合另类| 久久精品官网| 樱桃视频在线观看一区| 蜜臀av在线播放一区二区三区| 久久久久se| 亚洲精品国精品久久99热一| 亚洲国产精品va在线看黑人| 欧美精品成人一区二区在线观看 | 欧美大尺度在线| 日韩视频免费| 在线亚洲精品福利网址导航| 国产精品国产三级国产aⅴ入口| 亚洲欧美成人综合| 西瓜成人精品人成网站| 国产一区二区三区久久| 六月婷婷久久| 欧美日韩一区二区精品| 欧美一区二区久久久| 久久久久久香蕉网| 一区二区冒白浆视频| 亚洲欧美国产高清| 亚洲国产欧洲综合997久久| 亚洲精品在线看| 国产精品狼人久久影院观看方式| 久久精品电影| 欧美日韩日日骚| 久久久久国产精品人| 欧美成人久久| 久久国产99| 欧美激情二区三区| 久久精品视频导航| 欧美日韩一区国产| 免费毛片一区二区三区久久久| 欧美精品激情blacked18| 久久国产夜色精品鲁鲁99| 欧美gay视频| 久久久精彩视频| 欧美性大战久久久久久久| 久热精品视频在线免费观看| 欧美三日本三级三级在线播放| 久久久亚洲人| 国产精品二区影院| 亚洲国产视频一区| 国模吧视频一区| 亚洲一二三区在线观看| 91久久精品国产91久久| 久久丁香综合五月国产三级网站| 一区二区三区视频观看| 久久资源在线| 久久久久久久综合色一本| 亚洲女ⅴideoshd黑人| 亚洲精品在线看| 麻豆精品一区二区综合av| 久久国产毛片| 国产精品久久久久久久久久三级| 欧美国产在线电影| 在线观看欧美亚洲| 久久aⅴ国产欧美74aaa| 亚洲欧美韩国| 国产精品高清在线| 亚洲精品在线二区| 99国内精品久久久久久久软件| 久久久www成人免费无遮挡大片| 亚洲欧美视频在线观看视频| 欧美日韩一区免费| 99精品黄色片免费大全| 夜久久久久久| 欧美精品亚洲| 亚洲精品久久久蜜桃 | 国产婷婷色一区二区三区在线 | 国产欧美精品在线| 亚洲一区二区三区欧美| 亚洲午夜国产成人av电影男同| 欧美精品日韩三级| 91久久精品日日躁夜夜躁欧美| 亚洲精品日韩欧美| 欧美精品激情在线| 在线午夜精品自拍| 欧美淫片网站| 伊人春色精品| 欧美电影美腿模特1979在线看 | 国产精品99久久久久久久久| 亚洲色图制服丝袜| 国产精品热久久久久夜色精品三区 | 午夜精品免费在线| 国产视频久久久久| 久久久999成人| 亚洲高清在线播放| 亚洲午夜视频在线| 国产区欧美区日韩区| 久久精品国产清自在天天线| 美国十次了思思久久精品导航| 亚洲电影毛片| 欧美三级小说| 欧美一区=区| 欧美激情欧美狂野欧美精品| 99精品视频免费观看视频| 国产精品扒开腿爽爽爽视频| 亚洲自拍偷拍福利| 久久一本综合频道| 夜夜嗨av色一区二区不卡| 国产精品美女久久久| 久久成人资源| 洋洋av久久久久久久一区| 久久精品国产69国产精品亚洲| 在线观看成人av电影| 欧美日韩精品| 久久久久久欧美| 亚洲九九精品| 噜噜爱69成人精品| 欧美私人啪啪vps| 久久福利视频导航| 9国产精品视频| 欧美凹凸一区二区三区视频| 亚洲已满18点击进入久久| 伊人久久综合97精品| 欧美性生交xxxxx久久久| 久久久国产精品一区| 一区二区三区精品久久久| 欧美a级理论片| 欧美有码在线观看视频| 亚洲精品乱码久久久久久黑人| 国产精品亚洲视频| 欧美日韩一区二区三区四区在线观看| 久久精品九九| 亚洲欧美日韩国产中文| 亚洲人成网站999久久久综合| 久久在线免费观看| 欧美在线不卡| 亚洲综合国产| 在线亚洲国产精品网站| 亚洲日本久久| 在线成人免费视频| 韩国女主播一区| 国产一区二区丝袜高跟鞋图片| 国产精品美女久久久久av超清| 欧美日韩亚洲一区三区| 欧美日本韩国|