博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MFC CSplitterWnd的用法
阅读量:6157 次
发布时间:2019-06-21

本文共 1551 字,大约阅读时间需要 5 分钟。

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

 

转载地址:http://teifa.baihongyu.com/

你可能感兴趣的文章
linux:yum和apt-get的区别
查看>>
Sentinel 1.5.0 正式发布,引入 Reactive 支持
查看>>
数据库之MySQL
查看>>
2019/1/15 批量删除数据库相关数据
查看>>
数据类型的一些方法
查看>>
Webpack 2 中一些常见的优化措施
查看>>
移动端响应式
查看>>
js中var、let、const的区别
查看>>
简洁优雅地实现夜间模式
查看>>
react学习总结
查看>>
在soapui上踩过的坑
查看>>
MySQL的字符集和字符编码笔记
查看>>
ntpd同步时间
查看>>
Maven编译时跳过Test
查看>>
Spring Boot 整合Spring Security 和Swagger2 遇到的问题小结
查看>>
Apache通过mod_php5支持PHP
查看>>
java学习:jdbc连接示例
查看>>
Silverlight 如何手动打包xap
查看>>
Javascript一些小细节
查看>>
禁用ViewState
查看>>