たとえば、DefWindowsProc()
取得するWindowsイベント値があります-つまりhWnd, MsgId, wParam, lParam
。通知コード付きのイベントがプッシュ ボタンから来るのか、チェック ボックスから来るのか(あるいは他の何かから来るのか)を区別することは可能ですか?WM_COMMAND
BN_CLICKED
動機:より大きなアプリケーションで GUI の実装とメッセージ処理を書き直しています。最終目標は wxWidgets ですが、少しずつやらなければなりません。BEGIN_EVENT_TABLE
/END_EVENT_TABLE
マクロと関連するEVT_BUTTON
, EVT_CHECKBOX
(...,EVT_SIZE
など)を模倣しますEVT_PAINT
。のようなクラスも模倣しています。そのタイプを、イベントが元のコードでキャプチャされた場合と同等またはそれwxCommandEvent
に設定したいと考えています。wxEVT_COMMAND_BUTTON_CLICKED
wxEVT_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 コマンドは、プログラムのデバッグ バージョンで表示できるようにする必要があります。