WEB开发网
开发学院软件开发VC VC++ 6.0中实现三叉切分窗口与多视图现 阅读

VC++ 6.0中实现三叉切分窗口与多视图现

 2008-11-13 19:30:54 来源:WEB开发网   
核心提示: 注意:OnCreateClient函数的调用在OnCreate函数之后,在构造视图对象和产生视图窗口之前,VC++ 6.0中实现三叉切分窗口与多视图现(2),5、 在OnCreateClient函数中调用CsplitterWnd::CreateStatic,产生静态切分,包含窗口的创建信息

注意: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);
  }

Tags:VC 实现 三叉

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接