zoukankan      html  css  js  c++  java
  • MFC CSplitterWnd的用法

    用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则可能导致不可引用等错误 

    OK,做完了之后,碰到的问题就是如何控制分割出来窗口的大小了,我想做成固定窗口,现在还没找到有效方法~~~

  • 相关阅读:
    mha 安装部署报错 failed: Attempt to reload DBD/mysql.pm aborted
    zabbix 不能触发动作产生告警
    zabbix 编译安装
    zabbix 解决中文乱码
    virtualbox 配置虚拟机能够和宿主机相互通信
    INCEPTION 编译过程报错 make[2]: * [sql/CMakeFiles/sql.dir/sql_yacc.cc.o] Error
    数据库运维平台
    mysql 归档工具 pt-archiver
    java面试基础篇
    非对称和对称加密结合
  • 原文地址:https://www.cnblogs.com/moondark/p/2383541.html
Copyright © 2011-2022 走看看