2, // 切分的行數(shù)
1); // 切分的列數(shù)
//為第一個窗格產(chǎn)生視圖
m_wndSplitter1.CreateView(0,0, // 窗格的行、列序數(shù)
RUNTIME_CLASS(CTestView),//視圖類
CSize(rect.Width(),rect.Height()-rect.Height()/5),//初始化大小
pContext);//父窗口的創(chuàng)建參數(shù)
//為第二個窗格產(chǎn)生視圖
m_wndSplitter1.CreateView(1,0,
RUNTIME_CLASS(CMyEditView),
CSize(rect.Width(),rect.Height()/5),
pContext);
return TRUE;//不再調(diào)用基類的OnCreateClient函數(shù)
//return CFrameWnd::OnCreateClient(lpcs, pContext);
}
在這里需注意3點:
① 必須為每個靜態(tài)切分窗格創(chuàng)建視圖窗口,不能漏掉一個;
② 必須包含相應(yīng)的類的頭文件,在MainFrm.cpp文件的開始包含一下頭文件:
#include "TestView.h"
#include "MyEditView.h"
③產(chǎn)生靜態(tài)切分后,就不能調(diào)用默認(rèn)的基類的OnCreateClient函數(shù)。
7、 在視圖窗口類CTestView中聲明一個CsplitterWnd類的成員變量m_wndSplitter2,用于第二次切分。
8、 使用ClassWizard為視圖窗口類CTestView添加OnCreate函數(shù),在該函數(shù)中調(diào)用CreateStatic函數(shù)和CreateView函數(shù),類似CMainFrame::OnCreateClient函數(shù)中的調(diào)用
代碼如下:
int CTestView::OnCreate(LPCreateSTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
CRect rect;
GetClientRect(&rect);
//獲得窗口的創(chuàng)建信息指針
CCreateContext *pContext = (CCreateContext*) lpCreateStruct->lpCreateParams;
//產(chǎn)生二次靜態(tài)切分
m_wndSplitter2.CreateStatic(this,1, 2);
//為第一個窗格產(chǎn)生視圖
m_wndSplitter2.CreateView(0,0,// 窗格的行、列序數(shù)
RUNTIME_CLASS(CLineView),//視圖類
CSize(rect.Width()/4,rect.Height()),//初始化大小
pContext);//父窗口的創(chuàng)建參數(shù)
//為第二個窗格產(chǎn)生視圖
m_wndSplitter2.CreateView(0,1,
RUNTIME_CLASS(CInfoView),
CSize(1,1),
pContext);
return 0;
}
注意:二次切分的父窗口是第一次切分的第一個窗格,其視圖類是CTestView
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |