<div>Hellow everyone,</div>
<div> </div>
<div>I&#39;m developing PACS-system with MIP-plugin which can view Maximum Intensity Projection of DICOM images ( mainly CT-slices) and now i&#39;m having troubles with programming mouse handler in which i should change LUT or use predefined handler in vtkWin32RenderWindowInteractor - these actions are made subject to the user&#39;s choise. The trouble is that if hte LUT changing tool is chosen the LUT parameters don&#39;t change at all. The part of code where the handler decides what to do is below ( CVRWindowInteractor is derived from vtkWin32RenderWindowInteractor ). if i&#39;m not mistaken, i should invoke some methods to apply the changes in m_pOpacityFun (vtkPiecewiseFunction ) and m_pColorFun (vtkColorTransferFunction), but i don&#39;t know which. Could you please tell me where i&#39;m wrong.</div>

<div> </div>
<div>Thank you for your reply.</div>
<div> </div>
<div><font color="#0000ff" size="2">
<p>void</p></font><font size="2"> CVRWindowInteractor::OnLButtonDown( HWND wnd, UINT nFlags, </font><font color="#0000ff" size="2">int</font><font size="2"> X, </font><font color="#0000ff" size="2">int</font><font size="2"> Y, </font><font color="#0000ff" size="2">int</font><font size="2"> repeat )
<p>{</p>
<p></p></font><font color="#0000ff" size="2">if</font><font size="2"> (!</font><font color="#0000ff" size="2">this</font><font size="2">-&gt;Enabled) 
<p>{</p>
<p></p></font><font color="#0000ff" size="2">return</font><font size="2">;
<p>}</p>
<p></p></font><font color="#0000ff" size="2">if</font><font size="2"> ( MIP_LUTChange == m_Mode )
<p>{</p>
<p>SetFocus( wnd );</p>
<p>SetCapture( wnd );</p>
<p>m_pLUTChangeControl-&gt;ChangeWin( 0, 0, </p></font><font color="#0000ff" size="2">false</font><font size="2"> );
<p></p></font><font color="#0000ff" size="2">int</font><font size="2"> WinCenter = 0;
<p></p></font><font color="#0000ff" size="2">int</font><font size="2"> WinWidth = 0;
<p>m_pLUTChangeControl-&gt;GetCW( &amp;WinCenter, &amp;WinWidth );</p>
<p>m_pOpacityFun-&gt;RemoveAllPoints();</p>
<p></p></font><font color="#0000ff" size="2">double</font><font size="2"> lfCenter = ( WinCenter - m_lfaCastRange[ 0 ] ) * ( VTK_UNSIGNED_SHORT_MAX / 
<p>( m_lfaCastRange[ 1 ] - m_lfaCastRange[ 0 ] ) );</p>
<p></p></font><font color="#0000ff" size="2">double</font><font size="2"> lfWindow = ( WinWidth - m_lfaCastRange[ 0 ] ) * ( VTK_UNSIGNED_SHORT_MAX / 
<p>( m_lfaCastRange[ 1 ] - m_lfaCastRange[ 0 ] ) );</p>
<p>m_pOpacityFun-&gt;AddPoint( lfCenter - lfWindow / 2, 0.0 );</p>
<p>m_pOpacityFun-&gt;AddPoint( lfCenter + lfWindow / 2, 1.0 );</p>
<p>m_pColorFun-&gt;BuildFunctionFromTable( lfCenter - lfWindow / 2, lfCenter + lfWindow / 2, </p>
<p>VTK_UNSIGNED_CHAR_MAX + 1 , (</p></font><font color="#0000ff" size="2">double</font><font size="2">*)( &amp;m_lfaColorTable ) );
<p>}</p>
<p></p></font><font color="#0000ff" size="2">else</font><font size="2"> </font><font color="#0000ff" size="2">if</font><font size="2"> ( MIP_Rotate == m_Mode )
<p>{</p>
<p>SetFocus( wnd );</p>
<p>SetCapture( wnd );</p>
<p></p></font><font color="#0000ff" size="2">this</font><font size="2">-&gt;SetEventInformationFlipY( X, 
<p>Y, </p>
<p>nFlags &amp; MK_CONTROL, </p>
<p>nFlags &amp; MK_SHIFT,</p>
<p>0, repeat);</p>
<p></p></font><font color="#0000ff" size="2">this</font><font size="2">-&gt;SetAltKey( GetKeyState( VK_MENU ) &amp; (~1) );
<p></p></font><font color="#0000ff" size="2">this</font><font size="2">-&gt;InvokeEvent( vtkCommand::LeftButtonPressEvent, NULL );
<p>}</p>
<p>}</p></font><font color="#0000ff" size="2">
<p>void</p></font><font size="2"> CVRWindowInteractor::OnMouseMove( HWND wnd, UINT nFlags, </font><font color="#0000ff" size="2">int</font><font size="2"> X, </font><font color="#0000ff" size="2">int</font><font size="2"> Y )
<p>{</p>
<p></p></font><font color="#0000ff" size="2">if</font><font size="2"> (!</font><font color="#0000ff" size="2">this</font><font size="2">-&gt;Enabled) 
<p>{</p>
<p></p></font><font color="#0000ff" size="2">return</font><font size="2">;
<p>}</p>
<p></p></font><font color="#0000ff" size="2">if</font><font size="2"> ( ( MIP_LUTChange == m_Mode ) &amp;&amp; ( MK_LBUTTON == nFlags ) )
<p>{</p>
<p></p></font><font color="#0000ff" size="2">if</font><font size="2"> ( !</font><font color="#0000ff" size="2">this</font><font size="2">-&gt;MouseInWindow &amp;&amp; 
<p>( X &gt;= 0 &amp;&amp; X &lt; </p></font><font color="#0000ff" size="2">this</font><font size="2">-&gt;Size[ 0 ] &amp;&amp; Y &gt;= 0 &amp;&amp; Y &lt; </font><font color="#0000ff" size="2">this</font><font size="2">-&gt;Size[ 1 ] ) )
<p>{</p>
<p>m_pLUTChangeControl-&gt;ChangeWin( X, Y, </p></font><font color="#0000ff" size="2">true</font><font size="2"> );
<p></p></font><font color="#0000ff" size="2">int</font><font size="2"> WinCenter = 0;
<p></p></font><font color="#0000ff" size="2">int</font><font size="2"> WinWidth = 0;
<p>m_pLUTChangeControl-&gt;GetCW( &amp;WinCenter, &amp;WinWidth );</p>
<p>m_pOpacityFun-&gt;RemoveAllPoints();</p>
<p></p></font><font color="#0000ff" size="2">double</font><font size="2"> lfCenter = ( WinCenter - m_lfaCastRange[ 0 ] ) * ( VTK_UNSIGNED_SHORT_MAX / 
<p>( m_lfaCastRange[ 1 ] - m_lfaCastRange[ 0 ] ) );</p>
<p></p></font><font color="#0000ff" size="2">double</font><font size="2"> lfWindow = ( WinWidth - m_lfaCastRange[ 0 ] ) * ( VTK_UNSIGNED_SHORT_MAX / 
<p>( m_lfaCastRange[ 1 ] - m_lfaCastRange[ 0 ] ) );</p>
<p>m_pOpacityFun-&gt;AddPoint( lfCenter - lfWindow / 2, 0.0 );</p>
<p>m_pOpacityFun-&gt;AddPoint( lfCenter + lfWindow / 2, 1.0 );</p>
<p>m_pColorFun-&gt;BuildFunctionFromTable( lfCenter - lfWindow / 2, lfCenter + lfWindow / 2, </p>
<p>VTK_UNSIGNED_CHAR_MAX + 1 , (</p></font><font color="#0000ff" size="2">double</font><font size="2">*)( &amp;m_lfaColorTable ) );
<p>}</p>
<p>}</p>
<p></p></font><font color="#0000ff" size="2">else</font><font size="2"> </font><font color="#0000ff" size="2">if</font><font size="2"> ( MIP_Rotate == m_Mode )
<p>{</p>
<p></p></font><font color="#0000ff" size="2">this</font><font size="2">-&gt;SetEventInformationFlipY( X, 
<p>Y, </p>
<p>nFlags &amp; MK_CONTROL, </p>
<p>nFlags &amp; MK_SHIFT );</p>
<p></p></font><font color="#0000ff" size="2">this</font><font size="2">-&gt;SetAltKey( GetKeyState( VK_MENU ) &amp; ( ~1 ) );
<p></p>
<p></p></font><font color="#0000ff" size="2">if</font><font size="2"> ( !</font><font color="#0000ff" size="2">this</font><font size="2">-&gt;MouseInWindow &amp;&amp; 
<p>( X &gt;= 0 &amp;&amp; X &lt; </p></font><font color="#0000ff" size="2">this</font><font size="2">-&gt;Size[ 0 ] &amp;&amp; Y &gt;= 0 &amp;&amp; Y &lt; </font><font color="#0000ff" size="2">this</font><font size="2">-&gt;Size[ 1 ] ) )
<p>{</p>
<p></p></font><font color="#0000ff" size="2">this</font><font size="2">-&gt;InvokeEvent(vtkCommand::EnterEvent, NULL);
<p></p></font><font color="#0000ff" size="2">this</font><font size="2">-&gt;MouseInWindow = 1;
<p></p></font><font color="#008000" size="2">// request WM_MOUSELEAVE generation</font><font size="2">
<p>TRACKMOUSEEVENT tme;</p>
<p>tme.cbSize = </p></font><font color="#0000ff" size="2">sizeof</font><font size="2">(TRACKMOUSEEVENT);
<p>tme.dwFlags = TME_LEAVE;</p>
<p>tme.hwndTrack = wnd;</p>
<p>TrackMouseEvent(&amp;tme);</p>
<p>}</p>
<p></p></font><font color="#0000ff" size="2">this</font><font size="2">-&gt;InvokeEvent(vtkCommand::MouseMoveEvent, NULL);
<p>}</p>
<p>}</p></font></div>