VTK  9.0.1
vtkWin32RenderWindowInteractor.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkWin32RenderWindowInteractor.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
33 #ifndef vtkWin32RenderWindowInteractor_h
34 #define vtkWin32RenderWindowInteractor_h
35 
37 #include "vtkRenderingUIModule.h" // For export macro
38 #include "vtkWindows.h" // For windows API.
39 
40 #include "vtkTDxConfigure.h" // defines VTK_USE_TDX
41 #ifdef VTK_USE_TDX
42 class vtkTDxWinDevice;
43 #endif
44 
45 class VTKRENDERINGUI_EXPORT vtkWin32RenderWindowInteractor : public vtkRenderWindowInteractor
46 {
47 public:
52 
54  void PrintSelf(ostream& os, vtkIndent indent) override;
55 
59  virtual void Initialize() override;
60 
62 
71  virtual void Enable() override;
72  virtual void Disable() override;
74 
80  void ProcessEvents() override;
81 
83 
89  vtkSetMacro(InstallMessageProc, int);
90  vtkGetMacro(InstallMessageProc, int);
91  vtkBooleanMacro(InstallMessageProc, int);
93 
99  void TerminateApp(void) override;
100 
101  friend VTKRENDERINGUI_EXPORT LRESULT CALLBACK vtkHandleMessage(
102  HWND hwnd, UINT uMsg, WPARAM w, LPARAM l);
103  friend VTKRENDERINGUI_EXPORT LRESULT CALLBACK vtkHandleMessage2(
104  HWND hwnd, UINT uMsg, WPARAM w, LPARAM l, vtkWin32RenderWindowInteractor* me);
105 
107 
111  virtual int OnMouseMove(HWND wnd, UINT nFlags, int X, int Y);
112  virtual int OnNCMouseMove(HWND wnd, UINT nFlags, int X, int Y);
113  virtual int OnRButtonDown(HWND wnd, UINT nFlags, int X, int Y, int repeat = 0);
114  virtual int OnRButtonUp(HWND wnd, UINT nFlags, int X, int Y);
115  virtual int OnMButtonDown(HWND wnd, UINT nFlags, int X, int Y, int repeat = 0);
116  virtual int OnMButtonUp(HWND wnd, UINT nFlags, int X, int Y);
117  virtual int OnLButtonDown(HWND wnd, UINT nFlags, int X, int Y, int repeat = 0);
118  virtual int OnLButtonUp(HWND wnd, UINT nFlags, int X, int Y);
119  virtual int OnSize(HWND wnd, UINT nType, int X, int Y);
120  virtual int OnTimer(HWND wnd, UINT nIDEvent);
121  virtual int OnKeyDown(HWND wnd, UINT nChar, UINT nRepCnt, UINT nFlags);
122  virtual int OnKeyUp(HWND wnd, UINT nChar, UINT nRepCnt, UINT nFlags);
123  virtual int OnChar(HWND wnd, UINT nChar, UINT nRepCnt, UINT nFlags);
124  virtual int OnMouseWheelForward(HWND wnd, UINT nFlags, int X, int Y);
125  virtual int OnMouseWheelBackward(HWND wnd, UINT nFlags, int X, int Y);
126  virtual int OnFocus(HWND wnd, UINT nFlags);
127  virtual int OnKillFocus(HWND wnd, UINT nFlags);
128  virtual int OnTouch(HWND wnd, UINT wParam, UINT lParam);
129  virtual int OnDropFiles(HWND wnd, WPARAM wParam);
131 
133 
139  static void SetClassExitMethod(void (*f)(void*), void* arg);
140  static void SetClassExitMethodArgDelete(void (*f)(void*));
142 
147  void ExitCallback() override;
148 
149 protected:
151  ~vtkWin32RenderWindowInteractor() override;
152 
153  HWND WindowId;
154  WNDPROC OldProc;
158 
160 
165  static void (*ClassExitMethod)(void*);
166  static void (*ClassExitMethodArgDelete)(void*);
167  static void* ClassExitMethodArg;
169 
171 
175  int InternalCreateTimer(int timerId, int timerType, unsigned long duration) override;
176  int InternalDestroyTimer(int platformTimerId) override;
178 
184  void StartEventLoop() override;
185 
186 #ifdef VTK_USE_TDX
187  vtkTDxWinDevice* Device;
188 #endif
189 
190 private:
192  void operator=(const vtkWin32RenderWindowInteractor&) = delete;
193 };
194 
195 #endif
static void * ClassExitMethodArg
Class variables so an exit method can be defined for this class (used to set different exit methods f...
virtual void Enable()
Enable/Disable interactions.
virtual int InternalDestroyTimer(int platformTimerId)
Internal methods for creating and destroying timers that must be implemented by subclasses.
virtual int InternalCreateTimer(int timerId, int timerType, unsigned long duration)
Internal methods for creating and destroying timers that must be implemented by subclasses.
implements Win32 specific functions required by vtkRenderWindowInteractor.
virtual void Initialize()
Prepare for handling events and set the Enabled flag to true.
static vtkRenderWindowInteractor * New()
platform-independent render window interaction including picking and frame rate control.
a simple class to control print indentation
Definition: vtkIndent.h:33
virtual void ExitCallback()
These methods correspond to the Exit, User and Pick callbacks.
virtual void StartEventLoop()
Run the event loop (does not return until TerminateApp is called).
virtual void TerminateApp(void)
This function is called on 'q','e' keypress if exitmethod is not specified and should be overridden b...
virtual void ProcessEvents()
Run the event loop and return.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.