MyWinProc {// Win Proc Functor public:MyWinProc(ExternalClass * obj、HWNDウィンドウ):obj(obj)、window(window){oldWinProc = SubclassWindow(window、this); //サブクラスを適用} virtual〜MyWinProc(){SubclassWindow(window、oldWinProc); //サブクラスを削除します} LRESULT CALLBACK operator()(HWND、UINT、WPARAM、LPARAM){switch(uMsg){case WM_MOUSEMOVE:{obj-> onMouseMove(/ * etc * /);}ブレーク; CallWindowProc(oldWinProc、hWnd、uMsg、wParam、lParam)を返します。 } private:ExternalClass * obj; HWNDウィンドウ。 WNDPROC oldWinProc; ;