MFC基於單文件分割視窗

2021-08-02 05:01:07 字數 2437 閱讀 4654

建立乙個mfc單文件應用程式命名為test

開啟資源管理器dialog,右擊滑鼠,插入兩個對話方塊選擇基於cformview類

屬性style改為child,broad改為none

在對話方塊中插入類,分別命名為cdialogdata,cdialoga.

開啟類檢視,右擊cmainfrm類,選擇屬性,重寫oncreateclient函式。

在mainfrm.h中加入csplitterwnd m_wndsplitter;

csplitterwnd m_wndsplitter2;的定義

在mainfrm.cpp中加入標頭檔案dialogdata.h和dialoga.h

在oncreateclient函式中新增以下**

// 建立靜態分割視窗,一行兩列

if(!m_wndsplitter.createstatic(this, 1, 2))

return false;

//再把左邊視窗分為兩行一列

if(m_wndsplitter2.createstatic(&m_wndsplitter,2,1,ws_visible|ws_child,

m_wndsplitter.idfromrowcol(0, 0))==null)

return false; //將第0行0列再分開2行1列

// 建立右面窗格中的檢視

if(!m_wndsplitter.createview(0, 1, runtime_class(cdialoga),csize(200,1000), pcontext))

return false;

// 建立左上面窗格中的檢視

if(!m_wndsplitter2.createview(0, 0, runtime_class(cyyyview),csize(800, 800), pcontext))

return false;

// 建立左下面窗格中的檢視

if(!m_wndsplitter2.createview(1, 0, runtime_class(cdialogdata),csize(800, 200), pcontext))

return false;

/* if(!m_wndsplitter.createview(1, 1, runtime_class(cdialoga),csize(200, 800), pcontext))

return false;*/

crect r;

getclientrect(&r);

m_wndsplitter.setcolumninfo( 0, r.width()/3, 0 );

//m_wndsplitter.setcolumninfo( 0, r.width()/3, 1 );

m_wndsplitter.recalclayout();

m_wndsplitter2.setrowinfo(0,r.height()/2,0);

m_wndsplitter2.setrowinfo(1,r.height()/2,0);

m_wndsplitter2.recalclayout();

就分好了,但是為什麼不加入 

crect r;

getclientrect(&r);

m_wndsplitter.setcolumninfo( 0, r.width()/3, 0 );

//m_wndsplitter.setcolumninfo( 0, r.width()/3, 1 );

m_wndsplitter.recalclayout();

m_wndsplitter2.setrowinfo(0,r.height()/2,0);

m_wndsplitter2.setrowinfo(1,r.height()/2,0);

m_wndsplitter2.recalclayout();

這些設定視窗大小的函式時總是報錯,而且執行不出來view區域。

這樣執行出來的效果如

如果想要設定每個視窗的大小隨意變動,則要

bool cmainframe::oncreateclient(lpcreatestruct lpcs, ccreatecontext* pcontext)

執行出來就如第二張圖所示了。

設定的思路圖在最後一張圖上。

MFC單文件分割視窗

建立單文件程式 新建兩個對話方塊,用於分割視窗,對話方塊的style屬性改為child,border屬性改為none,最開始沒有改這個,程式執行的時候報錯了。將兩個對話方塊生成從cformview派生的類。在cmainframe中新增兩個成員變數,型別為csplitterwnd,如下所示 cspli...

單文件mfc視窗分割

說明 第一次發表部落格,全當為自己學習做個記錄,將自己的學習新東西和bug整理記錄,方便自己日後的學習。內容有借鑑別人的地方,結尾均附上別人的鏈結。1 新建單文件專案,生成如下幾個類 2 在mainfrm。h檔案中新增如下 csplitterwnd m splitwnd1 csplitterwnd ...

MFC 單文件 拆分視窗

自定義兩個類cusertreeview 繼承於ctreeview,顯示使用者資訊 cmediclistview 繼承於clistview,顯示藥品資訊 類檢視中,選中頂層資料夾 右擊 新增類 mfc 在框架類中做處理,使用csplitterwnd類實現拆分功能,h中 csplitterwnd類定義物...