<html>

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">


<meta name=Generator content="Microsoft Word 10 (filtered)">

<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Tahoma;
        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";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:blue;
        text-decoration:underline;}
p
        {margin-right:0cm;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman";}
span.emailstyle19
        {font-family:Arial;
        color:navy;}
span.EmailStyle20
        {font-family:Arial;
        color:navy;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=blue>

<div class=Section1>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Hi Isabelle,</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>I am not sure where you are calling Pipeline().
Perhaps you could try all your interactor stuff in your CView&#8217;s OnInitialUpdate()
&#8211; assuming it needs to be done only once.</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>  interactor-&gt;SetRenderWindow(m_RenderWindow);</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>  interactor-&gt;SetInteractorStyle(NULL);</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>  interactor-&gt;SetInstallMessageProc(false);</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>  interactor-&gt;Initialize();</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>  // Change the size of the VTK window to
match the client area of the View.</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>  CRect rect;</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>  GetClientRect( &amp;rect );</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>  interactor-&gt;UpdateSize( rect.right-rect.left,
rect.bottom-rect.top );             </span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Also, can you check if you are getting LBDown
in your WindowProc(). </span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>HTH</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>John.</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma'>-----Original Message-----<br>
<b><span style='font-weight:bold'>From:</span></b> Renaud Isabelle
[mailto:renauisa@yahoo.fr] <br>
<b><span style='font-weight:bold'>Sent:</span></b> </span></font><font size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>22 August 2005</span></font><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'> </span></font><font size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>21:34</span></font><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'><br>
<b><span style='font-weight:bold'>To:</span></b> John Platt<br>
<b><span style='font-weight:bold'>Cc:</span></b> vtkusers@vtk.org<br>
<b><span style='font-weight:bold'>Subject:</span></b> RE: [vtkusers] need
desperately any help with interactor and MFC</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>Hi John,</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>Thanks for having
replied. </span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>- First of all, sure that
I am very interested in your <strong><b><font color=black face="Times New Roman"><span
style='color:black'>vtkGlyph2DMapper</span></font></b></strong><font
color=black><span style='color:black'>; I think this is very convenient to use
and is exactly what I am looking for. </span></font></span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>- Then,&nbsp;my actual
work is inspiring from the example <strong><b><font face="Times New Roman">LiverTumorSegmentation</font></b></strong>
application and&nbsp;I think that maybe <strong><b><font face="Times New Roman">I
don't really need to use vtkPointPicker</font></b></strong> but just handling
LeftButtonPressEvent event instead. Indeed, I took a look on the Pick() method
of this class and&nbsp;it calls <strong><b><font face="Times New Roman">SetDisplayPoint(),&nbsp;DisplayToWorld()
and&nbsp;GetWorldPoint() </font></b></strong>methods as I was already doing in
my own class. </span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>- So, this is what is
done for now:&nbsp;as in <strong><b><font face="Times New Roman">LiverTumorSegmentation</font></b></strong>,
I have 2 classes: one for MFC handling <strong><b><font face="Times New Roman">CView</font></b></strong>&nbsp;and
the other for viewing slices <strong><b><font face="Times New Roman">vtkSliceViewer</font></b></strong>:</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>void CView::Pipeline()</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">{</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;viewer.SetInput(image);</font></b></strong></span></b>
//vtkSliceViewer viewer</p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;viewer.SetInteractor(
interactor );&nbsp;</span></font></b></strong><b><span style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">&nbsp;interactor-&gt;SetInstallMessageProc(false);</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;interactor-&gt;Initialize();</font></b></strong></span></b></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>}</span></font></b></strong></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>LRESULT
CView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">{</font></b></strong><br>
<strong><b><font face="Times New Roman">if(message ==&nbsp;WM_LBUTTONDOWN)</font></b></strong></span></b></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>{</span></font></b></strong></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;&nbsp;if (
this-&gt;interactor-&gt;GetInitialized() )</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;{</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;return
vtkHandleMessage2(this-&gt;m_hWnd, message, wParam, lParam,
this-&gt;interactor);</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;}</font></b></strong></span></b></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;}</span></font></b></strong></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>else </span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">&nbsp;return
CFormView::WindowProc(message, wParam, lParam);</font></b></strong><br>
<strong><b><font face="Times New Roman">}</font></b></strong></span></b></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>the other class
vtkSliceviewer:</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>void
vtkSliceViewer::SetInteractor( vtkRenderWindowInteractor * interactor )</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">{</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;
interactor-&gt;SetRenderWindow(m_RenderWindow);</font></b></strong></span></b></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;
interactor-&gt;SetInteractorStyle(NULL);</span></font></b></strong></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></b></strong></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;//create a callback
for the left mouseclick</span></font></b></strong><b><span style='font-weight:
bold'><br>
<strong><b><font face="Times New Roman">&nbsp; MyInteractorCallback*
m_pInteractorCallback = MyInteractorCallback::New();</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;
m_pInteractorCallback-&gt;SetImageSliceViewer(this); </font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp; interactor-&gt;AddObserver(
vtkCommand::LeftButtonPressEvent, m_pInteractorCallback);</font></b></strong><br>
<strong><b><font face="Times New Roman">}</font></b></strong></span></b></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>class
MyInteractorCallback : public vtkCommand</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">{</font></b></strong><br>
<strong><b><font face="Times New Roman">public:</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;static MyInteractorCallback
*New() { return new MyInteractorCallback;}</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp; virtual void
Execute(vtkObject *caller, unsigned long eventId, void *callData)</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp; {</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;vtkWin32RenderWindowInteractor&nbsp;
*interactor = reinterpret_cast&lt;vtkWin32RenderWindowInteractor *&gt;(caller);</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int x = interactor-&gt;GetEventPosition()[0];</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int y = interactor-&gt;GetEventPosition()[1];</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;m_viewer-&gt;SelectPoint(x,y);</font></b></strong></span></b><br>
&nbsp;<strong><b><font face="Times New Roman">&nbsp;&nbsp; }</font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">&nbsp;</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;void
SetImageSliceViewer(vtkSliceViewer* viewer){m_viewer = viewer;}</font></b></strong></span></b></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>private:</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;
MyInteractorCallback(){m_viewer = NULL;}</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp; vtkSliceViewer*
m_viewer; </font></b></strong><br>
<strong><b><font face="Times New Roman">};</font></b></strong></span></b></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>void
vtkSliceViewer::SelectPoint( int x, int y )</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">{</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;TRACE(&quot;ds
SelectPoint\n&quot;); //check if my observer is called</font></b></strong></span></b></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></font></b></strong><span style='background:yellow'>--&gt; displayed
only when point clicked is outside the render window!!!!!!!!</span></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></b></strong>//
Convert display point to world point</p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp; double
world_point[4];</span></font></b></strong><b><span style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">&nbsp; m_Renderer-&gt;SetDisplayPoint(
x, y, 0 );</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp; m_Renderer-&gt;DisplayToWorld();</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp; m_Renderer-&gt;GetWorldPoint(
world_point );</font></b></strong></span></b></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp; double realz =
m_SliceNum * spacing[2] + origin[2];</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">&nbsp; world_point[2] = realz;</font></b></strong></span></b></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp; //mark point
clicked on viewer</span></font></b></strong><b><span style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">&nbsp;
this-&gt;SelectPoint(world_point[0], world_point[1], world_point[2]);</font></b></strong><br>
<strong><b><font face="Times New Roman">}</font></b></strong></span></b></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'><br>
- But I am really confused with something strange:&nbsp;<strong><b><font
face="Times New Roman">my renderwindow is&nbsp;just a part of the&nbsp;MFC
window (CView</font></b></strong>). Yet, when I pressed left button mouse in
the window class, SelectPoint() is called&nbsp;only when my clicked point is
not in the render window. I checked out if my interactor size was set to
correct dimensions and it is actually the case. <strong><b><font
face="Times New Roman">But I can't figure out why my function is called only
when I clicked outside the render window.</font></b></strong> </span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>Any idea???</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>Isabelle</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'><br>
<b><i><span style='font-weight:bold;font-style:italic'>John Platt
&lt;jcplatt@lineone.net&gt;</span></i></b> a écrit :</span></font></p>

</div>

<blockquote style='border:none;border-left:solid #1010FF 1.5pt;padding:0cm 0cm 0cm 4.0pt;
margin-left:3.75pt;margin-top:5.0pt;margin-bottom:5.0pt'>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>Hi
Isabelle,</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>As far
as I can see, the pick events are fired by the Pick() method of the
interactor&#8217;s picker. If you want to observe these events, you must add
the observers to the picker, not the interactor. You must also arrange for the
Pick() method to be called.</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>As a
start, in the check for LeftButtonPressEvent, call Pick() with the current
mouse event position and then get the point id -</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int x = interactor-&gt;GetEventPosition()[0];</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int y = interactor-&gt;GetEventPosition()[1];</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
vtkPointPicker* picker = interactor-&gt;GetPicker(); </span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
picker-&gt;Pick( (double)x, (double)y, 0, renderer );</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int pointId = picker-&gt;GetPointId();</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>and
print the point Id using the TRACE macro. If you cannot get the
LeftButtonPressEvent, see the recent thread on &#8220;handle right mouse
click&#8221;.</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>I have
drawn various 2D shapes, by first creating a polydata object, and then, as each
point is clicked, add the point as a vertex to the polydata. The polydata is
set as input to vtkGlyph2DMapper (very similar to vtkTextMapper). This mapper
takes vtkGlyphSource2D as a source and copies the specified shape (diamond,
circle, square etc.) to each of the points in the polydata. The mapper then
feeds a single vtkActor2D. Something like &#8230;</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>&nbsp;&nbsp;
vtkGlyphSource2D* vtkGlyphSource = vtkGlyphSource2D::New();</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>&nbsp;&nbsp;
vtkGlyphSource-&gt;SetGlyphTypeToCircle();</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>&nbsp;&nbsp;
m_vtkGlyphMapper = vtkGlyph2DMapper::New();</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>&nbsp;&nbsp;
m_vtkGlyphMapper-&gt;SetInput( m_vtkInputPolyData );</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>&nbsp;&nbsp;
m_vtkGlyphMapper-&gt;SetSource( vtkGlyphSource-&gt;GetOutput() );</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>&nbsp;&nbsp;
vtkGlyphSource-&gt;Delete();</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>&nbsp;&nbsp;
m_vtkGlyphActor = vtkActor2D::New();</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>&nbsp;&nbsp;
m_vtkGlyphActor-&gt;SetMapper( m_vtkGlyphMapper );</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>I can
let you have the mapper if you think it would be helpful.</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>John.</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

<p class=MsoNormal style='margin-left:72.0pt'><font size=2 face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma'>-----Original Message-----<br>
<b><span style='font-weight:bold'>From:</span></b>
vtkusers-bounces+jcplatt=lineone.net@vtk.org
[mailto:vtkusers-bounces+jcplatt=lineone.net@vtk.org] <b><span
style='font-weight:bold'>On Behalf Of </span></b>Renaud Isabelle<br>
<b><span style='font-weight:bold'>Sent:</span></b> </span></font><font size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>18 August 2005</span></font><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'> </span></font><font size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>16:32</span></font><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'><br>
<b><span style='font-weight:bold'>To:</span></b> vtkusers@public.kitware.com<br>
<b><span style='font-weight:bold'>Subject:</span></b> [vtkusers] help with
interactor and MFC</span></font></p>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>Hi guys, </span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>I have to implement user
interaction with my renderwindow in MFC: </span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>user&nbsp;picks&nbsp;points
on the displayed medical image and notices them with spheres. I saw that I have
to use <strong><b><font face="Times New Roman">vtkHandleMessage2</font></b></strong>
with <strong><b><font face="Times New Roman">vtkWin32RenderWindowInteractor</font></b></strong>
to handle a left button mouse click and <strong><b><font face="Times New Roman">interactor-&gt;AddObserver()</font></b></strong>
to call a function to handle it. </span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>But now, I see that <strong><b><font
face="Times New Roman">vtkPointPicker</font></b></strong> exists and that is
doing the same thing. I am really a bit confused with all the options. Here is
what I did:</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp; <strong><b><font
face="Times New Roman">interactor-&gt;SetRenderWindow(m_RenderWindow);</font></b></strong></span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;
interactor-&gt;SetInteractorStyle(NULL);</span></font></b></strong></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp; vtkPointPicker
*picker = vtkPointPicker::New();</span></font></b></strong></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;
interactor-&gt;SetPicker(picker);</span></font></b></strong></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;&nbsp;<strong><b><font
face="Times New Roman">vtkMyCallback* how_execute = vtkMyCallback::New();</font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;interactor-&gt;AddObserver(
vtkCommand::LeftButtonPressEvent, how_execute );</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp; interactor-&gt;AddObserver(
vtkCommand::EndPickEvent,&nbsp; how_execute);</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp; </font></b></strong></span></b></span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;
interactor-&gt;SetInstallMessageProc(false);</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;interactor-&gt;Initialize();</font></b></strong></span></b></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>LRESULT CMyView::<strong><b><font
face="Times New Roman">WindowProc(UINT message, WPARAM wParam, LPARAM lParam)</font></b></strong><b><span
style='font-weight:bold'><br>
</span></b>{<br>
&nbsp;// TODO: Add your specialized code here and/or call the base class<br>
&nbsp;<strong><b><font face="Times New Roman">switch ( message )</font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">&nbsp;{</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;case WM_LBUTTONDOWN:</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;if (
this-&gt;interactor-&gt;GetInitialized() )</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;{</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;return
vtkHandleMessage2(this-&gt;m_hWnd, message, wParam, lParam,
this-&gt;interactor);</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;}</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;break;</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;}</font></b></strong><br>
</span></b>&nbsp;<strong><b><font face="Times New Roman">return
CFormView::WindowProc(message, wParam, lParam);</font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">}</font></b></strong></span></b></span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>class vtkMyCallback :
public vtkCommand</span></font></b></strong><b><span style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">{</font></b></strong></span></b></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>public:</span></font></b></strong></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp; static
vtkMyCallback *New()&nbsp; {&nbsp;return new vtkMyCallback;&nbsp;}</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;virtual void
Execute(vtkObject *caller, unsigned long eventId, void*)</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp; {</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
vtkRenderWindowInteractor* interactor
=&nbsp;reinterpret_cast&lt;vtkRenderWindowInteractor*&gt;(caller);</font></b></strong></span></b></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;&nbsp;&nbsp;&nbsp; <strong><b><font
face="Times New Roman">if(eventId == vtkCommand::LeftButtonPressEvent)</font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp; </font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int point[2];</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
interactor-&gt;GetEventPosition(point);</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
m_viewer-&gt;SelectPoint(point[0],point[1]);</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp; }</font></b></strong></span></b></span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;&nbsp; <strong><b><font
face="Times New Roman">if(eventId == vtkCommand::EndPickEvent)</font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp; {&nbsp; </font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
vtkPointPicker* picker = (vtkPointPicker*) interactor-&gt;GetPicker();</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if(picker-&gt;GetPointId() != -1)</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;{</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
float* position = picker-&gt;GetPickPosition();</font></b></strong></span></b></span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
m_sphereActor-&gt;SetPosition(position);</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}</font></b></strong></span></b><br>
&nbsp;&nbsp; }<br>
}</p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>- This seems not to work.
I think that I have to choose between handling one of the event:
LeftButtonPressEvent or EndPickEvent. But I don't know what is the best option.
Could someone tell me what is best? </span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>- Btw, my purpose is to
add a circle on each point that user picked. Do I have to handle a <strong><b><font
face="Times New Roman">array of vtkSphereSource</font></b></strong> to display
so many spheres?</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>Thanks for replyiong,
guys,</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>Isabelle</span></font></p>

</div>

<div style='margin-left:36.0pt'>

<div class=MsoNormal align=center style='margin-left:36.0pt;text-align:center'><font
size=3 face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=1 width="100%" align=center>

</span></font></div>

</div>

<p class=MsoNormal style='margin-left:72.0pt'><b><font size=3 color=red
face="Times New Roman"><span style='font-size:12.0pt;color:red;font-weight:
bold'>Appel audio GRATUIT</span></font> partout dans le monde</b> avec le
nouveau Yahoo! Messenger<br>
<a
href="http://us.rd.yahoo.com/messenger/mail_taglines/default/*http:/fr.messenger.yahoo.com">Téléchargez
le ici !</a> </p>

</blockquote>

<div class=MsoNormal align=center style='margin-left:36.0pt;text-align:center'><font
size=3 face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=1 width="100%" align=center>

</span></font></div>

<p class=MsoNormal style='margin-left:36.0pt'><b><font size=3 color=red
face="Times New Roman"><span style='font-size:12.0pt;color:red;font-weight:
bold'>Appel audio GRATUIT</span></font> partout dans le monde</b> avec le
nouveau Yahoo! Messenger<br>
<a
href="http://us.rd.yahoo.com/messenger/mail_taglines/default/*http:/fr.messenger.yahoo.com">Téléchargez
le ici !</a> </p>

</div>

</body>

</html>