VTK基于MFC单文档的开发
Posted dilex
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VTK基于MFC单文档的开发相关的知识,希望对你有一定的参考价值。
目录
- 项目的搭建
- 相关头文件的引用
- 添加成员变量vtkRenderer, vtkMFCWindow
- CXxxView()中实例化变量vtkRenderer
- CXxxView::OnInitialUpdate()中初始化变量vtkMFCWindow
- CXxxView::OnDraw(), 实现vtkMFCWindow的绘制
- CXxxView::OnSize(), 窗口大小重绘
- CXxxView::OnDestroy()中释放变量vtkRenderer
- CXxxView::~CXxxView()中释放变量pvtkMFCWindow
项目的搭建
相关头文件的引用
在CXxxView.h中添加以下面代码引用相关头文件:
#include <vtkRenderer.h>
#include <vtkMFCWindow.h>
#include <vtkWin32OpenGLRenderWindow.h>
添加成员变量vtkRenderer, vtkMFCWindow
在类CXxxView中定义两个需要用到的成员变量:
private:
//显示的变量,vtkrender和vtkMFCWindow
vtkRenderer *pvtkRenderer;
vtkMFCWindow *pvtkMFCWindow;
CXxxView()中实例化变量vtkRenderer
CXxxView::CXxxView()
{
// TODO: 在此处添加构造代码
//实例化视图对象
this->pvtkRenderer = vtkRenderer::New();
}
CXxxView::OnInitialUpdate()中初始化变量vtkMFCWindow
void CXxxView::OnInitialUpdate()
{
CView::OnInitialUpdate();
// TODO: 在此添加专用代码和/或调用基类
//初始化的时候创建vtkMFCwindow对象
if (this->pvtkMFCWindow) delete this->pvtkMFCWindow;
this->pvtkMFCWindow = new vtkMFCWindow(this);
//将render对象添加到实现窗口vtkMFCwindow中
this->pvtkMFCWindow->GetRenderWindow()->AddRenderer(this->pvtkRenderer);
}
CXxxView::OnDraw(), 实现vtkMFCWindow的绘制
void CXxxView::OnDraw(CDC* pDC)
{
CVtkMFCDoc* pDoc = GetDocument();
// TODO: 在此处为本机数据添加绘制代码
if (this->pvtkMFCWindow)
{
if (pDC->IsPrinting())
this->pvtkMFCWindow->DrawDC(pDC);
}
}
CXxxView::OnSize(), 窗口大小重绘
void CXxxView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
// TODO: 在此处添加消息处理程序代码
if (this->pvtkMFCWindow)
this->pvtkMFCWindow->MoveWindow(0, 0, cx, cy);
}
CXxxView::OnDestroy()中释放变量vtkRenderer
void CXxxView::OnDestroy()
{
CView::OnDestroy();
// TODO: 在此处添加消息处理程序代码
if (this->pvtkRenderer) this->pvtkRenderer->Delete();
}
CXxxView::~CXxxView()中释放变量pvtkMFCWindow
CXxxView::~CVtkMFCView()
{
if (this->pvtkMFCWindow) delete this->pvtkMFCWindow;
}
以上是关于VTK基于MFC单文档的开发的主要内容,如果未能解决你的问题,请参考以下文章
MFC中,比如我要做一个管理系统,我得创建单文档,多文档,还是基于对话框。还是3个都可以。
MFC技巧一:单文档中将系统菜单栏替换为自己建立的菜单栏(转)