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;
}

原文地址:https://www.cnblogs.com/dilex/p/9322642.html

时间: 2024-10-26 18:44:32

VTK基于MFC单文档的开发的相关文章

VTk与MFC单文档程序联合编程

兴趣需要,想做下VTK与MFC想结合的程序,MFC快要在桌面程序上面失去市场份额了,现在大多使用QT来做,但是本科的时候学的就是MFC,也相对来说比较熟悉,所以就想使用MFC来写一个简单的单文档程序.首先我们需要在编译的时候将USEGUISUPPORT->USEMFC勾选上,才能在MFC平台上使用VTK.网络上现在大多流行两种VTK和MFC的方法,其实两者结合的关键就是将VTK的绘制窗口vtkrenderwindow与MFC中的view窗口相一致,让VTK上的绘制图形能够在MFC上的VIEW类上

openGL三维网格坐标,旋转,缩放,灯光设置,纹理读取,模型读取(MFC单文档)

最近学习计算机图形学写的基于opengGL的作业 源码下载链接:链接:http://pan.baidu.com/s/1slANShZ 密码:hbwj 1.三维网格坐标建立 2.基本3维图形创建 3.鼠标相应旋转缩放 4.键盘相应旋转缩放 5.灯光设置 6.纹理载入映射 7.读取模型 关于MFC配置编写openGL网上有很多教程 需要的函数创建一般是: OnCreat() OnDestroy() Onsize() PreCreateWindow() OnDraw() 在我的MFC单文档项目中ena

C++MFC编程笔记day07 MFC单文档绘图保存、多文档绘图保存

完善绘图例子(day06中的),加上保存功能 1 设计和编写图形类 CShape 1.1 成员变量 CPoint m_ptBegin; CPoint m_ptEnd; UINT m_nType; 1.2 支持序列化 1.2.1 继承自CObject 1.2.2 添加序列化的声明宏和实现宏 1.2.3 重写虚函数Serilize(),在函数中,完成成员变量的序列化 2 由于保存多个图形,引入MFC的集合类CObArray,保存的是CObject 对象的地址. 3 图形数据需要保存到文档类中,在该类

MFC单文档的视图分割

最近做的工作里包括了MFC单文档的分割,过程很简单,但还是想记录下来. 如下进行了单文档分割为三个视图的操作: 1 利用类向导建立额外的两个view  基类是CView 2 在mainFirm.cpp中包含两个新加的view的头文件 3 在mainFirm.h中添加分割窗口的成员变量CSplitterWnd m_wndSplitter; 4 在mainFirm.cpp中重写oncreateclient BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT

MFC单文档下使用非模态对话框

由于自己写的程序是自动获取桌面实时图像,所以用模态对话框导致程序出错,目前粗鄙的理解是模态对话框会让对话框所在线程暂停,当关闭对话框后才能继续操作,而非模态对话框可以不必让程序暂停. 下面记录非模态对话框的创建过程: 1 在单文档中新建一个对话框资源并生成对话框类 CRadiusDlg 2 在视图类C**view.cpp中添加对话框的头文件,并添加一个对话框类的指针变量CRadiusDlg *pModalessDlg; 3 在菜单栏添加一个用于显示对话框的菜单项,并在响应事件处,添加事件处理代码

MFC单文档分割区(CSplitterWnd)

用VS08程序向导,单文档程序,默认设置生成的.工程名为3view; 其中默认生成的视图类CMy3viewView,对应3viewView.h,3viewView.cpp; 默认生成的文档类为:3viewDoc.h,3viewDoc.cpp; 在主框架头文件MainFrm.h中添加如下头文件: //为了后面好创建程序默认的视CMy3viewView: #include "3viewDoc.h"#include "3viewView.h" 并添加如下变量 CSplit

MFC 单文档中动态添加菜单项和响应菜单事件

新建一个单文档程序 在查看菜单项中增加两个子菜单,分别为隐藏工具栏(ID_HIDE),新建菜单(ID_NEWMENU) 在Resource.h中增加一个ID_NEWMENU宏 #define ID_NEWMENU        WM_USER+101 操作工具栏和状态栏 使用GetDescendantWindow函数获取工具栏和状态栏的指针 为ID_HIDE添加消息映射,编辑代码如下 static bool m_Hide=false; m_Hide=!m_Hide; //获取工具栏指针 CWnd

7.MFC单文档视图构架程序

一.单文档视图构架程序 1.相关问题 只能管理一个文档(只有一个文档类对象) 2.相关类 CWinApp / CFrameWnd / CView / CDocument CDocTemplate - 文档模板类 CSingleDocTemplate - 当文档模板类 CDocManager - 文档管理类 3.关系图

MFC单文档中使用D3D9

今天试着把D3D9加入单文档中,看了一个pdf感觉写的挺好的,链接: http://pan.baidu.com/s/1c0q4za4 密码: yj9v 文章最后这里在app类里使用OnIdle,试了一下,发现会在某一个_derive处崩溃,索性不用这个消息响应函数OnIdle了,在OnDraw处调用render,OK