|
[リスト10-2] :
class MYCLASS { public: static LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ); static VOID CALLBACK TimerProc( HWND hwnd, UINT message, UINT id, DWORD dwTime ); static BOOL CALLBACK DialogProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ); ~~~~~~←ここにstaticを付けるだけでいい }; MYCLASS myclass; void Func( void ) { WNDCLASS wc; wc.style = CS_HREDRAW | CS_VREDRAW ; wc.lpfnWndProc = (WNDPROC)myclass.WndProc ; : : RegisterClass ( &wc ); } LRESULT CALLBACK MYCLASS::WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_CREATE: SetTimer( hwnd, 100, 1000, (TIMERPROC)myclass.TimerProc ); ~~~~~~~←同じクラス内でもオブジェクト名を書かなくてはいけない break; case WM_LBUTTONDOWN: DialogBox( (HINSTANCE)GetWindowLong( hwnd, GWL_HINSTANCE ), MAKEINTRESOURCE(IDD_DIALOG1), hwnd, (DLGPROC)myclass.DialogProc ); return 0; ~~~~~~~ : : } VOID CALLBACK MYCLASS::TimerProc( HWND hwnd, UINT message, UINT id, DWORD dwTime ) { : : } BOOL CALLBACK MYCLASS::DialogProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { : : }