第一个VTK-MFC程序

1. 使用MFC向导创建一个MFC对话框工程,工程名为vtkDLG
2. 修改资源,添加一个Image Control控件作为VTK渲染窗口,ID为IDC_VTK_WND
    向主vtkDLGDlg类中添加OnSize OnDestroy函数
3. 注意在使用CMake配置VTK环境前一定要确定已经完成第2步
4. 删除多余工程文件,只留下 *.h,*.cpp,*.aps,*.rc和res文件夹
5. 使用CMake配置工程

# This VTK_DIR usage only works in the VTK build tree...
# Make it work in the "make install" tree, too.
#
cmake_minimum_required(VERSION 2.8)
SET(VTK_DIR "D:/3rdParty/VTK/VTK-5.6.1_VC9.0_Bin")

FIND_PACKAGE(VTK)
IF(VTK_FOUND)
  INCLUDE(${VTK_USE_FILE})
ELSE(VTK_FOUND)
  MESSAGE(FATAL_ERROR
          "Cannot build without VTK.  Please set VTK_DIR.")
ENDIF(VTK_FOUND)

INCLUDE("${VTK_DIR}/GUISupport/MFC/VTKMFCSettings.cmake")
IF(VTK_MFC_DELAYLOAD_VTK_DLLS)
  VTK_MFC_ADD_DELAYLOAD_FLAGS(CMAKE_EXE_LINKER_FLAGS
    vtkMFC.dll
    vtkRendering.dll
    vtkIO.dll
    vtkFiltering.dll
    vtkCommon.dll
    )
ENDIF(VTK_MFC_DELAYLOAD_VTK_DLLS)

SET( vtkDLG_SRCS 
 stdafx
 vtkDLG
 vtkDLGDlg
 vtkDLG.rc
 res/vtkDLG.rc2
) 

ADD_EXECUTABLE(vtkDLG WIN32 ${vtkDLG_SRCS})

IF(VTK_MFC_EXTRA_LIBS)
  TARGET_LINK_LIBRARIES(vtkDLG ${VTK_MFC_EXTRA_LIBS})
ENDIF(VTK_MFC_EXTRA_LIBS)

TARGET_LINK_LIBRARIES(vtkDLG vtkMFC)

6. 在vtkDLGDlg.h中添加成员变量 vtkMFCWindow *pvtkMFCWindow;
    在CvtkDLGDlg类的构造函数中添加 pvtkMFCWindow = NULL;
    在OnInitDialog()函数中添加初始化 pvtkMFCWindow = new vtkMFCWindow(GetDlgItem(IDC_VTK_WND));
    在OnDestroy()函数中添加释放资源 if (pvtkMFCWindow) delete pvtkMFCWindow;
7. 这时运行程序,会提示缺少vtkMFC.dll,把该文件从vtk编译目录下拷贝到我们程序的debug目录下,运行程序

8. 为了调整窗口大小时,使VTK渲染窗口也适应改变,做以下设置
在vtkDLGDlg.h中添加成员变量 POINT ptBorder;
在CvtkDLGDlg类的构造函数中初始化 ptBorder = CPoint(0,0);
在OnInitDialog()函数中添加初始化

	CRect cRectVTK,cRectClient;
	pvtkMFCWindow->GetClientRect(&cRectVTK);
	GetClientRect(&cRectClient);

	ptBorder.x = cRectClient.Width()  - cRectVTK.Width();
	ptBorder.y = cRectClient.Height() - cRectVTK.Height();

  

在OnSize函数中如下

View Code

现在可以运行下窗口,调整窗口大小试试了

转载于:https://www.cnblogs.com/wang0910/archive/2011/11/14/2249003.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值