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 ...