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

KISS(Keep It Simple, Standard)

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

常用鏈接

留言簿(10)

我參與的團(tuán)隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

 

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

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

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

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

1 在頭文件中修改繼承關(guān)系

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

2 在代碼文件中修該構(gòu)造函數(shù)繼承關(guān)系

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ù)中的繼承關(guān)系去掉

即將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ù)(這個相當(dāng)重要,如果不這么做的話,DDX函數(shù)形同虛設(shè),當(dāng)然用戶的工具條如果沒有用到DDX的話當(dāng)然可以不加這段代碼):

首先在ClassWizardMessageMap中對消息該CDataStatus類的WM_INITDIALOG消息添加處理函數(shù)默認(rèn)名為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ù),代碼如下修改(當(dāng)然頭文件中,對聲明也要做修改,在這里就不作贅述了)

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;當(dāng)然頭文件中不可避免要包含新派生類的頭文件。

其次,在框架類的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;

      }

再次,最為關(guān)鍵的一點(diǎn)就是重寫框架類的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上添加該實例化對象

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

首先,在框架類的頭文件中用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加進(jìn)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>
            欧美成人精品高清在线播放| 在线观看亚洲a| 性xx色xx综合久久久xx| 一级日韩一区在线观看| 亚洲麻豆一区| 一本色道久久综合亚洲精品不卡| 最新亚洲激情| 免费h精品视频在线播放| 免费不卡在线视频| 亚洲国产欧美在线人成| 99精品99| 久久精品国产精品亚洲精品| 久久夜色精品| 欧美日在线观看| 国产精品一区二区久久| 影音先锋亚洲视频| 一本色道久久88精品综合| 午夜精品久久久久久久蜜桃app| 午夜免费日韩视频| 欧美福利一区| 亚洲欧美成aⅴ人在线观看| 欧美日韩国产一区精品一区| 夜夜嗨一区二区| 欧美亚洲自偷自偷| 免费观看成人www动漫视频| 欧美视频一区二区三区| 国产亚洲综合性久久久影院| 亚洲精品国产精品国自产观看| 亚洲一区二区三区免费在线观看| 欧美一区在线视频| 亚洲大片在线观看| 亚洲欧美国产毛片在线| 美女91精品| 国产精品视频yy9299一区| 在线精品视频一区二区三四| 这里只有精品丝袜| 美女久久一区| 亚洲午夜精品久久久久久app| 久久久久免费| 国产欧美精品一区| 日韩一级大片在线| 久久伊人精品天天| 亚洲伊人一本大道中文字幕| 欧美精品麻豆| 亚洲国产精品久久久久婷婷884 | 亚洲精品国产系列| 久久久午夜电影| 亚洲欧美福利一区二区| 国产精品成人一区二区艾草| 日韩视频免费观看| 亚洲电影一级黄| 久久久久久九九九九| 国产亚洲精品一区二555| 亚洲欧美日韩久久精品| a4yy欧美一区二区三区| 欧美国产第一页| 亚洲欧洲日韩综合二区| 欧美xxx成人| 麻豆av福利av久久av| 亚洲国产精品一区二区第一页| 蜜桃av噜噜一区| 久久综合网hezyo| 亚洲欧洲日本国产| 亚洲国产成人不卡| 欧美国产日韩一区| 日韩一级黄色av| 一区二区三区精品在线| 国产精品久久网| 久久激情综合| 久久久久五月天| 亚洲激情午夜| 亚洲伦伦在线| 国产精品日韩精品欧美精品| 欧美一区免费视频| 久久电影一区| 亚洲国产精品va在线观看黑人| 欧美成人首页| 欧美日韩综合网| 亚洲另类春色国产| 欧美视频一二三区| 香蕉成人伊视频在线观看| 亚洲欧美国产精品桃花| 狠狠爱成人网| 91久久精品美女高潮| 欧美日韩免费观看一区三区 | 国产精品久久久久毛片软件| 亚洲欧美日韩国产一区二区| 亚洲欧美综合| 亚洲国产综合在线看不卡| 亚洲精品美女久久久久| 国产精品私拍pans大尺度在线| 久久精品夜色噜噜亚洲a∨| 麻豆亚洲精品| 翔田千里一区二区| 免费观看成人| 欧美在线视频网站| 欧美福利视频一区| 久久av一区二区三区| 欧美成人精品激情在线观看| 亚洲欧美三级在线| 免费成人你懂的| 欧美一区二区三区免费观看| 免费观看欧美在线视频的网站| 中日韩美女免费视频网址在线观看| 亚洲性感激情| 99精品国产高清一区二区| 午夜精品视频网站| 一区二区三区高清不卡| 久久精品一区二区三区中文字幕 | 在线视频亚洲一区| 久久久久综合网| 性欧美在线看片a免费观看| 欧美mv日韩mv国产网站app| 欧美自拍丝袜亚洲| 欧美日韩国产电影| 免费看亚洲片| 国产区欧美区日韩区| 亚洲国产精品成人| 国产日韩欧美日韩| 亚洲美女毛片| 亚洲国产成人tv| 亚洲一级特黄| 夜夜嗨一区二区三区| 久久久久久久一区二区三区| 亚洲自拍偷拍视频| 欧美精品久久一区| 欧美福利在线观看| 精品1区2区3区4区| 欧美一级久久| 欧美在线啊v| 国产精品久久夜| 在线亚洲欧美| 宅男66日本亚洲欧美视频| 欧美+亚洲+精品+三区| 美日韩精品视频| 黄色日韩在线| 久久久午夜精品| 久久婷婷色综合| 国产真实乱偷精品视频免| 亚洲欧洲一区二区三区久久| 久久久久国产精品人| 国产欧美日韩精品a在线观看| 亚洲高清免费视频| 亚洲全黄一级网站| 国产主播在线一区| 亚洲一区二区三区欧美| 一区二区三区毛片| 欧美伦理91i| 99爱精品视频| 亚洲三级毛片| 媚黑女一区二区| 欧美国产先锋| 亚洲精品免费一二三区| 欧美成人免费观看| 亚洲第一福利社区| 一本一本a久久| 欧美日在线观看| 亚洲一区在线观看视频| 欧美一区二区精品| 国产一区在线观看视频| 久久视频一区二区| 亚洲激情在线视频| 亚洲一区不卡| 国产一区二区欧美| 老司机精品导航| 99精品黄色片免费大全| 欧美一级视频免费在线观看| 一区视频在线| 欧美剧在线免费观看网站| 亚洲午夜电影| 美女精品国产| 亚洲女人天堂成人av在线| 国产一区二区成人久久免费影院| 久久午夜视频| av成人免费在线| 久久综合给合久久狠狠色| 国产网站欧美日韩免费精品在线观看| 久久久97精品| 中日韩美女免费视频网站在线观看| 久久不射2019中文字幕| 亚洲人成网站777色婷婷| 国产精品久久久久天堂| 理论片一区二区在线| 亚洲免费观看在线观看| 久久最新视频| 亚洲免费在线精品一区| 91久久黄色| 国产亚洲激情在线| 欧美日韩综合视频网址| 久久亚洲精选| 欧美一级成年大片在线观看| 亚洲国产精品久久久久| 久久久亚洲综合| 亚洲一区二区三区中文字幕在线| 在线播放亚洲一区| 国产日韩精品电影| 欧美日韩高清在线| 男女视频一区二区| 久久久青草青青国产亚洲免观| 亚洲欧美在线一区二区|