MFC分割視窗總結

2021-06-28 08:21:23 字數 1400 閱讀 6812

mfc提供了csplitterwnd類切分sdi程式的客戶區,步驟如下:

1、建立sdi應用程式divwindow。

2、為cmainframe新增兩個csplitterwnd型別的成員變數,如下所示:

csplitterwndm_wndsplittermain;//主分隔條

csplitterwnd m_wndsplitterchild;//子分隔條

3.  為cmainframe類新增oncreateclient成員函式:

virtual bool oncreateclient(lpcreatestruct lpcs, ccreatecontext* pcontext);

4. 為divwindow程式新增類cexplistview,基類為clistview,並完善cexplistview類。

5. 在mainfrm.cpp中包含cexplistview類的標頭檔案,如下所示:

#include "explistview.h"

6. 修改cmainframe類的oncreateclient成員函式,注掉自動生成的語句:

return cframewnd::oncreateclient(lpcs, pcontext);

7. 在oncreateclient函式新增如下**,分割客戶區:

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

crect cr;

getclientrect(&cr);

csize panesize(1*cr.width()/3, cr.height());

//第1行第1列連線到檢視

if (!m_wndsplittermain.createview(0, 0, runtime_class(cexplistview), panesize, pcontext))

//將第1行第2列拆分成2行

if (!m_wndsplitterchild.createstatic(&m_wndsplittermain,2,1,ws_child|ws_visible,m_wndsplittermain.idfromrowcol(0,1)))

//拆分視窗的第1行第1列

csize rightsize(2*cr.width()/3, 2*cr.height()/3);

if (!m_wndsplitterchild.createview(0, 0, runtime_class(cexplistview), rightsize, pcontext))

//拆分視窗的第2行第1列

if (!m_wndsplitterchild.createview(1, 0, runtime_class(cexplistview), csize(0,0), pcontext))

return true;

8. 編譯執行,結果如下所示:

MFC 視窗分割

動態分割視窗 bool cmainframe oncreateclient lpcreatestruct lpcs,ccreatecontext pcontext else return cframewnd oncreateclient lpcs,pcontext 靜態分割視窗 為mainframe...

MFC單文件分割視窗

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

單文件mfc視窗分割

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