Ogre学习笔记(三)OgreMFC 单文档分割窗口

 本文地址:http://blog.csdn.net/simplezju/article/details/7907163 

  版权所有:simplezju,  转载请注明出处。

      使用方法:利用CSplitterWnd 对建立好的单文档应用程序分割窗口,目的:将窗口分成左一右二,三个窗口矩形

提示:用CSplitterWnd类来切分窗口,调用成员函数CreateStatic来完成静态的切分,调用成员函数CreateView创建切分窗口窗格。让两个视类分别响应WM_CREATE消息,在窗口创建之后,调用SetClassLong函数来设置光标。

步骤:
(1) 在我们之前创立好的OgreMFC单文档应用程序中继续进行;

(2) 打开类视图,为CMainFrame添加两个公有成员变量,类型为CSplitterWnd,变量名为m_wndSplitter。

public:

CSplitterWnd    m_wndSplitter;

CSplitterWnd m_wndSplitter2;

然后为CmainFrame添加虚函数OnCreateClient的实现,在此函数中完成静态切分窗口。程序代码如下:

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
 m_wndSplitter.CreateStatic(this,1,2,WS_CHILD |WS_VISIBLE|WS_BORDER);
 m_wndSplitter2.CreateStatic(&m_wndSplitter,2,1,WS_CHILD|WS_VISIBLE,m_wndSplitter. IdFromRowCol(0,1));
 m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(COgreMFCView),CSize(800,250),pContext);
 m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CleftView),CSize(100,100),pContext);
 m_wndSplitter2.CreateView(1,0,RUNTIME_CLASS(CLeftBottomView),CSize(100,150),pContext);

 return 1;

}

 

说明:此函数中已经删除原有的OnCreateClient函数中的返回基类的OnCreateClient函数的语句。

(3) 利用【Insert| New Class...】菜单项为工程添加一个新的类。

确保Class type中选择的是MFC class,在对话框的Name对话框中输入CRightTopView,并在Base class下拉列表中指定基类为CEditView。打开OnCreateClient函数,修改创建第一个窗格的代码如下:
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CRightTopView),CSize(450,250),pContext);

(4) 因为在CmainFrame类中用到了两个视类,所以在CmainFrame的源文件中加入代码如下:
#include "OgreMFCDoc.h"
#include "OgreMFCView.h"
#include "RightTopView.h"

(5) 分别为两个视类响应WM_CREATE消息
在CleftView类的OnCreate函数中,输入代码如下:
SetClassLong(m_hWnd,GCL_HCURSOR,(LONG)::LoadCursor(NULL,IDC_HELP));
在CTwoViewView类的OnCreate函数中,输入代码如下:
SetClassLong(m_hWnd,GCL_HCURSOR,(LONG)::LoadCursor(NULL,IDC_NO));

(6) 编辑并运行程序,观察运行结果。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值