WTLではWindowクラスはtemplate <class Derived> CWindowImplを派生させて作成する.
さらに派生させたい場合,子のメッセージマップにCHAIN_MSG_MAP(Parent)を追加し,明示的に親クラスにメッセージを投げる必要がある.
さらに派生させたい場合,子のメッセージマップにCHAIN_MSG_MAP(Parent)を追加し,明示的に親クラスにメッセージを投げる必要がある.
class MyWindowBase : public CWindowImpl<MyWindowBase> { public: MyWindowBase() {} ~MyWindowBase() {} BEGIN_MSG_MAP(vtkWTLWindow) MSG_WM_LBUTTONDBLCLK(OnLButtonDblClk) MSG_WM_LBUTTONDOWN(OnLButtonDown) MSG_WM_MBUTTONDOWN(OnMButtonDown) MSG_WM_RBUTTONDOWN(OnRButtonDown) MSG_WM_LBUTTONUP(OnLButtonUp) MSG_WM_MBUTTONUP(OnMButtonUp) MSG_WM_RBUTTONUP(OnRButtonUp) MSG_WM_MOUSEMOVE(OnMouseMove) MSG_WM_MOUSEWHEEL(OnMouseWheel) MSG_WM_CHAR(OnChar) MSG_WM_KEYUP(OnKeyUp) MSG_WM_KEYDOWN(OnKeyDown) MSG_WM_TIMER(OnTimer) MSG_WM_CREATE(OnCreate) MSG_WM_PAINT(OnPaint) MSG_WM_ERASEBKGND(OnEraseBkgnd) MSG_WM_SIZE(OnSize) END_MSG_MAP() //abbrv. }; class MyWindow : public class MyWindowBase { DECLARE_WND_SUPERCLASS(NULL, MyWindowBase::GetWndClassName()) public: BEGIN_MSG_MAP_EX(MyWindow) MSG_WM_CREATE(OnCreate) CHAIN_MSG_MAP(MyWindowBase) END_MSG_MAP() };
コメントをかく