VC++ 6.0中实现三叉切分窗口与多视图现
2008-11-13 19:30:54 来源:WEB开发网注意:OnCreateClient函数的调用在OnCreate函数之后,在构造视图对象和产生视图窗口之前。
5、 在OnCreateClient函数中调用CsplitterWnd::CreateStatic,产生静态切分。该函数的原形如下:
BOOL CreateStatic( CWnd* pParentWnd, int nRows, int nCols, DWORD dwStyle =
WS_CHILD | WS_VISIBLE, UINT nID = AFX_IDW_PANE_FIRST );
函数有5个参数,意义如下:
● pParentWnd:切分窗口的父窗口指针
● nRows:水平方向分隔窗口的数目
● nCols:垂直方向分隔窗口的数目
● dwStyle:切分窗口的风格
● nID:子窗口的ID值,默认为系统定义的AFX_IDW_PANE_FIRST
返回值:如果创建成功,返回非零值(TRUE),否则返回0(FALSE)。
m_wndSplitter1.CreateStatic(this, 2,1); // 切分为2行1列
6、 使用CreateView产生每个视图窗口
virtual BOOL CreateView( int row, int col, CRuntimeClass* pViewClass, SIZE sizeInit, CCreateContext* pContext );
函数有5个参数,意义如下:
● row:窗格的行标,从0开始
● col:窗格的列标,从0开始
● pViewClass:视图的执行期类CRuntimeClass指针,可以用宏RUNTIME_CLASS获得
● sizeInit:一个SIZE(或者CSize)类型的数据,指定窗格的初始大小
● pContext:一般是由父窗口传递过来,包含窗口的创建信息
返回值:如果创建成功,返回非零值(TRUE),否则返回0(FALSE)。
OnCreateClient函数的全部代码:
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
CRect rect;
GetClientRect(&rect);
//产生第一次静态切分
m_wndSplitter1.CreateStatic(this, //父窗口指针
2, // 切分的行数
1); // 切分的列数
//为第一个窗格产生视图
m_wndSplitter1.CreateView(0,0, // 窗格的行、列序数
RUNTIME_CLASS(CTestView),//视图类
CSize(rect.Width(),rect.Height()-rect.Height()/5),//初始化大小
pContext);//父窗口的创建参数
//为第二个窗格产生视图
m_wndSplitter1.CreateView(1,0,
RUNTIME_CLASS(CMyEditView),
CSize(rect.Width(),rect.Height()/5),
pContext);
return TRUE;//不再调用基类的OnCreateClient函数
//return CFrameWnd::OnCreateClient(lpcs, pContext);
}
更多精彩
赞助商链接