たとえば、DefWindowsProc()取得するWindowsイベント値があります-つまりhWnd, MsgId, wParam, lParam。通知コード付きのイベントがプッシュ ボタンから来るのか、チェック ボックスから来るのか(あるいは他の何かから来るのか)を区別することは可能ですか?WM_COMMANDBN_CLICKED
動機:より大きなアプリケーションで GUI の実装とメッセージ処理を書き直しています。最終目標は wxWidgets ですが、少しずつやらなければなりません。BEGIN_EVENT_TABLE/END_EVENT_TABLEマクロと関連するEVT_BUTTON, EVT_CHECKBOX(...,EVT_SIZEなど)を模倣しますEVT_PAINT。のようなクラスも模倣しています。そのタイプを、イベントが元のコードでキャプチャされた場合と同等またはそれwxCommandEventに設定したいと考えています。wxEVT_COMMAND_BUTTON_CLICKEDwxEVT_COMMAND_CHECKBOX_CLICKED
例: 私はこのようなマクロを持っています
#define EVT_CHECKBOX(id, func) \
if (uMsg == WM_COMMAND && id == LOWORD(wParam)) \
{ \
CAppCommandEvent evt(hWnd, uMsg, wParam, lParam); \
ATLASSERT(evt.GetEventType() == appEVT_COMMAND_CHECKBOX_CLICKED); \
func(evt); \
lResult = evt.GetLResult(); \
if (!evt.GetSkipped()) \
return TRUE; \
}
wxEVT_COMMAND_CHECKBOX_CLICKEDは意図的に に名前が変更されていますappEVT_...。EVT_CHECKBOXボタンにマクロが (誤って) 使用されていないかどうかを確認できるようにしたい。はいの場合、assert コマンドは、プログラムのデバッグ バージョンで表示できるようにする必要があります。