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

笑看風(fēng)云淡

寵辱不驚,看庭前花開(kāi)花落;去留無(wú)意,望天空云卷云舒
posts - 96, comments - 48, trackbacks - 0, articles - 0
  C++博客 :: 首頁(yè) :: 新隨筆 ::  :: 聚合  :: 管理
一、CSplitterWnd的創(chuàng)建函數(shù)主要有下面三個(gè):
    //功能描述:該函數(shù)用來(lái)創(chuàng)建動(dòng)態(tài)切分窗口。
    
//參數(shù)含義:pParentWnd 切分窗口的父框架窗口。
    
//nMaxRows,nMaxCols是創(chuàng)建的最大的列數(shù)和行數(shù)。
    
//sizeMin是窗格的現(xiàn)實(shí)大小。
    
//pContext 大多數(shù)情況下傳給父窗口。
    
//nID是子窗口的ID號(hào). 
    BOOL Create(CWnd* pParentWnd,int nMaxRows,int nMaxCols,SIZE sizeMin,
        CCreateContext
* pContext,DWORD dwStyle,UINT nID);
    
    
//功能描述:用來(lái)創(chuàng)建靜態(tài)切分窗口。 參數(shù)含義同上。 
    BOOL CreateStatic(CWnd* pParentWnd,int nRows,int nCols,DWORD dwStyle,UINT nID);
    
    
//功能描述:為靜態(tài)切分的窗口的網(wǎng)格填充視圖
    
//在將視圖于切分窗口聯(lián)系在一起的時(shí)候必 須先將切分窗口創(chuàng)建好。
    BOOL CreateView (int row,int col,CruntimeClass* pViewClass,
        SIZE sizeinit,CcreateContext
* pContext);

二、創(chuàng)建動(dòng)態(tài)拆分窗口
        創(chuàng)建動(dòng)態(tài)拆分窗口用Create()方法,對(duì)于所有的窗格,都必須共享同一個(gè)視圖,所受的限制也比較多,因此我們不將動(dòng)態(tài)創(chuàng)建作為重點(diǎn)。

三、創(chuàng)建靜態(tài)拆分窗口
        與動(dòng)態(tài)創(chuàng)建相比,靜態(tài)創(chuàng)建的代碼要簡(jiǎn)單許多,而且可以最多創(chuàng)建16x16的窗格。不同的窗格我們可以使用CreateView()填充不同的視圖。
        在這里我們將創(chuàng)建CuteFtp的窗口分割。CuteFtp的分割情況如下:
        CCuteFTPView
        CView2 CView3
        CView4   

        創(chuàng)建步驟:

  ▲ 在創(chuàng)建之前我們必須先用AppWizard生成單文檔CuteFTP,生成的視類(lèi)為 CCuteFTPView.同時(shí)在增加三個(gè)視類(lèi)或者從視類(lèi)繼承而來(lái)的派生類(lèi)CView2,CView3 CView4.

  ▲ 增加成員:

  在CMainFrm.h中我們將增加下面的代碼:
    CSplitterWnd wndSplitter1;
    CSplitterWnd wndSplitter2;
        ▲ 重載CMainFrame::OnCreateClient()函數(shù):
BOOL CMainFrame::OnCreateClient( LPCREATESTRUCT /*lpcs*/, CCreateContext* pContext) 
{
    
//創(chuàng)建一個(gè)靜態(tài)分欄窗口,分為三行一列 
    if(m_wndSplitter1.CreateStatic(this,3,1)==NULL) 
        
return FALSE;

    
//將CCuteFTPView連接到0行0列窗格上
    m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CCuteFTPView),CSize(100,100), pContext);

    
//將CView4連接到0行2列
    m_wndSplitter1.CreateView(2,0,RUNTIME_CLASS(CView4),CSize(100,100),pContext); 

    
//將第1行0列再分開(kāi)1行2列 
    if(m_wndSplitter2.CreateStatic(&m_wndSplitter,1,2,WS_CHILD|WS_VISIBLE, 
        m_wndSplitter.IdFromRowCol(
10))==NULL) 
        
return FALSE;

    
//將CView2類(lèi)連接到第二個(gè)分欄對(duì)象的0行0列
    m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CView2),CSize(400,300),pContext);
    
    
//將CView3類(lèi)連接到第二個(gè)分欄對(duì)象的0行1列
    m_wndSplitter2.CreateView(0,1,RUNTIME_CLASS(CView3),CSize(400,300),pContext); 

    
return TRUE; 
}

四、實(shí)現(xiàn)各個(gè)分割區(qū)域的通信 

        ■有文檔相連的視圖之間的通信

  由AppWizard生成的CCuteFTPView是與文檔相連的,同時(shí)我們也讓CView2與文檔相連,因此我們需要修改CCuteFTPApp的InitInstance()函數(shù),我們將增加下面的部分。
AddDocTemplate (new CMultiDocTemplate(IDR_VIEW2TYPE, 
                
                RUNTIME_CLASS(CMainDoc), 
                RUNTIME_CLASS(CMDIChildWnd), 
                RUNTIME_CLASS(CView2)));
        我們現(xiàn)在來(lái)實(shí)現(xiàn)CCuteFTPView與CView2之間的通信。由于跟文檔類(lèi)相連的視圖類(lèi) 是不能安全的與除文檔類(lèi)之外的其余的視圖類(lèi)通信的。因此我們只能讓他們都與文檔 類(lèi)通信。在文檔中我們?cè)O(shè)置相應(yīng)的指針以用來(lái)獲的各個(gè)視圖。
        首先在CCuteFTPDoc.h文件中定義視圖類(lèi)的指針變量
CCuteFTPView* m_pCuteFTPView;
CView2
* m_pView2;
       
        然后,我們重載CCuteFTPDoc::OnOpenDocument()函數(shù)
POSITION pos;
CView
* pView;
while(pos!=NULL)
{
    pView
=GetNextView(pos); 
    
if(pView->IsKindOf(RUNTIME_CLASS(CCuteFTPView))==NULL) 
        m_pCuteFTPView
=(CCuteFTPView*)pView; 
    
else(pView->IsKindOf(RUNTIME_CLASS(CCuteFTPView))==NULL) 
        m_pView2
=(CView2*)pView; 
}
        這樣我們?cè)谖臋n類(lèi)中就獲的了跟它相連的所有的視圖的指針。

  如果需要在 CCuteFTPView中調(diào)用CView2中的一個(gè)方法DoIt()則代碼如下:
CCuteFTPDoc* pDoc=GetDocument();
CView2
* pView2=pDoc->m_pView2;
pView2.DoIt();

        ■無(wú)文檔視圖與文檔關(guān)聯(lián)視圖之間的通信

        CView3和CView4都是不與文檔相關(guān)聯(lián)的。我們現(xiàn)在實(shí)現(xiàn)CView3與CView2的通信,正如前面所說(shuō),CView2只能安全的與CCuteFTPDoc通信,因此,CView3如果需要跟CView2通信,也必須借助于文檔類(lèi)。因此程序的關(guān)鍵是如何在CView3中獲得文檔的指針。視圖類(lèi)中沒(méi)有這樣的類(lèi)成員可以用來(lái)直接訪問(wèn)文檔類(lèi)。但是我們知道在主窗口類(lèi)MainFrame中我們可以獲得程序的任意窗口類(lèi)的指針。因此我們只要獲得了程序主窗口的指針,就可以解決問(wèn)題了。下面代碼實(shí)現(xiàn)在CView3中訪問(wèn)CView2中的DoIt()方法。
CMainFrame* MainFrame=(CMainFrame*)this->GetParent()->GetParent(); 

CCuteFTPDoc
* pDoc=(CCuteFTPDoc*)MainFrame->GetActiveDocument();
if(pDoc!=NULL) pDoc->DoIt();

        CCuteFTPDoc中的相應(yīng)的處理函數(shù)DoIt()代碼如下:
CView2* pView2; 
POSITION pos; 
CView
* pView; 
while(pos!=NULL) 

    pView
=GetNextView(pos);
    
if(pView->IsKindOf(RUNTIME_CLASS(CView2))==NULL) 
        pView2
=(CView2*)pView; 
}
 
pView2
->DoIt();

        ■無(wú)文檔關(guān)聯(lián)視圖之間的通信

        CView3和CView4都是不跟文檔相連的,如何實(shí)現(xiàn)他們之間的通信呢。 正如我們?cè)谏厦嫠f(shuō)的那樣,由于在主框架中我們可以訪問(wèn)任意的視圖,因此我們的主要任務(wù)還是在程序中獲得主框架的指針。下面代碼實(shí)現(xiàn)在CView3中訪問(wèn)CView4中的方法DoIt()。
CMainFrame* MainFrame=(CMainFrame*)this->GetParent()->GetParent(); 

CView4
* View4=(CView4*)MainFrame->m_wndSplitter1.GetPane(2,0); 
View4
->DoIt();

        到現(xiàn)在我們已經(jīng)實(shí)現(xiàn)了CuteFTP的主窗口的框架并且能夠?qū)崿F(xiàn)他們之間相互通信的框架。

Feedback

# re: 關(guān)于窗口的分割  回復(fù)  更多評(píng)論   

2009-07-09 14:35 by 沙漠之音
AddDocTemplate函數(shù)能不能在解釋清點(diǎn)?CMainDoc,CMDIChildWnd,IDR_VIEW2TYPE 看的很暈。

只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲大胆人体在线| 久久久久久久97| 欧美福利一区二区三区| 亚洲免费成人| 亚洲欧美制服另类日韩| 黄色亚洲网站| 99国产精品久久久久老师| 国产精品视频久久| 欧美国产视频在线观看| 欧美日韩一区三区| 久久亚洲精品伦理| 欧美视频久久| 免费观看在线综合| 国产精品欧美风情| 欧美国产精品v| 国产酒店精品激情| 91久久国产综合久久蜜月精品 | 久久精品一本| 欧美黑人国产人伦爽爽爽| 欧美一级片在线播放| 欧美大片91| 久久米奇亚洲| 国产精品久久久久久久久搜平片| 快射av在线播放一区| 国产精品福利影院| 亚洲全部视频| 91久久久久久| 久久久91精品国产一区二区三区 | 亚洲一区二区三区777| 91久久国产精品91久久性色| 亚洲欧美日韩中文视频| 亚洲特色特黄| 欧美日韩成人在线观看| 欧美福利视频| 亚洲夫妻自拍| 久久久久国产免费免费| 久久国产精品久久精品国产| 欧美性做爰猛烈叫床潮| 亚洲精品一区二区在线| 亚洲欧洲精品成人久久奇米网| 欧美一级在线视频| 久久精品成人欧美大片古装| 欧美午夜精品| 中日韩午夜理伦电影免费| 亚洲图片自拍偷拍| 欧美视频一二三区| 99xxxx成人网| 亚洲资源av| 国产精品入口夜色视频大尺度| 一区二区三区免费看| 亚洲永久免费| 国产九九精品| 久久精品av麻豆的观看方式| 狂野欧美一区| 亚洲黄色在线| 欧美日韩一区二区三区四区在线观看| 亚洲精品视频在线| 亚洲午夜免费视频| 国产精品视频99| 久久精品123| 欧美国产一区视频在线观看| 亚洲精品在线免费观看视频| 欧美精选在线| 亚洲视频在线看| 欧美伊人久久| 狠狠色丁香婷婷综合影院| 老司机凹凸av亚洲导航| 亚洲片国产一区一级在线观看| 这里只有精品电影| 国产精品亚洲精品| 久久麻豆一区二区| 亚洲国产一区二区三区a毛片| 一区二区精品国产| 国产女主播视频一区二区| 久久精品99| 日韩亚洲一区二区| 久久久久国产精品厨房| 亚洲国产小视频| 国产精品大片wwwwww| 久久超碰97中文字幕| 亚洲国产精品久久久久婷婷884| 99pao成人国产永久免费视频| 国产精品久久99| 久久综合激情| 国产日韩精品一区观看| 亚洲欧美日韩国产| 欧美成人午夜影院| 亚洲欧美日本国产专区一区| 激情久久久久久久| 欧美日韩一区二区三区高清| 久久av一区二区三区| 亚洲精品美女| 久久久五月婷婷| 一区二区三区视频在线播放| 国产一区二区三区在线观看视频 | 久久成人在线| 亚洲精选中文字幕| 国产一区二区日韩精品| 欧美日本在线一区| 久久久久久一区二区| 亚洲性线免费观看视频成熟| 欧美波霸影院| 久久国产视频网站| 亚洲视频在线观看免费| 在线看成人片| 国产欧美一二三区| 欧美特黄一级大片| 欧美激情精品久久久久久久变态| 亚洲欧美综合v| 日韩一区二区免费高清| 欧美激情视频在线播放 | 国产精品久久久久久久第一福利| 另类图片综合电影| 午夜在线成人av| 99精品视频免费观看视频| 欧美成人激情视频| 久久综合中文| 久久一区二区视频| 久久国产免费| 性做久久久久久免费观看欧美| 亚洲精品在线免费| 亚洲日产国产精品| 亚洲国产婷婷| 91久久综合亚洲鲁鲁五月天| 韩日欧美一区| 国语自产精品视频在线看抢先版结局| 国产精品美女一区二区| 欧美性大战久久久久久久蜜臀| 欧美国产日韩xxxxx| 欧美凹凸一区二区三区视频| 久久综合免费视频影院| 久久免费偷拍视频| 久久香蕉国产线看观看av| 久久精品国产2020观看福利| 欧美一区二区大片| 久久av一区二区三区亚洲| 性欧美大战久久久久久久久| 亚洲欧洲av一区二区三区久久| 亚洲欧美卡通另类91av| 亚洲自拍另类| 欧美一区二区三区视频在线| 欧美一级视频免费在线观看| 久久精品国产第一区二区三区最新章节 | 欧美波霸影院| 欧美激情第五页| 欧美日韩在线三区| 国产精品成av人在线视午夜片| 国产精品久久二区二区| 国产美女精品视频| 国产一区日韩二区欧美三区| 国产亚洲精品激情久久| 一区二区三区在线免费观看| 欧美中文字幕在线播放| 米奇777超碰欧美日韩亚洲| 卡一卡二国产精品| 欧美大胆a视频| 欧美黄色影院| 亚洲日本在线视频观看| 一级日韩一区在线观看| 亚洲一区二区精品| 欧美专区在线观看| 欧美v国产在线一区二区三区| 欧美高清视频www夜色资源网| 欧美精彩视频一区二区三区| 国产精品成人一区二区艾草| 国产欧美在线视频| 亚洲国产精品一区二区尤物区 | 亚洲欧洲99久久| 久久夜精品va视频免费观看| 欧美精品久久一区二区| 国产精品入口66mio| ●精品国产综合乱码久久久久| 日韩午夜在线| 欧美专区在线观看一区| 欧美高清一区二区| 亚洲图中文字幕| 久久久久久久一区二区三区| 欧美全黄视频| 一区在线播放| 亚洲一区中文字幕在线观看| 久久香蕉国产线看观看网| 亚洲精品小视频| 久久国产精品电影| 欧美日韩在线视频一区| 亚洲成人在线| 亚洲欧美日韩第一区| 欧美电影在线| 午夜精品国产| 欧美日韩亚洲综合| 亚洲福利一区| 久久精品午夜| 一区二区三区日韩精品视频| 久久资源在线| 国产午夜精品理论片a级探花| 夜夜狂射影院欧美极品| 蜜臀久久99精品久久久画质超高清| 一区二区欧美精品| 免费试看一区| 国内精品模特av私拍在线观看| 亚洲视频你懂的|