ウィンドウメッセージをログに吐きたい

この記事は2年以上前に書いたものです。
そのため情報が古い可能性があります。ご了承ください。m(_ _)m

けど、Hexな値を吐いて毎回WinUser.hから探すのはメンドイので、
上手いやり方がないか試行錯誤した結果、以下で落ち着いた。

#define TOSTRING(str) \
#str
const char *getWindowMessage(UINT uMsg)
{
switch(uMsg)
{
case WM_NULL: return TOSTRING(WM_NULL);
case WM_CREATE: return TOSTRING(WM_CREATE);
case WM_DESTROY: return TOSTRING(WM_DESTROY);
case WM_SETFOCUS: return TOSTRING(WM_SETFOCUS);
case WM_KILLFOCUS: return TOSTRING(WM_KILLFOCUS);
case WM_ENABLE: return TOSTRING(WM_ENABLE);
case WM_SETREDRAW: return TOSTRING(WM_SETREDRAW);
case WM_SETTEXT: return TOSTRING(WM_SETTEXT);
case WM_GETTEXT: return TOSTRING(WM_GETTEXT);
case WM_GETTEXTLENGTH: return TOSTRING(WM_GETTEXTLENGTH);
case WM_PAINT: return TOSTRING(WM_PAINT);
case WM_CLOSE: return TOSTRING(WM_CLOSE);
case WM_QUIT: return TOSTRING(WM_QUIT);
case WM_SHOWWINDOW: return TOSTRING(WM_SHOWWINDOW);
case WM_INITDIALOG: return TOSTRING(WM_INITDIALOG);
case WM_COMMAND: return TOSTRING(WM_COMMAND);
case WM_SYSCOMMAND: return TOSTRING(WM_SYSCOMMAND);
case WM_TIMER: return TOSTRING(WM_TIMER);
case WM_HSCROLL: return TOSTRING(WM_HSCROLL);
case WM_VSCROLL: return TOSTRING(WM_VSCROLL);
case WM_INITMENU: return TOSTRING(WM_INITMENU);
case WM_INITMENUPOPUP: return TOSTRING(WM_INITMENUPOPUP);
・・・
}
static char buf[8];
wsprintf(buf, "0x%x", uMsg);
return buf;
}
カテゴリー: ソフトウェア タグ: パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です