免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
深度思索與實踐一:vs2010拆分窗口
文/老閆
一 關(guān)于分割窗口的分割器

 CSplitterWnd類

       MFC中的分割窗口類-CSplitterWnd類封裝分割器窗口的所有功能。分割器窗口指含有多個窗格的窗口,多窗口可以容納相同的視圖或不同的視圖。

      1.構(gòu)造對象

     CSplitterWnd類首先構(gòu)造對象,在VS2010軟件自動搭建的構(gòu)架內(nèi)部,分拆窗口的實現(xiàn)在CMainFrame主框架中實現(xiàn),在主框架的類的定義中定義一個公有(public) CSplitterWnd對象,供BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)函數(shù)調(diào)用,實現(xiàn)窗口分拆的目的。

      2.靜態(tài)創(chuàng)建與動態(tài)創(chuàng)建

       動態(tài)創(chuàng)建函數(shù)CSplitterWnd類有一個Create()函數(shù),用于創(chuàng)建動態(tài)分割器窗口并將該窗口鏈接到CSplitterWnd類對象。

       靜態(tài)創(chuàng)建函數(shù)CSplitterWnd類有一個CreateStatic()函數(shù),用于創(chuàng)建動態(tài)分割器窗口并將該窗口鏈接到CSplitterWnd類對象。

  1.   動態(tài)創(chuàng)建調(diào)用
    1.  virtual BOOL Create(   
    2.    CWnd* pParentWnd,   //指向該分離器窗口的父框架窗口的指針,如在主框架窗口內(nèi)可用this;
    3.    int nMaxRows,   // 該分離器窗口的最大行數(shù),該值不得大于2;
    4.    int nMaxCols,   //該分離器窗口的最大列數(shù),該值不得大于2;
    5.    SIZE sizeMin,   //提示顯示一個窗格所需的最小大小。
    6.    CCreateContext* pContext,  //   指向一個CCreateContext結(jié)構(gòu)的指針
    7.    DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | SPLS_DYNAMIC_SPLIT,   //指定窗口的風(fēng)格
    8.    UINT nID = AFX_IDW_PANE_FIRST   //窗口子窗口ID該 
    9. );  

靜態(tài)創(chuàng)建調(diào)用
    1. virtual BOOL CreateStatic(   
    2.    CWnd* pParentWnd,   
    3.    int nRows,   //不能超過16
    4.    int nCols,   //不能超過16
    5.    DWORD dwStyle = WS_CHILD | WS_VISIBLE,   
    6.    UINT nID = AFX_IDW_PANE_FIRST    
    7. ); 
  1.      返回值:成功返回非0;不成功返回0;

  2.     3.  創(chuàng)建靜態(tài)分割窗口的步驟為:
  3.        
  4.       1) VS2010生成單文檔/視構(gòu)架,并選擇添加不同分割窗口內(nèi)的視圖。

      2)在父框架類中定義一個CSplitterWnd類型的成員對象。

      3)重載父框架類的CFrameWnd::OnCreateClient成員函數(shù)。

      4)在重載的CFrameWnd::OnCreateClient函數(shù)中調(diào)用CSplitterWnd成員對象的Create函數(shù)。

案例代碼:     注:這里m_splitterwnd為 CSplitterWnd類對象。
// CMainFrame 消息處理程序 處理分拆窗口
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
         // TODO: 在此添加專用代碼和/或調(diào)用基類
        m_splitterwnd.CreateStatic(this,1,2);//拆分靜態(tài)窗口為一行兩列
        m_splitterwnd.CreateView(0,0,RUNTIME_CLASS(CMyDaohangView),CSize(250,100),pContext);
        m_splitterwnd.CreateView(0,1,RUNTIME_CLASS(CoilpumpspecialistView),CSize(100,100),pContext);
return TRUE;

}

二 關(guān)于分拆窗口中的視構(gòu)建

1)客戶區(qū)概念

a)先學(xué)習(xí)一下OnCreateClient這個函數(shù):

CFrameWnd::OnCreateClient調(diào)用由框架在 OnCreate時的執(zhí)行。

語法

   virtual BOOL OnCreateClient(

   LPCREATESTRUCT lpcs,

   CCreateContext* pContext );

參數(shù):

lpcs

對于Windows CREATESTRUCT 結(jié)構(gòu)的指針。

pContext

為 CCreateContext 結(jié)構(gòu)的指針。

返回值:如果成功,非零;否則為0。

備注:

不要調(diào)用此函數(shù)。

此函數(shù)的盡可能默認(rèn)實現(xiàn)在 pContext創(chuàng)建從已提供的信息 CView 對象。

重寫此函數(shù)重寫在 CCreateContext 對象傳遞的值或更改方法控制在框架窗口的主要客戶端區(qū)域中創(chuàng)建。 您可以重寫的 CCreateContext 成員。CCreateContext 選件類所述。

System_CAPS_note注意

不要替換在 CREATESTRUCT 結(jié)構(gòu)中傳遞的值。 它們僅適用于信息性使用。 例如,如果要重寫初始窗口矩形重寫 CWnd 成員函數(shù) PreCreateWindow。

要求:頭文件位置: afxwin.h,請參閱CFrameWnd Class層次結(jié)構(gòu)圖

2) 理解客戶區(qū)

     客戶區(qū)分為窗口框架客戶區(qū)和視圖客戶區(qū),窗口框架客戶區(qū)包容視圖;框架客戶區(qū)以外為框架非客戶區(qū)。這里為框架客戶區(qū),在這個客戶區(qū)里可以構(gòu)建視圖窗口,視圖視(窗口)內(nèi)包含視圖客戶區(qū),這里不討論。

     在框架客戶區(qū)內(nèi)部構(gòu)造分拆器,說明一個根本的目的就是要分拆框架窗口的客戶區(qū),讓不同的視放入不同的框架客戶區(qū)內(nèi)部。

三)建立視

1)讓我們看看嵌入OnCreateClient()中的下面代碼:

   m_splitterwnd.CreateView(0,0,RUNTIME_CLASS(CMyDaohangView),CSize(250,100),pContext);

調(diào)用了如下構(gòu)建函數(shù):

  1.         virtual BOOL CreateView(   
  2.            int row,   //新視圖在分割器窗口的行
  3.            int col,   //指定新視圖在分割器窗口的列
  4.            CRuntimeClass* pViewClass,   //新視圖的CRuntimeClass類即運(yùn)行的視圖類
  5.             SIZE sizeInit,   //新視圖的初始大小值
  6.           CCreateContext* pContext    //指向用于創(chuàng)建此視圖的創(chuàng)建描述表的指針
  7.            );  
2)CCreateContext 結(jié)構(gòu)
這里我對CRuntimeClass* pViewClass類產(chǎn)生的指針很感興趣,研究了一下如下:

CCreateContext Structure

查閱微軟資料如下
框架使用 CCreateContext 結(jié)構(gòu),在創(chuàng)建與文檔框架窗口和視圖時。

struct CCreateContext  

CCreateContext 是結(jié)構(gòu),并沒有基類。

在創(chuàng)建窗口時,此結(jié)構(gòu)的值中的信息連接文檔的元素到其數(shù)據(jù)視圖。 如果重寫創(chuàng)建過程中,您只需 CCreateContext

CCreateContext 結(jié)構(gòu)包含指向文檔、框架窗口、視圖和文檔模板。 它還包含標(biāo)識視圖的類型創(chuàng)建的指向 CRuntimeClass。 運(yùn)行時選件類信息和當(dāng)前文件指針使用動態(tài)創(chuàng)建新視圖。 下表建議如何以及何時可以使用每個 CCreateContext 成員:

成員類型將針對
m_pNewViewClassCRuntimeClass*創(chuàng)建的新視圖的CRuntimeClass。
m_pCurrentDocCDocument*現(xiàn)有文檔與新的視圖。
m_pNewDocTemplateCDocTemplate*文檔模板與新的MDI框架窗口的創(chuàng)建。
m_pLastViewCView*附加視圖進(jìn)行建模的原始視圖中,在拆分窗口視圖中創(chuàng)建或第二個視圖的創(chuàng)建文檔中的。
m_pCurrentFrameCFrameWnd*其他框架窗口進(jìn)行建模的框架窗口,在第二個框架窗口中創(chuàng)建文檔中的。

當(dāng)文檔模板創(chuàng)建文檔及其關(guān)聯(lián)的元素時,它將驗證 CCreateContext 結(jié)構(gòu)中存儲的信息。 例如,不應(yīng)使用不存在創(chuàng)建視圖文檔。

 說明

所有在 CCreateContext 的指針是可選的,可以為 NULL,如果未指定或未知。

功能下面列出的“并查看的成員使用CCreateContext ”。如果您計劃中重寫這些屬性,請參考這些函數(shù)的聲明特定的信息。

這是一些通用準(zhǔn)則:

  • 當(dāng)通過,因為windows創(chuàng)建的參數(shù),在 CWnd::Create,CFrameWnd::Create和 CFrameWnd::LoadFrame,創(chuàng)建上下文指定應(yīng)連接的窗口。 對于大多數(shù)窗口,整個結(jié)構(gòu)是可選的,并且 NULL 指針可以通過。

  • 對于可重寫的成員函數(shù),例如 CFrameWnd::OnCreateClientCCreateContext 參數(shù)是可選的。

  • 對于視圖創(chuàng)建涉及的成員函數(shù)時,必須提供足夠的信息來創(chuàng)建視圖。 例如,在拆分窗口的第一個視圖,必須提供視圖選件類信息,并且當(dāng)前文件。

通常,因此,如果使用框架默認(rèn),您可以忽略 CCreateContext。 如果嘗試更高級的修改,Microsoft基礎(chǔ)類庫選件源代碼或示例程序,例如VIEWEX中,將引導(dǎo)您完成。 如果忘記一個必選參數(shù),結(jié)構(gòu)斷言將告知您要忘記了。

有關(guān) CCreateContext的更多信息,請參見MFC示例 VIEWEX。

要求 標(biāo)頭: afxext.h

3)理解pContext

當(dāng)我把

 m_splitterwnd.CreateView(0,0,RUNTIME_CLASS(CMyDaohangView),CSize(250,100),pContext);里pContext指針設(shè)定為NULL編譯不能通過,這個指針用于CreateView時指向創(chuàng)建描述表,這里可以檢查RUNTIME_CLASS(CMyDaohangView)是否建立,則CreateView返回布爾類型校驗框架客戶區(qū)的視創(chuàng)建成功與否。

四)拆分窗口框架內(nèi)部類之間通信


本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
單文檔靜態(tài)分割窗口總結(jié)
[網(wǎng)易學(xué)院]?VC++?6.0中實現(xiàn)三叉切分窗口與多視圖現(xiàn)
(轉(zhuǎn))VC隨筆——切分窗口和多視圖
(轉(zhuǎn))文檔/視圖結(jié)構(gòu)中的各個部分是如何聯(lián)系到一起的
文檔類CDocument,子框架類CFrameWnd及視圖類CView的關(guān)系及怎樣相互調(diào)用
CSplitterWnd 輕松實現(xiàn)單文檔拆分視圖
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服