<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 10 (filtered)">
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
h3
        {margin-right:0cm;
        margin-left:0cm;
        font-size:13.5pt;
        font-family:Verdana;
        color:#330099;}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {font-family:Arial;
        color:windowtext;}
@page Section1
        {size:595.3pt 841.9pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.Section1
        {page:Section1;}
/* List Definitions */
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
-->
</style>
</head>
<body lang=EN-US link=blue vlink=purple>
<div class=Section1>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>I have had considerable frustrations with developing
under Visual C++ 6.0 using MFC. In looking through the postings on the
newsgroup, the major problems lie in vtkMFC* and, also for new users, how to
integrate these classes into an application. </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>So, I decided to revisit the whole problem and
develop without using the vtkMFC* classes. In fact it turned out to be quite
simple to just create a project and modify some of the methods to yield a full
blown application that also has printing enabled. </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>Moreover, if you want to develop a completely new
application you only have to modify the constructor, destructor and pipeline
for the view. This was a big surprise! </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>Of course there are still leaks in some of the vtk objects
that appear on exit, but the interactor and printing works nicely.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>My questions are: </span></font></p>
<p class=MsoNormal style='margin-left:36.0pt;text-indent:-18.0pt'><font size=2
face=Arial><span lang=EN-AU style='font-size:10.0pt;font-family:Arial'>1)<font
size=1 face="Times New Roman"><span style='font:7.0pt "Times New Roman"'>
</span></font></span></font><font size=2 face=Arial><span lang=EN-AU
style='font-size:10.0pt;font-family:Arial'>Is this sample of use to the
community in general? </span></font></p>
<p class=MsoNormal style='margin-left:36.0pt;text-indent:-18.0pt'><font size=2
face=Arial><span lang=EN-AU style='font-size:10.0pt;font-family:Arial'>2)<font
size=1 face="Times New Roman"><span style='font:7.0pt "Times New Roman"'>
</span></font></span></font><font size=2 face=Arial><span lang=EN-AU
style='font-size:10.0pt;font-family:Arial'>If so, would anyone at VTK like the
code in order to check it and incorporate it into the GUI folder i.e in .VTK\Examples\GUI?
</span></font></p>
<p class=MsoNormal style='margin-left:36.0pt;text-indent:-18.0pt'><font size=2
face=Arial><span lang=EN-AU style='font-size:10.0pt;font-family:Arial'>3)<font
size=1 face="Times New Roman"><span style='font:7.0pt "Times New Roman"'>
</span></font></span></font><font size=2 face=Arial><span lang=EN-AU
style='font-size:10.0pt;font-family:Arial'>If so, I’ll also write an
example using the multiple document interfaces that will reads a vtk file and
display it.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> </span></font></p>
<div style='border:none;border-bottom:solid windowtext 1.0pt;padding:0cm 0cm 1.0pt 0cm'>
<p class=MsoNormal style='border:none;padding:0cm'><font size=2 face=Arial><span
lang=EN-AU style='font-size:10.0pt;font-family:Arial'>For your interest, here
are the sample instructions for a creating a SDI application under MFC:</span></font></p>
<p class=MsoNormal style='border:none;padding:0cm'><font size=2 face=Arial><span
lang=EN-AU style='font-size:10.0pt;font-family:Arial'> </span></font></p>
</div>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>The creation of a Microsoft Foundation Class Single
Document Interface using vtk.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>A complete implementation using the sample code for
Visualizing a Quadric Function is provided in this folder.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>First you need to create a MFC/SDI Project:</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> Use
the Visual C++ IDE (Version 6) to create a project.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> File
| New Project</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> Select
the Projects tab and the MFC App Wizard (exe)</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> Name
the project and create a new workspace by pressing OK.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> In
Step 1, select Single Document</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> Continue
through to Step 4 by pressing Next.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> In
Step 4 select advanced.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> If
you want to associate a file extension with the program,enter it into the File
extension box.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> If
you want vary Window Styles, select the Window Style tab and choose whatever
you want, e.g Use Split Window</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> Click
on Close</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> Either
continue clicking Next or Finish.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>At this point you will have created a skeleton
application.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>Now you need to add the vtk functionality to this
application.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>This will consist of adding vtk specific code and
over-riding the functionality of of existing methods in the Document or View.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>In this example, we are not going to use file IO so
all modifications will occur in the View. The view class is named as follows:
C<Project Name>View e.g. if the Project name is VtkSDI then the view
class is called CVtkSDIView.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>Modify the project settings to include the VTK files
and libraries.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> 1)
Project | Settings... and ensure that Settings for All Configurations is
chosen.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> 2)
Select the Tab: C/C++, category Preprocessor and add in the path to the header
files e.g.
C:\vtk\vtkbin,C:\vtk\vtk\Common,C:\vtk\vtk\Filtering,C:\vtk\vtk\Graphics,C:\vtk\vtk\Hybrid,C:\vtk\vtk\Imaging,C:\vtk\vtk\IO,C:\vtk\vtk\Rendering
into the Additional Include Directories box.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> 3)
Select the Tab: Link, and enter the Object/Library modules into the
Object/Library Modules box e.g. vtkCommon.lib vtkFiltering.lib vtkGraphics.lib vtkHybrid.lib
vtkImaging.lib vtkIO.lib vtkjpeg.lib vtkpng.lib vtkRendering.lib vtkzlib.lib</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> 4)
Now select Input and change Settings For: All Configurations to Debug and put
in the path to the Debug libraries and DLL's into the Additional Library path
box e.g: C:\vtk\vtkbin\bin\Debug </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> 5)
Now select Input and change Settings For: Debug to Release and put in the path
to the Release libraries and DLL's into the Additional Library path box e.g:
C:\vtk\vtkbin\bin\Release </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>In the view class:</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> 1)
Add the necessary VTK variables and corresponding VTK header files. It is best
to make these variables private. Now these variables need to be created and
deleted. So...</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> 2)
In the constructor add the necessary creation code.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> 3)
In the destructor, add the necessary deletion code.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> 4)
Remember: for every New in the constructor, you must have a corresponding
Delete in the destructor.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> 5)
Add the windows message handler corresponding to WM_CREATE and insert code code
to enable adding the renderer to the vtk window and link the wiew to the vtk
window. This function called OnCreate(). </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> 6)
We need to add functionality to the OnDraw method to enable the VTK object to
be viewed, manipulated and printed. In this method, we will also call a
function that sets up the pipeline for the rendering process. Let's call this
member function Pipeline().</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> 7)
In order to allow resizing, add the windows message handler corresponding to
WM_SIZE and insert code for resizing. This creates a function called OnSize().</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> 8)
Flickering will occur if you resize the view so, add the windows message hadler
corresponding to WM_ERASEBKGND to create the function called OnEraseBkgnd() and
over-ride it to return TRUE.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> 9)
Add the required code to Pipeline() to create the VTK rendition of a scene or
object.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>Once these steps are completed, you will, in general,
need only to modify code in steps 1, 2, 3, and 9 if you want to visualise a new
function.</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'> </span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>References to the code in vtkSDI*.*</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>Setp File Function</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>1) vtkSDIView.h</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>2) vtkSDIView.cpp CVtkSDIView::CVtkSDIView()</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>3) vtkSDIView.cpp CVtkSDIView::~CVtkSDIView()</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>5) vtkSDIView.cpp CVtkSDIView::OnCreate(LPCREATESTRUCT
lpCreateStruct)</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>6) vtkSDIView.cpp CVtkSDIView::OnDraw(CDC*
pDC)</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>7) vtkSDIView.cpp CVtkSDIView::OnSize(UINT
nType, int cx, int cy)</span></font></p>
<p class=MsoNormal><font size=2 face=Arial><span lang=EN-AU style='font-size:
10.0pt;font-family:Arial'>8) vtkSDIView.cpp CVtkSDIView::OnEraseBkgnd(CDC*
pDC)</span></font></p>
<div style='border:none;border-bottom:solid windowtext 1.0pt;padding:0cm 0cm 1.0pt 0cm'>
<p class=MsoNormal style='border:none;padding:0cm'><font size=2 face=Arial><span
lang=EN-AU style='font-size:10.0pt;font-family:Arial'>9) vtkSDIView.cpp CVtkSDIView::Pipeline()</span></font></p>
<p class=MsoNormal style='border:none;padding:0cm'><font size=2 face=Arial><span
lang=EN-AU style='font-size:10.0pt;font-family:Arial'> </span></font></p>
</div>
<h3><b><font size=2 color="#330099" face=Verdana><span style='font-size:10.0pt'> </span></font></b></h3>
<h3><b><font size=2 color="#330099" face=Verdana><span style='font-size:10.0pt'>___________________________________________<br>
</span></font></b><font size=2><span style='font-size:10.0pt'>Andrew J. P.
Maclean</span></font></h3>
<table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 width=383
style='width:287.6pt' height=75>
<tr height=75 style='height:56.25pt'>
<td width=50 height=75 valign=top style='width:37.8pt;padding:0cm 0cm 0cm 0cm;
height:56.25pt'>
<p class=MsoNormal><font size=2 face=Verdana><span lang=EN-AU
style='font-size:10.0pt;font-family:Verdana'>Postal:</span></font></p>
</td>
<td width=333 height=75 valign=top style='width:249.8pt;padding:0cm 0cm 0cm 0cm;
height:56.25pt'>
<p class=MsoNormal><font size=2 face=Verdana><span lang=EN-AU
style='font-size:10.0pt;font-family:Verdana'>Australian Centre for Field
Robotics<br>
The Rose Street Building J04<br>
The University of Sydney 2006 NSW<br>
AUSTRALIA</span></font></p>
</td>
</tr>
<tr>
<td width=50 style='width:37.8pt;padding:0cm 0cm 0cm 0cm'>
<p class=MsoNormal><font size=2 face=Verdana><span lang=EN-AU
style='font-size:10.0pt;font-family:Verdana'>Room:</span></font></p>
</td>
<td width=333 style='width:249.8pt;padding:0cm 0cm 0cm 0cm'>
<p class=MsoNormal><font size=2 face=Verdana><span lang=EN-AU
style='font-size:10.0pt;font-family:Verdana'>106</span></font></p>
</td>
</tr>
<tr>
<td width=50 style='width:37.8pt;padding:0cm 0cm 0cm 0cm'>
<p class=MsoNormal><font size=2 face=Verdana><span lang=EN-AU
style='font-size:10.0pt;font-family:Verdana'>Phone:</span></font></p>
</td>
<td width=333 style='width:249.8pt;padding:0cm 0cm 0cm 0cm'>
<p class=MsoNormal><font size=2 face=Verdana><span lang=EN-AU
style='font-size:10.0pt;font-family:Verdana'>+61 2 9351 3283</span></font></p>
</td>
</tr>
<tr>
<td width=50 style='width:37.8pt;padding:0cm 0cm 0cm 0cm'>
<p class=MsoNormal><font size=2 face=Verdana><span lang=EN-AU
style='font-size:10.0pt;font-family:Verdana'>Fax:</span></font></p>
</td>
<td width=333 style='width:249.8pt;padding:0cm 0cm 0cm 0cm'>
<p class=MsoNormal><font size=2 face=Verdana><span lang=EN-AU
style='font-size:10.0pt;font-family:Verdana'>+61 2 9351 7474</span></font></p>
</td>
</tr>
<tr>
<td width=50 style='width:37.8pt;padding:0cm 0cm 0cm 0cm'>
<p class=MsoNormal><font size=2 face=Verdana><span lang=EN-AU
style='font-size:10.0pt;font-family:Verdana'> </span></font></p>
</td>
<td width=333 style='width:249.8pt;padding:0cm 0cm 0cm 0cm'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-AU
style='font-size:12.0pt'><a href="http://www.acfr.usyd.edu.au/"><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>http://www.acfr.usyd.edu.au/</span></font></a></span></font></p>
</td>
</tr>
</table>
<p class=MsoNormal><b><font size=2 color="#330099" face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;color:#330099;font-weight:bold'>___________________________________________</span></font></b></p>
<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-AU
style='font-size:12.0pt'> </span></font></p>
</div>
</body>
</html>