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

笑看風云淡

寵辱不驚,看庭前花開花落;去留無意,望天空云卷云舒
posts - 96, comments - 48, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

關于窗口的分割

Posted on 2009-01-12 11:48 天之驕子 閱讀(600) 評論(1)  編輯 收藏 引用
一、CSplitterWnd的創建函數主要有下面三個:
    //功能描述:該函數用來創建動態切分窗口。
    
//參數含義:pParentWnd 切分窗口的父框架窗口。
    
//nMaxRows,nMaxCols是創建的最大的列數和行數。
    
//sizeMin是窗格的現實大小。
    
//pContext 大多數情況下傳給父窗口。
    
//nID是子窗口的ID號. 
    BOOL Create(CWnd* pParentWnd,int nMaxRows,int nMaxCols,SIZE sizeMin,
        CCreateContext
* pContext,DWORD dwStyle,UINT nID);
    
    
//功能描述:用來創建靜態切分窗口。 參數含義同上。 
    BOOL CreateStatic(CWnd* pParentWnd,int nRows,int nCols,DWORD dwStyle,UINT nID);
    
    
//功能描述:為靜態切分的窗口的網格填充視圖
    
//在將視圖于切分窗口聯系在一起的時候必 須先將切分窗口創建好。
    BOOL CreateView (int row,int col,CruntimeClass* pViewClass,
        SIZE sizeinit,CcreateContext
* pContext);

二、創建動態拆分窗口
        創建動態拆分窗口用Create()方法,對于所有的窗格,都必須共享同一個視圖,所受的限制也比較多,因此我們不將動態創建作為重點。

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

        創建步驟:

  ▲ 在創建之前我們必須先用AppWizard生成單文檔CuteFTP,生成的視類為 CCuteFTPView.同時在增加三個視類或者從視類繼承而來的派生類CView2,CView3 CView4.

  ▲ 增加成員:

  在CMainFrm.h中我們將增加下面的代碼:
    CSplitterWnd wndSplitter1;
    CSplitterWnd wndSplitter2;
        ▲ 重載CMainFrame::OnCreateClient()函數:
BOOL CMainFrame::OnCreateClient( LPCREATESTRUCT /*lpcs*/, CCreateContext* pContext) 
{
    
//創建一個靜態分欄窗口,分為三行一列 
    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列再分開1行2列 
    if(m_wndSplitter2.CreateStatic(&m_wndSplitter,1,2,WS_CHILD|WS_VISIBLE, 
        m_wndSplitter.IdFromRowCol(
10))==NULL) 
        
return FALSE;

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

    
return TRUE; 
}

四、實現各個分割區域的通信 

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

  由AppWizard生成的CCuteFTPView是與文檔相連的,同時我們也讓CView2與文檔相連,因此我們需要修改CCuteFTPApp的InitInstance()函數,我們將增加下面的部分。
AddDocTemplate (new CMultiDocTemplate(IDR_VIEW2TYPE, 
                
                RUNTIME_CLASS(CMainDoc), 
                RUNTIME_CLASS(CMDIChildWnd), 
                RUNTIME_CLASS(CView2)));
        我們現在來實現CCuteFTPView與CView2之間的通信。由于跟文檔類相連的視圖類 是不能安全的與除文檔類之外的其余的視圖類通信的。因此我們只能讓他們都與文檔 類通信。在文檔中我們設置相應的指針以用來獲的各個視圖。
        首先在CCuteFTPDoc.h文件中定義視圖類的指針變量
CCuteFTPView* m_pCuteFTPView;
CView2
* m_pView2;
       
        然后,我們重載CCuteFTPDoc::OnOpenDocument()函數
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; 
}
        這樣我們在文檔類中就獲的了跟它相連的所有的視圖的指針。

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

        ■無文檔視圖與文檔關聯視圖之間的通信

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

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

        CCuteFTPDoc中的相應的處理函數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();

        ■無文檔關聯視圖之間的通信

        CView3和CView4都是不跟文檔相連的,如何實現他們之間的通信呢。 正如我們在上面所說的那樣,由于在主框架中我們可以訪問任意的視圖,因此我們的主要任務還是在程序中獲得主框架的指針。下面代碼實現在CView3中訪問CView4中的方法DoIt()。
CMainFrame* MainFrame=(CMainFrame*)this->GetParent()->GetParent(); 

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

        到現在我們已經實現了CuteFTP的主窗口的框架并且能夠實現他們之間相互通信的框架。

Feedback

# re: 關于窗口的分割  回復  更多評論   

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

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   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>
            亚洲日本欧美在线| 欧美成人黄色小视频| 欧美在线影院| 欧美在线视频导航| 久久国产福利国产秒拍| 欧美一区国产一区| 欧美一区综合| 久久精品主播| 欧美激情综合| 99热在这里有精品免费| 在线亚洲免费| 亚洲国产高清视频| 亚洲毛片一区| 午夜精品久久久久久久99黑人| 日韩一级黄色大片| 香蕉成人久久| 亚洲黄色影院| 亚洲视频在线观看网站| 久久精品国产亚洲aⅴ| 欧美久久婷婷综合色| 国产亚洲亚洲| 亚洲欧美激情四射在线日| 久久一区激情| 亚洲天堂网站在线观看视频| 久久国产精品99精品国产| 欧美国产视频在线| 在线欧美一区| 欧美自拍丝袜亚洲| 99re成人精品视频| 快播亚洲色图| 一区在线免费| 久久国产加勒比精品无码| 亚洲国产va精品久久久不卡综合| 一区二区三区免费在线观看| 免费短视频成人日韩| 尤物九九久久国产精品的分类| 亚洲一二区在线| 中文在线资源观看网站视频免费不卡 | 午夜激情综合网| 国产精品午夜电影| 性欧美大战久久久久久久免费观看| 亚洲欧洲一区二区天堂久久| 中文精品视频| 欧美电影免费观看| 欧美在线一二三区| 国产精品理论片在线观看| 欧美日韩国产一区二区三区地区| 亚洲精品视频在线看| 91久久精品日日躁夜夜躁国产| 欧美不卡视频一区发布| 亚洲视频一区在线观看| 一区二区三区视频在线播放| 欧美视频在线一区| 国产精品毛片在线| 亚洲欧美日韩区| 久久精品盗摄| 亚洲天堂网站在线观看视频| 午夜精品福利一区二区三区av| 国产午夜精品一区二区三区欧美 | 亚洲人体1000| 国产亚洲欧美一区在线观看| 亚洲欧洲精品一区二区精品久久久| 欧美偷拍一区二区| 欧美成人一区二区| 国产精品综合| 一本色道**综合亚洲精品蜜桃冫 | 久久亚洲精品欧美| 欧美国产视频在线| 玖玖玖国产精品| 欧美高清在线视频观看不卡| 国产女人18毛片水18精品| 欧美一区二区三区视频在线观看| 国产一区二区三区在线观看免费视频| 亚洲深夜激情| 欧美国产欧美亚洲国产日韩mv天天看完整 | 国产精品www994| 欧美亚洲综合久久| 亚洲高清一区二区三区| 亚洲自拍16p| 亚洲国产日韩欧美综合久久| 欧美日韩国产精品自在自线| 亚洲香蕉伊综合在人在线视看| 久久久99国产精品免费| 一区二区三区不卡视频在线观看 | 欧美日韩一区二区视频在线观看 | 久久美女艺术照精彩视频福利播放| 欧美大片免费久久精品三p| 一本色道久久综合亚洲精品婷婷 | 亚洲线精品一区二区三区八戒| 午夜在线一区| 一区二区三区在线视频免费观看| 欧美jizz19性欧美| 亚洲最黄网站| 欧美性淫爽ww久久久久无| 亚洲一区国产精品| 亚洲国产黄色片| 香蕉久久夜色精品国产| 亚洲精品老司机| 国内在线观看一区二区三区| 欧美电影打屁股sp| 午夜精品美女自拍福到在线 | 亚洲欧美激情在线视频| 欧美国产精品va在线观看| 午夜精品三级视频福利| 日韩一区二区精品葵司在线| 国产日韩精品一区二区浪潮av| 欧美视频日韩视频| 欧美精品尤物在线| 亚洲黄网站在线观看| 麻豆九一精品爱看视频在线观看免费 | 午夜精品一区二区三区电影天堂| 加勒比av一区二区| 麻豆精品精品国产自在97香蕉| 亚洲已满18点击进入久久| 亚洲欧美综合一区| 久久国产精彩视频| 嫩草影视亚洲| 日韩五码在线| 亚洲尤物精选| 香蕉av777xxx色综合一区| 亚洲欧美日本精品| 欧美有码在线视频| 嫩模写真一区二区三区三州| 欧美高清不卡在线| 欧美日韩国产综合新一区| 欧美国产激情二区三区| 国产精品va| 亚洲香蕉伊综合在人在线视看| 午夜在线成人av| 欧美电影资源| 国模套图日韩精品一区二区| 亚洲精品久久久久中文字幕欢迎你| 亚洲六月丁香色婷婷综合久久| 99国产一区| 久久夜色精品国产| 亚洲一区二区三区精品动漫| 久久精品国产欧美激情| 国产精品日韩欧美一区二区| 亚洲国产导航| 久久男人av资源网站| av不卡在线| 欧美激情视频在线播放| 在线免费观看日本欧美| 久久婷婷国产综合精品青草| 欧美777四色影视在线| 亚洲欧美在线网| 国产区欧美区日韩区| 欧美一级专区| 99视频在线观看一区三区| 欧美另类高清视频在线| 国产日韩精品一区二区三区在线| aa日韩免费精品视频一| 亚洲视频在线观看网站| 国产一区999| 美女久久一区| 欧美高清视频| 亚洲看片免费| 亚洲一区制服诱惑| 国产精品人人爽人人做我的可爱| 日韩一区二区精品视频| 亚洲乱码国产乱码精品精| 国产欧美精品日韩区二区麻豆天美| 老司机凹凸av亚洲导航| 国产精品jizz在线观看美国 | 韩国亚洲精品| 999在线观看精品免费不卡网站| 永久久久久久| 欧美中文日韩| 久久精品一区| 亚洲国产精品一区二区尤物区| 亚洲欧美综合v| 欧美三级网址| 亚洲国产视频a| 国产亚洲精品久久久久久| 亚洲国产黄色| 国内揄拍国内精品少妇国语| 一区二区三区国产盗摄| 精品福利电影| 亚洲欧美日产图| 日韩一二三区视频| 欧美日韩一区在线观看视频| 免费的成人av| 国产资源精品在线观看| 亚洲欧美日韩一区| 一区二区三区在线观看国产| 免费一级欧美在线大片| 久久久精品久久久久| 国产精品嫩草99av在线| 中日韩美女免费视频网址在线观看| 亚洲国产精品免费| 欧美激情精品久久久久久免费印度| 久久夜色精品国产| 9国产精品视频| 国产麻豆9l精品三级站| 久久精品成人| 亚洲电影av| 亚洲自拍高清| 亚洲国产成人久久综合| 久久这里只精品最新地址| 免费不卡在线视频|