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()
};

コメントをかく