您的位置:首页 > 其它

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

2012-08-25 16:52 267 查看

本文地址:/article/11332343.html

版权所有: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) 编辑并运行程序,观察运行结果。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: