由于实验室项目的需要,要学习ogre嵌入MFC,在这里把我从小白到实现的过程写下来给大家分享。
首先声明一下,在这里我建的是基于单文档的ogre嵌入MFC,多文档的并没有研究,后面有时间实现了再拿来分享。
配置环境:VS2008+ogre1.6.5
第一步:
创建一个MFC SDI程序(之前并没有学过MFC,最近才开始看,这一部分也是参考网上的教程,具体哪位大侠的博客忘记了,抱歉~)
1.新建项目,MFC应用程序。
2.MFC应用程序向导设置如下图:
3.生成的类设置如下:
4.至此,一个MFC SDI程序创建完成,编译运行,可以得到一个空窗口视图。
如果上一步选择基类为CFormView,那么可以进一步创建一个继承
CFormView的类,可以命名为OgreControl,用来放置一些控件来
和Ogre的渲染窗口进行交互。
在工程名上右键->添加->类->MFC类->添加,类名OgreControl,基
类为 CFormView,完成。如下图:
5.
6.至此第一步完成。
第二步 分割窗口(暂时跳过)
这一步可以暂时不用,可以在掌握Ogre和MFC之后进行进一步的学习和练习使用。
本例子创建单视图文档。
第三步 Ogre嵌入MFC
这一步主要修改对应View的.h和.cpp文件。
1.OgreMFCView.h的代码如下:
// OgreMFCView.h : COgreMFCView 类的接口
//
#pragma once
//添加的代码
#include "ogre.h"
#include "OgreConfigFile.h"
using namespace Ogre;
class COgreMFCView : public CView
{
protected: // 仅从序列化创建
COgreMFCView();
DECLARE_DYNCREATE(COgreMFCView)
// 属性
public:
COgreMFCDoc* GetDocument() const;
// 操作
public:
// 重写
public:
virtual void OnDraw(CDC* pDC); // 重写以绘制该视图
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
void setupResources();//添加的代码
// 实现
public:
virtual ~COgreMFCView();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected