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

   3, 具体的使用有待测试  

相关示例源码链接: http://pan.baidu.com/s/1c0yAbeS 密码: iq8j

时间: 2024-10-09 03:12:12

MFC CSplitterWnd的用法的相关文章

MFC 的SetWindowPos 用法

转自于:http://hi.baidu.com/max_new/blog/item/e2bbe607b1f127c57b8947c0.html 许多软件,特别是占桌面面积不是很大的软件,通常都提供了一个常居顶端的功能(可能有的软件不是这么叫法,但作用是相同的),它的作用是保持窗口一直在其他窗口的上面,可以省去频繁切换窗口的动作. 如果你想这么做,有一个API可以实现: SetWindowPos,声明是这样的: Private Declare Function SetWindowPos Lib "

【转】MFC下拉列表框的用法

原文网址:http://blog.csdn.net/kinglimy/article/details/6452239 Combo Box (组合框)控件很简单,可以节省空间.从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的.用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本.下面的例子简要说明如何利用 MFC CComboBox Class来操作字符串列表. 1.定义控件对应变量 假定已经创建了一个Dialog,并且从控件工具箱将 Combo Box

MFC中CFileDialog用法

用CFileDialog选择了一个文件后,使用FILE::fopen打开文件错误,使用 的是相对地址,和王工调试了半天,怎么跟踪也没发现错误,原来如此......... CFileDialog文件选择对话框的使用:首先构造一个对象并提供相应的参数,构造函数原型如下: CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlag

MFC中关闭窗口的几种办法+MFC中MessageBox的用法

MFC中关闭窗口的几种办法: 退出程序用AfxGetMainWnd()->SendMessage(WM_CLOSE); 关闭当前窗口用DestroyWindow( ); 关闭模式对话框用EndDialog(0); MFC中MessageBox的用法 消息框是个很常用的控件,属性比较多,本文列出了它的一些常用方法,及指出了它的一些应用场合.1.MessageBox("这是一个最简单的消息框!");2.MessageBox("这是一个有标题的消息框!","

MFC的定时器OnTimer

本文总结来源出自鸡啄米,感谢鸡啄米.来源:http://www.jizhuomi.com/software/232.html 定时器简介 定时器,可以帮助开发者或者用户定时完成某项任务.在使用定时器时,我们可以给系统传入一个时间间隔数据,然后系统就会在每个此时间间隔后触发定时处理程序,实现周期性的自动操作.例如,我们可以在数据采集系统中,为定时器设置定时采集时间间隔为1个小时,那么每隔1个小时系统就会采集一次数据,这样就可以在无人操作的情况下准确的进行操作.  MFC定时器 VS2010编程中,

MFC ListControl使用方法

在原来博客中有:MF CListControl 简单功能使用 推荐文章:MFC类CtrlList用法 今天又又一次来介绍点新东西:双击击listcontrol  做出响应.当然你能够做的还有非常多,比方显示点击的行列,右键点击,后面代码都有.没有截图了 主要有 1 插入数据 2 得到listctrl 中全部行的checkbox 的状态 3 得到listctrl 中全部选中行的序号 4 对数据做出双击处理与推断 1插入数据显示(參考后面代码) 2双击有数据的区域(參考后面代码)做出响应 3 响应成

mfc的总结

1.项目创建当用 win32 创建项目时.想用 mfc 的方式.只要改一个地方.2.更改入口函数(前提是你自己会处理执行在main 函数之前的那些函数)3.创建 mfc 时一般是基于对话框4.默认的生成宏说明. //这里是生成的类型对应的是IDD_MFCAPPLICATION1_DIALOG资源 id CMFCApplication1Dlg::CMFCApplication1Dlg(CWnd* pParent /*=NULL*/) : CDialogEx(IDD_MFCAPPLICATION1_

阅读记录(2016年9月)

本文记录本人曾经阅读过的一些文章,其中主要包括在编程.学习过程中搜集的一些琐碎知识点等. 由于文章过多,此处只记录文章的地址,可点击查看原网页. 由于内容很多,放在一篇文章中显得太长,故每个月一篇. 2016-09-21 Linux Python OpenCV python - OpenCV - cannot find module cv2 - Stack Overflow 设置环境变量:export PYTHONPATH=/opt/opencv-2.4.10/lib/python2.7/sit

C函数篇(Timer函数)

语法 Timer() 语法Timer ( interval {, windowname } ) 参数 指定两次触发Timer事件之间的时间间隔,有效值在0到65之间.如果该参数的值指定为0,那么关闭定时器, 不再触发指定窗口的Timer事件.windowname:窗口名,指定时间间隔到时要触发哪个窗口的Timer事件.省略该参数时,触发当前窗口的 Timer事件返回值Integer.函数执行成功时返回1,发生错误时返回-1.如果任何参数的值为NULL,Timer()函数返回NULL.用法使 用T