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函数中如下
现在可以运行下窗口,调整窗口大小试试了