[vtkusers] Rendering in the existing window!

Alex Malyushytskyy alexmalvtk at gmail.com
Wed May 22 14:06:01 EDT 2013


try  add

renWin->SetParentId(handler);

to
drawSphere(HWND handler)

vtk source has Win32Cone.cxx example which might be useful

Alex



On Wed, May 22, 2013 at 2:36 AM, Le Minh Nhat <nhatleminh10 at gmail.com>wrote:

> Hi everyone,
> I am quite new to Vtk, and I have tried to create a sphere using Vtk.
> However, the rendering window is separated from my existing window. Here is
> my source code:
>
> #include <windows.h>
>
> #include "vtkSphereSource.h"
> #include "vtkPolyDataMapper.h"
> #include "vtkProperty.h"
> #include "vtkActor.h"
> #include "vtkRenderWindow.h"
> #include "vtkRenderer.h"
> #include "vtkRenderWindowInteractor.h"
> #include "vtkWin32OpenGLRenderWindow.h"
> #include "vtkNew.h"
> #include "vtkCamera.h"
> //
> //
> void drawSphere(HWND handler)
> {
>   // create sphere geometry
>   vtkSphereSource *sphere = vtkSphereSource::New();
>   sphere->SetRadius(1.0);
>   sphere->SetThetaResolution(18);
>   sphere->SetPhiResolution(18);
>
>   // map to graphics library
>   vtkPolyDataMapper *map = vtkPolyDataMapper::New();
>   map->SetInput(sphere->GetOutput());
>
>   // actor coordinates geometry, properties, transformation
>   vtkActor *aSphere = vtkActor::New();
>   aSphere->SetMapper(map);
>   aSphere->GetProperty()->SetColor(0,0,1); // sphere color blue
>
>   // a renderer and render window
>   vtkRenderer *ren1 = vtkRenderer::New();
>   vtkRenderWindow *renWin = vtkRenderWindow::New();
>
>   renWin->AddRenderer(ren1);
>
>   // an interactor
>   vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
>   iren->SetRenderWindow(renWin);
>
>   // add the actor to the scene
>   ren1->AddActor(aSphere);
>   ren1->SetBackground(1,1,1); // Background color white
>
>   // render an image (lights and cameras are created automatically)
>   //renWin->InitializeFromCurrentContext();
>   renWin->Render();
>
>
>   // begin mouse interaction
>   iren->Start();
>
>   // release memory and return
>   sphere->Delete();
>   map->Delete();
>   aSphere->Delete();
>   ren1->Delete();
>   renWin->Delete();
>   iren->Delete();
>
> }
>
> LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
> {
>     switch(msg)
>     {
>
>
>         case WM_CLOSE:
>             DestroyWindow(hwnd);
>         break;
>
>         case WM_DESTROY:
>             PostQuitMessage(0);
>         break;
>
>         case WM_PAINT:
>             drawSphere(hwnd);
>         break;
>
>         default:
>             return DefWindowProc(hwnd, msg, wParam, lParam);
>     }
>     return 0;
> }
>
> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR
> lpCmdLine, int nCmdShow)
> {
>     WNDCLASSEX wc;
>     HWND hwnd;
>     MSG Msg;
>
>     wc.cbSize            = sizeof(WNDCLASSEX);
>     wc.style            = 0;
>     wc.lpfnWndProc        = WndProc;
>     wc.cbClsExtra        = 0;
>     wc.cbWndExtra        = 0;
>     wc.hInstance        = hInstance;
>     wc.hIcon            = LoadIcon(NULL, IDI_APPLICATION);
>     wc.hCursor            = LoadCursor(NULL, IDC_ARROW);
>     wc.hbrBackground    = (HBRUSH)(COLOR_WINDOW+1);
>     wc.lpszMenuName        = NULL;
>     wc.lpszClassName    = "mySphere";
>     wc.hIconSm            = LoadIcon(NULL, IDI_APPLICATION);
>
>     if(!RegisterClassEx(&wc))
>     {
>         MessageBox(NULL, "Window Registration Failed!", "Error!",
> MB_ICONEXCLAMATION | MB_OK);
>         return 0;
>     }
>
>     hwnd = CreateWindowEx(
>         WS_EX_CLIENTEDGE,
>         "mySphere",
>         "Sphere",
>         WS_OVERLAPPEDWINDOW,
>         CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
>         NULL, NULL, hInstance, NULL);
>
>     if(hwnd == NULL)
>     {
>         MessageBox(NULL, "Window Creation Failed!", "Error!",
>             MB_ICONEXCLAMATION | MB_OK);
>         return 0;
>     }
>
>     ShowWindow(hwnd, nCmdShow);
>     UpdateWindow(hwnd);
>
>     while(GetMessage(&Msg, NULL, 0, 0) > 0)
>     {
>         TranslateMessage(&Msg);
>         DispatchMessage(&Msg);
>     }
>     return Msg.wParam;
> }
>
> Anyone has any idea how to set the rendering window and the existing
> window to be one! Any response will be appreciated.
> Best regards,
> Bent
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the VTK FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20130522/4035d82c/attachment.htm>


More information about the vtkusers mailing list