首页 > 编程语言 > 详细

MFC CSplitterWnd的用法

时间:2021-06-21 20:28:06      阅读:19      评论:0      收藏:0      [点我收藏+]

用MFC开发一个软件界面中需要拆分多个试图窗口时,使用CSplitterWnd类

 CSplitterWnd类主要用在创建一个拆分试图窗口。通常嵌入在框架窗口中(CMainFrame)

创建步骤:

  1.在框架类(CMainFrame)中定义一个CSplitterWnd成员;

  2.重载父框架类中CFrameWnd::OnCreateClient函数

  3.在OnCreateClient()函数中调用CSplitterWnd类的Create或CreateStatic()函数

例子:

CSplitterWnd m_wndSplitter;

BOOL CChildFrame::OnCreateClient( LPCREATESTRUCT lpcs, 
   CCreateContext* pContext)
{

    BOOL bCreateSpltr = m_wndSplitter.CreateStatic( this, 2, 1);

    // COneView and CAnotherView are user-defined views derived from CMDIView
    m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(COneView), CSize(0,0), 
        pContext);
    m_wndSplitter.CreateView(1,0,RUNTIME_CLASS(CAnotherView), CSize(0,0), 
        pContext);

    return (bCreateSpltr);
}

或者

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
{
 // TODO: Add your specialized code here and/or call the base class
   if (!m_wndSplitter.CreateStatic(this, 1, 2))
    return FALSE;

   if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(160, 200), pContext) ||
    !m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CTestView), CSize(100, 200), pContext))
   {
      m_wndSplitter.DestroyWindow();
      return FALSE;
   }
   return TRUE;

}

在创建了多个窗口之后,有时为了能够得到其中的某个窗口,进而对其进行操作控制,则:

不能简单使用GetActiveView,可从MainFrame的CSplitterWnd成员得到,如下

CMainFrame* pMF=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CViewRes* pViewRes=(CViewRes*)pMF->m_wndSplitter.GetPane(0,1);

注意:1, 使用CMainFrame,要在调用的cpp文件中包含MainFrame.h
   2, 注意在CMainFrame中,m_wndSplitter变量的类型,若定义为protected或private则可能导致不可引用等错误

 

创建静态分割窗口

virtual BOOL CreateStatic(   
   CWnd* pParentWnd,   
   int nRows,   
   int nCols,   
   DWORD dwStyle = WS_CHILD | WS_VISIBLE,   
   UINT nID = AFX_IDW_PANE_FIRST    
); 

。参数pParentWnd为分割器窗口的父框架窗口、

参数dwStyle指定窗口风格;

参数nID为分割窗口的ID 除非分割器窗口嵌入到另一个分割器窗口中,否则可以取值AFX_IDW_PANE_FIRST

参数nRows为行数,不能超过16;

参数nCols为列数,同样不能超过16

virtual BOOL CreateView(   
   int row,   
   int col,   
   CRuntimeClass* pViewClass,   
   SIZE sizeInit,   
   CCreateContext* pContext    
);  

 

CreateView  为静态分割窗口创建窗格视图  

参数row指定分割器窗口中放置新视图的行;
参数col指定放置新视图的列;
参数pViewClass指定新视图的CRuntimeClass对象;
参数sizeInit指定新视图的初始大小;
参数pContext为指向CCreateContext结构的指针,通常可以赋值为传递给父框架窗口的重载函数CFrameWnd::OnCreateClient的pContext参数值。

MFC CSplitterWnd的用法

原文:https://www.cnblogs.com/rosesmall/p/14914624.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!