[vtkusers] help with renderwindow just a part of MFC window
Renaud Isabelle
renauisa at yahoo.fr
Thu Aug 25 09:54:52 EDT 2005
Hi,
I tried what to advice me, and now, no problem anymore concerning clicking in my render window. I am so happy, thanks a lot.
CWnd* pWnd = GetDlgItem(IDC_RECT);
myRenderWindow ->SetParentId(this->m_hWnd);
myRenderWindow ->SetWindowId(pWnd->GetSafeHwnd());
myRenderWindow ->WindowInitialize();
pWnd->ShowWindow(SW_SHOW);
- However, there is still something annoying:
now that my renderwindow is associated with the MFC window (CWnd* pWnd), the only way to make it appear, is to set the MFC window visible (ShowWindow(SW_SHOW)). But, by doing this, the MFC window itself is also visible and every paint called, I have to click on the render window that I can't see to make it appear. So strange! what I would like to have is a render window visible but not the rectangle that contains it.
Any idea?!
Isabelle
John Platt <jcplatt at lineone.net> a écrit :
Hi Isabelle,
I havent used CFormView but I assume you have defined a control on your dialog template (IDC_RECT?) in which to draw the vtk images. I would have thought that the vtk render window wants the handle to this control rather than the CFormView derived class, something like
CWnd* pWnd = GetDlgItem(IDC_RECT);
HWND hWnd = pWnd->GetSafeHwnd();
myRenderWindow ->SetParentId( hWnd );
Only a guess.
John.
-----Original Message-----
From: vtkusers-bounces+jcplatt=lineone.net at vtk.org [mailto:vtkusers-bounces+jcplatt=lineone.net at vtk.org] On Behalf Of Renaud Isabelle
Sent: 23 August 2005 19:05
To: insight-users at itk.org; vtkusers at public.kitware.com
Subject: [vtkusers] help with renderwindow just a part of MFC window
Hi,
I got some problems with handling interaction between MFC interface and vtkRenderWindow.
The main problem that I have, lies in the fact that my render window is just a small part of my MFC window (CView). Indeed, when left button mouse is pressed in the MFC window, my function renderWindow->SelectPoint() is called only when 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. But I can't figure out why my function is called only when I clicked outside the render window.
- Maybe the origin of the problem is that I am missing something with SetParentId, SetWindowId and so on...
Most of the examples that I read deal with a vtkRenderWindow's size the same than CView's size: in this case, myRenderWindow->SetParentId(this->h_Wnd) seems to fit exactly.
Here is what I did:
// setup the parent window
myRenderWindow->SetParentId(this->m_hWnd);
myRenderWindow->WindowInitialize();
CRect rect;
GetDlgItem(IDC_RECT)->GetWindowRect(rect);
myRenderWindow->SetPosition(rect.left,rect.top);
myRenderWindow->SetSize(rect.Width(),rect.Height());
- Now, I saw an example where:
HWND hWndRenderer = ::CreateWindowEx(WS_EX_CLIENTEDGE, OCT3DRENDERCLASS, NULL, WS_CHILD|WS_VISIBLE|WS_TABSTOP, 7, 7, nWidth, nHeight, m_hWnd, NULL, AfxGetInstanceHandle(), NULL);
myRenderWindow->SetParentId(hWndRenderer);
Does someone try this kind of thing? Do you think this could be the solution? Or maybe someone has examples where, like me, the render window is just a part of a MFC window.
- Or, maybe, my problem comes from somewhere else: timer, interactor->Start()... because after a while everything works fine.
I hope someone can help me.....
Isabelle
---------------------------------
Appel audio GRATUIT partout dans le monde avec le nouveau Yahoo! Messenger
Téléchargez le ici !
---------------------------------
Appel audio GRATUIT partout dans le monde avec le nouveau Yahoo! Messenger
Téléchargez le ici !
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20050825/4181322e/attachment.htm>
More information about the vtkusers
mailing list