VTK  9.3.20240329
vtkWin32RenderWindowInteractor.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
21 #ifndef vtkWin32RenderWindowInteractor_h
22 #define vtkWin32RenderWindowInteractor_h
23 
25 #include "vtkRenderingUIModule.h" // For export macro
26 #include "vtkWindows.h" // For windows API.
27 #include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
28 
29 #include "vtkTDxConfigure.h" // defines VTK_USE_TDX
30 #ifdef VTK_USE_TDX
31 VTK_ABI_NAMESPACE_BEGIN
32 class vtkTDxWinDevice;
33 VTK_ABI_NAMESPACE_END
34 #endif
35 
36 VTK_ABI_NAMESPACE_BEGIN
39 {
40 public:
45 
47  void PrintSelf(ostream& os, vtkIndent indent) override;
48 
52  void Initialize() override;
53 
55 
64  void Enable() override;
65  void Disable() override;
67 
72  void ProcessEvents() override;
73 
75 
81  vtkSetMacro(InstallMessageProc, int);
82  vtkGetMacro(InstallMessageProc, int);
83  vtkBooleanMacro(InstallMessageProc, int);
85 
91  void TerminateApp() override;
92 
93  friend VTKRENDERINGUI_EXPORT LRESULT CALLBACK vtkHandleMessage(
94  HWND hwnd, UINT uMsg, WPARAM w, LPARAM l);
95  friend VTKRENDERINGUI_EXPORT LRESULT CALLBACK vtkHandleMessage2(
96  HWND hwnd, UINT uMsg, WPARAM w, LPARAM l, vtkWin32RenderWindowInteractor* me);
97 
99 
103  virtual int OnMouseMove(HWND wnd, UINT nFlags, int X, int Y);
104  virtual int OnNCMouseMove(HWND wnd, UINT nFlags, int X, int Y);
105  virtual int OnRButtonDown(HWND wnd, UINT nFlags, int X, int Y, int repeat = 0);
106  virtual int OnRButtonUp(HWND wnd, UINT nFlags, int X, int Y);
107  virtual int OnMButtonDown(HWND wnd, UINT nFlags, int X, int Y, int repeat = 0);
108  virtual int OnMButtonUp(HWND wnd, UINT nFlags, int X, int Y);
109  virtual int OnLButtonDown(HWND wnd, UINT nFlags, int X, int Y, int repeat = 0);
110  virtual int OnLButtonUp(HWND wnd, UINT nFlags, int X, int Y);
111  virtual int OnSize(HWND wnd, UINT nType, int X, int Y);
112  virtual int OnTimer(HWND wnd, UINT nIDEvent);
113  virtual int OnKeyDown(HWND wnd, UINT nChar, UINT nRepCnt, UINT nFlags);
114  virtual int OnKeyUp(HWND wnd, UINT nChar, UINT nRepCnt, UINT nFlags);
115  virtual int OnChar(HWND wnd, UINT nChar, UINT nRepCnt, UINT nFlags);
116  virtual int OnMouseWheelForward(HWND wnd, UINT nFlags, int X, int Y);
117  virtual int OnMouseWheelBackward(HWND wnd, UINT nFlags, int X, int Y);
118  virtual int OnFocus(HWND wnd, UINT nFlags);
119  virtual int OnKillFocus(HWND wnd, UINT nFlags);
120  virtual int OnTouch(HWND wnd, UINT wParam, UINT lParam);
121  virtual int OnDropFiles(HWND wnd, WPARAM wParam);
123 
125 
131  static void SetClassExitMethod(void (*f)(void*), void* arg);
132  static void SetClassExitMethodArgDelete(void (*f)(void*));
134 
139  void ExitCallback() override;
140 
141 protected:
144 
145  HWND WindowId;
146  WNDPROC OldProc;
150 
152 
157  static void (*ClassExitMethod)(void*);
158  static void (*ClassExitMethodArgDelete)(void*);
159  static void* ClassExitMethodArg;
161 
163 
167  int InternalCreateTimer(int timerId, int timerType, unsigned long duration) override;
168  int InternalDestroyTimer(int platformTimerId) override;
170 
176  void StartEventLoop() override;
177 
178 #ifdef VTK_USE_TDX
179  vtkTDxWinDevice* Device;
180 #endif
181 
182 private:
184  void operator=(const vtkWin32RenderWindowInteractor&) = delete;
185 };
186 
187 VTK_ABI_NAMESPACE_END
188 #endif
a simple class to control print indentation
Definition: vtkIndent.h:108
platform-independent render window interaction including picking and frame rate control.
implements Win32 specific functions required by vtkRenderWindowInteractor.
virtual int OnKillFocus(HWND wnd, UINT nFlags)
Various methods that a Win32 window can redirect to this class to be handled.
virtual int OnMouseWheelForward(HWND wnd, UINT nFlags, int X, int Y)
Various methods that a Win32 window can redirect to this class to be handled.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int InternalDestroyTimer(int platformTimerId) override
Win32-specific internal timer methods.
virtual int OnChar(HWND wnd, UINT nChar, UINT nRepCnt, UINT nFlags)
Various methods that a Win32 window can redirect to this class to be handled.
virtual int OnMButtonDown(HWND wnd, UINT nFlags, int X, int Y, int repeat=0)
Various methods that a Win32 window can redirect to this class to be handled.
virtual int OnRButtonUp(HWND wnd, UINT nFlags, int X, int Y)
Various methods that a Win32 window can redirect to this class to be handled.
virtual int OnDropFiles(HWND wnd, WPARAM wParam)
Various methods that a Win32 window can redirect to this class to be handled.
virtual int OnTouch(HWND wnd, UINT wParam, UINT lParam)
Various methods that a Win32 window can redirect to this class to be handled.
virtual int OnMouseMove(HWND wnd, UINT nFlags, int X, int Y)
Various methods that a Win32 window can redirect to this class to be handled.
static void * ClassExitMethodArg
Class variables so an exit method can be defined for this class (used to set different exit methods f...
void Enable() override
Enable/Disable interactions.
static void SetClassExitMethodArgDelete(void(*f)(void *))
Methods to set the default exit method for the class.
virtual int OnTimer(HWND wnd, UINT nIDEvent)
Various methods that a Win32 window can redirect to this class to be handled.
void Disable() override
Enable/Disable interactions.
virtual int OnRButtonDown(HWND wnd, UINT nFlags, int X, int Y, int repeat=0)
Various methods that a Win32 window can redirect to this class to be handled.
virtual int OnFocus(HWND wnd, UINT nFlags)
Various methods that a Win32 window can redirect to this class to be handled.
int InternalCreateTimer(int timerId, int timerType, unsigned long duration) override
Win32-specific internal timer methods.
virtual int OnKeyDown(HWND wnd, UINT nChar, UINT nRepCnt, UINT nFlags)
Various methods that a Win32 window can redirect to this class to be handled.
void StartEventLoop() override
This will start up the event loop and never return.
void TerminateApp() override
Win32 specific application terminate, calls ClassExitMethod then calls PostQuitMessage(0) to terminat...
virtual int OnKeyUp(HWND wnd, UINT nChar, UINT nRepCnt, UINT nFlags)
Various methods that a Win32 window can redirect to this class to be handled.
~vtkWin32RenderWindowInteractor() override
void Initialize() override
Initialize the event handler.
static void SetClassExitMethod(void(*f)(void *), void *arg)
Methods to set the default exit method for the class.
virtual int OnMouseWheelBackward(HWND wnd, UINT nFlags, int X, int Y)
Various methods that a Win32 window can redirect to this class to be handled.
void ProcessEvents() override
Process all user-interaction, timer events and return.
static vtkWin32RenderWindowInteractor * New()
Construct object so that light follows camera motion.
virtual int OnLButtonDown(HWND wnd, UINT nFlags, int X, int Y, int repeat=0)
Various methods that a Win32 window can redirect to this class to be handled.
void ExitCallback() override
These methods correspond to the Exit, User and Pick callbacks.
friend VTKRENDERINGUI_EXPORT LRESULT CALLBACK vtkHandleMessage(HWND hwnd, UINT uMsg, WPARAM w, LPARAM l)
friend VTKRENDERINGUI_EXPORT LRESULT CALLBACK vtkHandleMessage2(HWND hwnd, UINT uMsg, WPARAM w, LPARAM l, vtkWin32RenderWindowInteractor *me)
virtual int OnMButtonUp(HWND wnd, UINT nFlags, int X, int Y)
Various methods that a Win32 window can redirect to this class to be handled.
virtual int OnSize(HWND wnd, UINT nType, int X, int Y)
Various methods that a Win32 window can redirect to this class to be handled.
virtual int OnLButtonUp(HWND wnd, UINT nFlags, int X, int Y)
Various methods that a Win32 window can redirect to this class to be handled.
virtual int OnNCMouseMove(HWND wnd, UINT nFlags, int X, int Y)
Various methods that a Win32 window can redirect to this class to be handled.
#define VTK_MARSHALAUTO