有的时候我们不知道windows在某一时刻发送了什么消息,即便用spy++可以探测到,但是感觉还不是那么的好,所以就下一个函数来动态的调试它吧,很好用但仅限user层
留点地方为以后增加内容
// OutMsg函数中的消息宏都是依据winuser.h而来的,基本上windows消息应该全了,可能还有没发现的不过这应该足够了
// 放在函数PeekMessage PreTranslateMessage等里边测试比较好
#include <afx.h>
#include <windows.h> // Windows的头文件
void OutMsg( MSG &msg )
{
CString str;
switch (msg.message)
{
case WM_NULL:
str.Format("0x%04X WM_NULL\n",msg.message);
break;
case WM_CREATE:
str.Format("0x%04X WM_CREATE\n",msg.message);
break;
case WM_DESTROY:
str.Format("0x%04X WM_DESTROY\n",msg.message);
break;
case WM_MOVE:
str.Format("0x%04X WM_MOVE\n",msg.message);
break;
case WM_SIZE:
str.Format("0x%04X WM_SIZE\n",msg.message);
break;
case WM_ACTIVATE:
str.Format("0x%04X WM_ACTIVATE\n",msg.message);
break;
case WM_SETFOCUS:
str.Format("0x%04X WM_SETFOCUS\n",msg.message);
break;
case WM_KILLFOCUS:
str.Format("0x%04X WM_KILLFOCUS\n",msg.message);
break;
case WM_ENABLE:
str.Format("0x%04X WM_ENABLE\n",msg.message);
break;
case WM_SETREDRAW:
str.Format("0x%04X WM_SETREDRAW\n",msg.message);
break;
case WM_SETTEXT:
str.Format("0x%04X WM_SETTEXT\n",msg.message);
break;
case WM_GETTEXT:
str.Format("0x%04X WM_GETTEXT\n",msg.message);
break;
case WM_GETTEXTLENGTH:
str.Format("0x%04X WM_GETTEXTLENGTH\n",msg.message);
break;
case WM_PAINT:
str.Format("0x%04X WM_PAINT\n",msg.message);
break;
case WM_CLOSE:
str.Format("0x%04X WM_CLOSE\n",msg.message);
break;
#ifndef _WIN32_WCE
case WM_QUERYENDSESSION:
str.Format("0x%04X WM_QUERYENDSESSION\n",msg.message);
break;
case WM_QUERYOPEN:
str.Format("0x%04X WM_QUERYOPEN\n",msg.message);
break;
case WM_ENDSESSION:
str.Format("0x%04X WM_ENDSESSION\n",msg.message);
break;
#endif
case WM_QUIT:
str.Format("0x%04X WM_QUIT\n",msg.message);
break;
case WM_ERASEBKGND:
str.Format("0x%04X WM_ERASEBKGND\n",msg.message);
break;
case WM_SYSCOLORCHANGE:
str.Format("0x%04X WM_SYSCOLORCHANGE\n",msg.message);
break;
case WM_SHOWWINDOW:
str.Format("0x%04X WM_SHOWWINDOW\n",msg.message);
break;
// case WM_WININICHANGE:
// str.Format("0x%04X WM_WININICHANGE\n",msg.message);
// break;
#if(WINVER >= 0x0400)
case WM_SETTINGCHANGE: // #define WM_SETTINGCHANGE WM_WININICHANGE
str.Format("0x%04X WM_SETTINGCHANGE==WM_WININICHANGE\n",msg.message);
break;
#endif /* WINVER >= 0x0400 */
case WM_DEVMODECHANGE:
str.Format("0x%04X WM_DEVMODECHANGE\n",msg.message);
break;
case WM_ACTIVATEAPP:
str.Format("0x%04X WM_ACTIVATEAPP\n",msg.message);
break;
case WM_FONTCHANGE:
str.Format("0x%04X WM_FONTCHANGE\n",msg.message);
break;
case WM_TIMECHANGE:
str.Format("0x%04X WM_TIMECHANGE\n",msg.message);
break;
case WM_CANCELMODE:
str.Format("0x%04X WM_CANCELMODE\n",msg.message);
break;
case WM_SETCURSOR:
str.Format("0x%04X WM_SETCURSOR\n",msg.message);
break;
case WM_MOUSEACTIVATE:
str.Format("0x%04X WM_MOUSEACTIVATE\n",msg.message);
break;
case WM_CHILDACTIVATE:
str.Format("0x%04X WM_CHILDACTIVATE\n",msg.message);
break;
case WM_QUEUESYNC:
str.Format("0x%04X WM_QUEUESYNC\n",msg.message);
break;
case WM_GETMINMAXINFO:
str.Format("0x%04X WM_GETMINMAXINFO\n",msg.message);
break;
case WM_PAINTICON:
str.Format("0x%04X WM_PAINTICON\n",msg.message);
break;
case WM_ICONERASEBKGND:
str.Format("0x%04X WM_ICONERASEBKGND\n",msg.message);
break;
case WM_NEXTDLGCTL:
str.Format("0x%04X WM_NEXTDLGCTL\n",msg.message);
break;
case WM_SPOOLERSTATUS:
str.Format("0x%04X WM_SPOOLERSTATUS\n",msg.message);
break;
case WM_DRAWITEM:
str.Format("0x%04X WM_DRAWITEM\n",msg.message);
break;
case WM_MEASUREITEM:
str.Format("0x%04X WM_MEASUREITEM\n",msg.message);
break;
case WM_DELETEITEM:
str.Format("0x%04X WM_DELETEITEM\n",msg.message);
break;
case WM_VKEYTOITEM:
str.Format("0x%04X WM_VKEYTOITEM\n",msg.message);
break;
case WM_CHARTOITEM:
str.Format("0x%04X WM_CHARTOITEM\n",msg.message);
break;
case WM_SETFONT:
str.Format("0x%04X WM_SETFONT\n",msg.message);
break;
case WM_GETFONT:
str.Format("0x%04X WM_GETFONT\n",msg.message);
break;
case WM_SETHOTKEY:
str.Format("0x%04X WM_SETHOTKEY\n",msg.message);
break;
case WM_GETHOTKEY:
str.Format("0x%04X WM_GETHOTKEY\n",msg.message);
break;
case WM_QUERYDRAGICON:
str.Format("0x%04X WM_QUERYDRAGICON\n",msg.message);
break;
case WM_COMPAREITEM:
str.Format("0x%04X WM_COMPAREITEM\n",msg.message);
break;
#if(WINVER >= 0x0500)
#ifndef _WIN32_WCE
case WM_GETOBJECT:
str.Format("0x%04X WM_GETOBJECT\n",msg.message);
break;
#endif
#endif /* WINVER >= 0x0500 */
case WM_COMPACTING:
str.Format("0x%04X WM_COMPACTING\n",msg.message);
break;
case WM_COMMNOTIFY:
str.Format("0x%04X WM_COMMNOTIFY\n",msg.message);
break;
case WM_WINDOWPOSCHANGING:
str.Format("0x%04X WM_WINDOWPOSCHANGING\n",msg.message);
break;
case WM_WINDOWPOSCHANGED:
str.Format("0x%04X WM_WINDOWPOSCHANGED\n",msg.message);
break;
case WM_POWER:
str.Format("0x%04X WM_POWER\n",msg.message);
break;
case WM_COPYDATA:
str.Format("0x%04X WM_COPYDATA\n",msg.message);
break;
case WM_CANCELJOURNAL:
str.Format("0x%04X WM_CANCELJOURNAL\n",msg.message);
break;
#if(WINVER >= 0x0400)
case WM_NOTIFY:
str.Format("0x%04X WM_NOTIFY\n",msg.message);
break;
case WM_INPUTLANGCHANGEREQUEST:
str.Format("0x%04X WM_INPUTLANGCHANGEREQUEST\n",msg.message);
break;
case WM_INPUTLANGCHANGE:
str.Format("0x%04X WM_INPUTLANGCHANGE\n",msg.message);
break;
case WM_TCARD:
str.Format("0x%04X WM_TCARD\n",msg.message);
break;
case WM_HELP:
str.Format("0x%04X WM_HELP\n",msg.message);
break;
case WM_USERCHANGED:
str.Format("0x%04X WM_USERCHANGED\n",msg.message);
break;
case WM_NOTIFYFORMAT:
str.Format("0x%04X WM_NOTIFYFORMAT\n",msg.message);
break;
case WM_CONTEXTMENU:
str.Format("0x%04X WM_CONTEXTMENU\n",msg.message);
break;
case WM_STYLECHANGING:
str.Format("0x%04X WM_STYLECHANGING\n",msg.message);
break;
case WM_STYLECHANGED:
str.Format("0x%04X WM_STYLECHANGED\n",msg.message);
break;
case WM_DISPLAYCHANGE:
str.Format("0x%04X WM_DISPLAYCHANGE\n",msg.message);
break;
case WM_GETICON:
str.Format("0x%04X WM_GETICON\n",msg.message);
break;
case WM_SETICON:
str.Format("0x%04X WM_SETICON\n",msg.message);
break;
#endif /* WINVER >= 0x0400 */
case WM_NCCREATE:
str.Format("0x%04X WM_NCCREATE\n",msg.message);
break;
case WM_NCDESTROY:
str.Format("0x%04X WM_NCDESTROY\n",msg.message);
break;
case WM_NCCALCSIZE:
str.Format("0x%04X WM_NCCALCSIZE\n",msg.message);
break;
case WM_NCHITTEST:
str.Format("0x%04X WM_NCHITTEST\n",msg.message);
break;
case WM_NCPAINT:
str.Format("0x%04X WM_NCPAINT\n",msg.message);
break;
case WM_NCACTIVATE:
str.Format("0x%04X WM_NCACTIVATE\n",msg.message);
break;
case WM_GETDLGCODE:
str.Format("0x%04X WM_GETDLGCODE\n",msg.message);
break;
#ifndef _WIN32_WCE
case WM_SYNCPAINT:
str.Format("0x%04X WM_SYNCPAINT\n",msg.message);
break;
#endif
case WM_NCMOUSEMOVE:
str.Format("0x%04X WM_NCMOUSEMOVE\n",msg.message);
break;
case WM_NCLBUTTONDOWN:
str.Format("0x%04X WM_NCLBUTTONDOWN\n",msg.message);
break;
case WM_NCLBUTTONUP:
str.Format("0x%04X WM_NCLBUTTONUP\n",msg.message);
break;
case WM_NCLBUTTONDBLCLK:
str.Format("0x%04X WM_NCLBUTTONDBLCLK\n",msg.message);
break;
case WM_NCRBUTTONDOWN:
str.Format("0x%04X WM_NCRBUTTONDOWN\n",msg.message);
break;
case WM_NCRBUTTONUP:
str.Format("0x%04X WM_NCRBUTTONUP\n",msg.message);
break;
case WM_NCRBUTTONDBLCLK:
str.Format("0x%04X WM_NCRBUTTONDBLCLK\n",msg.message);
break;
case WM_NCMBUTTONDOWN:
str.Format("0x%04X WM_NCMBUTTONDOWN\n",msg.message);
break;
case WM_NCMBUTTONUP:
str.Format("0x%04X WM_NCMBUTTONUP\n",msg.message);
break;
case WM_NCMBUTTONDBLCLK:
str.Format("0x%04X WM_NCMBUTTONDBLCLK\n",msg.message);
break;
#if(_WIN32_WINNT >= 0x0500)
case WM_NCXBUTTONDOWN:
str.Format("0x%04X WM_NCXBUTTONDOWN\n",msg.message);
break;
case WM_NCXBUTTONUP:
str.Format("0x%04X WM_NCXBUTTONUP\n",msg.message);
break;
case WM_NCXBUTTONDBLCLK:
str.Format("0x%04X WM_NCXBUTTONDBLCLK\n",msg.message);
break;
#endif /* _WIN32_WINNT >= 0x0500 */
#if(_WIN32_WINNT >= 0x0501)
case WM_INPUT_DEVICE_CHANGE:
str.Format("0x%04X WM_INPUT_DEVICE_CHANGE\n",msg.message);
break;
#endif /* _WIN32_WINNT >= 0x0501 */
#if(_WIN32_WINNT >= 0x0501)
case WM_INPUT:
str.Format("0x%04X WM_INPUT\n",msg.message);
break;
#endif /* _WIN32_WINNT >= 0x0501 */
// case WM_KEYFIRST:
// str.Format("0x%04X \n",msg.message);
// break;
case WM_KEYDOWN: // == WM_KEYFIRST
str.Format("0x%04X WM_KEYDOWN== WM_KEYFIRST\n",msg.message);
break;
case WM_KEYUP:
str.Format("0x%04X WM_KEYUP\n",msg.message);
break;
case WM_CHAR:
str.Format("0x%04X WM_CHAR\n",msg.message);
break;
case WM_DEADCHAR:
str.Format("0x%04X WM_DEADCHAR\n",msg.message);
break;
case WM_SYSKEYDOWN:
str.Format("0x%04X WM_SYSKEYDOWN\n",msg.message);
break;
case WM_SYSKEYUP:
str.Format("0x%04X WM_SYSKEYUP\n",msg.message);
break;
case WM_SYSCHAR:
str.Format("0x%04X WM_SYSCHAR\n",msg.message);
break;
case WM_SYSDEADCHAR:
str.Format("0x%04X WM_SYSDEADCHAR\n",msg.message);
break;
#if(_WIN32_WINNT >= 0x0501)
// case WM_UNICHAR:
// str.Format("0x%04X \n",msg.message);
// break;
case WM_KEYLAST: // == WM_UNICHAR
str.Format("0x%04X WM_KEYLAST== WM_UNICHAR\n",msg.message);
break;
case UNICODE_NOCHAR:
str.Format("0x%04X UNICODE_NOCHAR\n",msg.message);
break;
#else
case WM_KEYLAST:
str.Format("0x%04X WM_KEYLAST\n",msg.message);
break;
#endif /* _WIN32_WINNT >= 0x0501 */
#if(WINVER >= 0x0400)
case WM_IME_STARTCOMPOSITION:
str.Format("0x%04X WM_IME_STARTCOMPOSITION\n",msg.message);
break;
case WM_IME_ENDCOMPOSITION:
str.Format("0x%04X WM_IME_ENDCOMPOSITION\n",msg.message);
break;
// case WM_IME_COMPOSITION:
// str.Format("0x%04X WM_IME_COMPOSITION\n",msg.message);
// break;
case WM_IME_KEYLAST:// ==WM_IME_COMPOSITION
str.Format("0x%04X WM_IME_KEYLAST==WM_IME_COMPOSITION\n",msg.message);
break;
#endif /* WINVER >= 0x0400 */
case WM_INITDIALOG:
str.Format("0x%04X WM_INITDIALOG\n",msg.message);
break;
case WM_COMMAND:
str.Format("0x%04X WM_COMMAND\n",msg.message);
break;
case WM_SYSCOMMAND:
str.Format("0x%04X WM_SYSCOMMAND\n",msg.message);
break;
case WM_TIMER:
str.Format("0x%04X WM_TIMER\n",msg.message);
break;
case WM_HSCROLL:
str.Format("0x%04X WM_HSCROLL\n",msg.message);
break;
case WM_VSCROLL:
str.Format("0x%04X WM_VSCROLL\n",msg.message);
break;
case WM_INITMENU:
str.Format("0x%04X WM_INITMENU\n",msg.message);
break;
case WM_INITMENUPOPUP:
str.Format("0x%04X WM_INITMENUPOPUP\n",msg.message);
break;
#if(WINVER >= 0x0601)
case WM_GESTURE:
str.Format("0x%04X WM_GESTURE\n",msg.message);
break;
case WM_GESTURENOTIFY:
str.Format("0x%04X WM_GESTURENOTIFY\n",msg.message);
break;
#endif /* WINVER >= 0x0601 */
case WM_MENUSELECT:
str.Format("0x%04X WM_MENUSELECT\n",msg.message);
break;
case WM_MENUCHAR:
str.Format("0x%04X WM_MENUCHAR\n",msg.message);
break;
case WM_ENTERIDLE:
str.Format("0x%04X WM_ENTERIDLE\n",msg.message);
break;
#if(WINVER >= 0x0500)
#ifndef _WIN32_WCE
case WM_MENURBUTTONUP:
str.Format("0x%04X WM_MENURBUTTONUP\n",msg.message);
break;
case WM_MENUDRAG:
str.Format("0x%04X WM_MENUDRAG\n",msg.message);
break;
case WM_MENUGETOBJECT:
str.Format("0x%04X WM_MENUGETOBJECT\n",msg.message);
break;
case WM_UNINITMENUPOPUP:
str.Format("0x%04X WM_UNINITMENUPOPUP\n",msg.message);
break;
case WM_MENUCOMMAND:
str.Format("0x%04X WM_MENUCOMMAND\n",msg.message);
break;
#ifndef _WIN32_WCE
#if(_WIN32_WINNT >= 0x0500)
case WM_CHANGEUISTATE:
str.Format("0x%04X WM_CHANGEUISTATE\n",msg.message);
break;
case WM_UPDATEUISTATE:
str.Format("0x%04X WM_UPDATEUISTATE\n",msg.message);
break;
case WM_QUERYUISTATE:
str.Format("0x%04X WM_QUERYUISTATE\n",msg.message);
break;
#endif /* _WIN32_WINNT >= 0x0500 */
#endif
#endif
#endif /* WINVER >= 0x0500 */
case WM_CTLCOLORMSGBOX:
str.Format("0x%04X WM_CTLCOLORMSGBOX\n",msg.message);
break;
case WM_CTLCOLOREDIT:
str.Format("0x%04X WM_CTLCOLOREDIT\n",msg.message);
break;
case WM_CTLCOLORLISTBOX:
str.Format("0x%04X WM_CTLCOLORLISTBOX\n",msg.message);
break;
case WM_CTLCOLORBTN:
str.Format("0x%04X WM_CTLCOLORBTN\n",msg.message);
break;
case WM_CTLCOLORDLG:
str.Format("0x%04X WM_CTLCOLORDLG\n",msg.message);
break;
case WM_CTLCOLORSCROLLBAR:
str.Format("0x%04X WM_CTLCOLORSCROLLBAR\n",msg.message);
break;
case WM_CTLCOLORSTATIC:
str.Format("0x%04X WM_CTLCOLORSTATIC\n",msg.message);
break;
case MN_GETHMENU:
str.Format("0x%04X MN_GETHMENU\n",msg.message);
break;
// case WM_MOUSEFIRST:
// str.Format("0x%04X WM_MOUSEFIRST\n",msg.message);
// break;
case WM_MOUSEMOVE: // == WM_MOUSEFIRST
str.Format("0x%04X WM_MOUSEMOVE== WM_MOUSEFIRST\n",msg.message);
break;
case WM_LBUTTONDOWN:
str.Format("0x%04X WM_LBUTTONDOWN\n",msg.message);
break;
case WM_LBUTTONUP:
str.Format("0x%04X WM_LBUTTONUP\n",msg.message);
break;
case WM_LBUTTONDBLCLK:
str.Format("0x%04X WM_LBUTTONDBLCLK\n",msg.message);
break;
case WM_RBUTTONDOWN:
str.Format("0x%04X WM_RBUTTONDOWN\n",msg.message);
break;
case WM_RBUTTONUP:
str.Format("0x%04X WM_RBUTTONUP\n",msg.message);
break;
case WM_RBUTTONDBLCLK:
str.Format("0x%04X WM_RBUTTONDBLCLK\n",msg.message);
break;
case WM_MBUTTONDOWN:
str.Format("0x%04X WM_MBUTTONDOWN\n",msg.message);
break;
case WM_MBUTTONUP:
str.Format("0x%04X WM_MBUTTONUP\n",msg.message);
break;
case WM_MBUTTONDBLCLK:
str.Format("0x%04X WM_MBUTTONDBLCLK\n",msg.message);
break;
#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
case WM_MOUSEWHEEL:
str.Format("0x%04X WM_MOUSEWHEEL\n",msg.message);
break;
#endif
#if (_WIN32_WINNT >= 0x0500)
case WM_XBUTTONDOWN:
str.Format("0x%04X WM_XBUTTONDOWN\n",msg.message);
break;
case WM_XBUTTONUP:
str.Format("0x%04X WM_XBUTTONUP\n",msg.message);
break;
case WM_XBUTTONDBLCLK:
str.Format("0x%04X WM_XBUTTONDBLCLK\n",msg.message);
break;
#endif
#if (_WIN32_WINNT >= 0x0600)
// case WM_MOUSEHWHEEL:
// str.Format("0x%04X \n",msg.message);
// break;
#endif
#if (_WIN32_WINNT >= 0x0600)
case WM_MOUSELAST://==WM_MOUSEHWHEEL
str.Format("0x%04X WM_MOUSELAST==WM_MOUSEHWHEEL\n",msg.message);
break;
#elif (_WIN32_WINNT >= 0x0500)
case WM_MOUSELAST:
str.Format("0x%04X WM_MOUSELAST\n",msg.message);
break;
#elif (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
case WM_MOUSELAST:
str.Format("0x%04X WM_MOUSELAST\n",msg.message);
break;
#else
case WM_MOUSELAST:
str.Format("0x%04X WM_MOUSELAST\n",msg.message);
break;
#endif /* (_WIN32_WINNT >= 0x0600) */
case WM_PARENTNOTIFY:
str.Format("0x%04X WM_PARENTNOTIFY\n",msg.message);
break;
case WM_ENTERMENULOOP:
str.Format("0x%04X WM_ENTERMENULOOP\n",msg.message);
break;
case WM_EXITMENULOOP:
str.Format("0x%04X WM_EXITMENULOOP\n",msg.message);
break;
#if(WINVER >= 0x0400)
case WM_NEXTMENU:
str.Format("0x%04X WM_NEXTMENU\n",msg.message);
break;
case WM_SIZING:
str.Format("0x%04X WM_SIZING\n",msg.message);
break;
case WM_CAPTURECHANGED:
str.Format("0x%04X WM_CAPTURECHANGED\n",msg.message);
break;
case WM_MOVING:
str.Format("0x%04X WM_MOVING\n",msg.message);
break;
#endif /* WINVER >= 0x0400 */
#if(WINVER >= 0x0400)
case WM_POWERBROADCAST:
str.Format("0x%04X WM_POWERBROADCAST\n",msg.message);
break;
case WM_DEVICECHANGE:
str.Format("0x%04X WM_DEVICECHANGE\n",msg.message);
break;
#endif /* WINVER >= 0x0400 */
case WM_MDICREATE:
str.Format("0x%04X WM_MDICREATE\n",msg.message);
break;
case WM_MDIDESTROY:
str.Format("0x%04X WM_MDIDESTROY\n",msg.message);
break;
case WM_MDIACTIVATE:
str.Format("0x%04X WM_MDIACTIVATE\n",msg.message);
break;
case WM_MDIRESTORE:
str.Format("0x%04X WM_MDIRESTORE\n",msg.message);
break;
case WM_MDINEXT:
str.Format("0x%04X WM_MDINEXT\n",msg.message);
break;
case WM_MDIMAXIMIZE:
str.Format("0x%04X WM_MDIMAXIMIZE\n",msg.message);
break;
case WM_MDITILE:
str.Format("0x%04X WM_MDITILE\n",msg.message);
break;
case WM_MDICASCADE:
str.Format("0x%04X WM_MDICASCADE\n",msg.message);
break;
case WM_MDIICONARRANGE:
str.Format("0x%04X WM_MDIICONARRANGE\n",msg.message);
break;
case WM_MDIGETACTIVE:
str.Format("0x%04X WM_MDIGETACTIVE\n",msg.message);
break;
case WM_MDISETMENU:
str.Format("0x%04X WM_MDISETMENU\n",msg.message);
break;
case WM_ENTERSIZEMOVE:
str.Format("0x%04X WM_ENTERSIZEMOVE\n",msg.message);
break;
case WM_EXITSIZEMOVE:
str.Format("0x%04X WM_EXITSIZEMOVE\n",msg.message);
break;
case WM_DROPFILES:
str.Format("0x%04X WM_DROPFILES\n",msg.message);
break;
case WM_MDIREFRESHMENU:
str.Format("0x%04X WM_MDIREFRESHMENU\n",msg.message);
break;
#if(WINVER >= 0x0601)
case WM_TOUCH:
str.Format("0x%04X WM_TOUCH\n",msg.message);
break;
#endif /* WINVER >= 0x0601 */
#if(WINVER >= 0x0400)
case WM_IME_SETCONTEXT:
str.Format("0x%04X WM_IME_SETCONTEXT\n",msg.message);
break;
case WM_IME_NOTIFY:
str.Format("0x%04X WM_IME_NOTIFY\n",msg.message);
break;
case WM_IME_CONTROL:
str.Format("0x%04X WM_IME_CONTROL\n",msg.message);
break;
case WM_IME_COMPOSITIONFULL:
str.Format("0x%04X WM_IME_COMPOSITIONFULL\n",msg.message);
break;
case WM_IME_SELECT:
str.Format("0x%04X WM_IME_SELECT\n",msg.message);
break;
case WM_IME_CHAR:
str.Format("0x%04X WM_IME_CHAR\n",msg.message);
break;
#endif /* WINVER >= 0x0400 */
#if(WINVER >= 0x0500)
case WM_IME_REQUEST:
str.Format("0x%04X WM_IME_REQUEST\n",msg.message);
break;
#endif /* WINVER >= 0x0500 */
#if(WINVER >= 0x0400)
case WM_IME_KEYDOWN:
str.Format("0x%04X WM_IME_KEYDOWN\n",msg.message);
break;
case WM_IME_KEYUP:
str.Format("0x%04X WM_IME_KEYUP\n",msg.message);
break;
#endif /* WINVER >= 0x0400 */
#if((_WIN32_WINNT >= 0x0400) || (WINVER >= 0x0500))
case WM_MOUSEHOVER:
str.Format("0x%04X WM_MOUSEHOVER\n",msg.message);
break;
case WM_MOUSELEAVE:
str.Format("0x%04X WM_MOUSELEAVE\n",msg.message);
break;
#endif
#if(WINVER >= 0x0500)
case WM_NCMOUSEHOVER:
str.Format("0x%04X WM_NCMOUSEHOVER\n",msg.message);
break;
case WM_NCMOUSELEAVE:
str.Format("0x%04X WM_NCMOUSELEAVE\n",msg.message);
break;
#endif /* WINVER >= 0x0500 */
#if(_WIN32_WINNT >= 0x0501)
case WM_WTSSESSION_CHANGE:
str.Format("0x%04X WM_WTSSESSION_CHANGE\n",msg.message);
break;
case WM_TABLET_FIRST:
str.Format("0x%04X WM_TABLET_FIRST\n",msg.message);
break;
case WM_TABLET_LAST:
str.Format("0x%04X WM_TABLET_LAST\n",msg.message);
break;
#endif /* _WIN32_WINNT >= 0x0501 */
case WM_CUT:
str.Format("0x%04X WM_CUT\n",msg.message);
break;
case WM_COPY:
str.Format("0x%04X WM_COPY\n",msg.message);
break;
case WM_PASTE:
str.Format("0x%04X WM_PASTE\n",msg.message);
break;
case WM_CLEAR:
str.Format("0x%04X WM_CLEAR\n",msg.message);
break;
case WM_UNDO:
str.Format("0x%04X WM_UNDO\n",msg.message);
break;
case WM_RENDERFORMAT:
str.Format("0x%04X WM_RENDERFORMAT\n",msg.message);
break;
case WM_RENDERALLFORMATS:
str.Format("0x%04X WM_RENDERALLFORMATS\n",msg.message);
break;
case WM_DESTROYCLIPBOARD:
str.Format("0x%04X WM_DESTROYCLIPBOARD\n",msg.message);
break;
case WM_DRAWCLIPBOARD:
str.Format("0x%04X WM_DRAWCLIPBOARD\n",msg.message);
break;
case WM_PAINTCLIPBOARD:
str.Format("0x%04X WM_PAINTCLIPBOARD\n",msg.message);
break;
case WM_VSCROLLCLIPBOARD:
str.Format("0x%04X WM_VSCROLLCLIPBOARD\n",msg.message);
break;
case WM_SIZECLIPBOARD:
str.Format("0x%04X WM_SIZECLIPBOARD\n",msg.message);
break;
case WM_ASKCBFORMATNAME:
str.Format("0x%04X WM_ASKCBFORMATNAME\n",msg.message);
break;
case WM_CHANGECBCHAIN:
str.Format("0x%04X WM_CHANGECBCHAIN\n",msg.message);
break;
case WM_HSCROLLCLIPBOARD:
str.Format("0x%04X WM_HSCROLLCLIPBOARD\n",msg.message);
break;
case WM_QUERYNEWPALETTE:
str.Format("0x%04X WM_QUERYNEWPALETTE\n",msg.message);
break;
case WM_PALETTEISCHANGING:
str.Format("0x%04X WM_PALETTEISCHANGING\n",msg.message);
break;
case WM_PALETTECHANGED:
str.Format("0x%04X WM_PALETTECHANGED\n",msg.message);
break;
case WM_HOTKEY:
str.Format("0x%04X WM_HOTKEY\n",msg.message);
break;
#if(WINVER >= 0x0400)
case WM_PRINT:
str.Format("0x%04X WM_PRINT\n",msg.message);
break;
case WM_PRINTCLIENT:
str.Format("0x%04X WM_PRINTCLIENT\n",msg.message);
break;
#endif /* WINVER >= 0x0400 */
#if(_WIN32_WINNT >= 0x0500)
case WM_APPCOMMAND:
str.Format("0x%04X WM_APPCOMMAND\n",msg.message);
break;
#endif /* _WIN32_WINNT >= 0x0500 */
#if(_WIN32_WINNT >= 0x0501)
case WM_THEMECHANGED:
str.Format("0x%04X WM_THEMECHANGED\n",msg.message);
break;
#endif /* _WIN32_WINNT >= 0x0501 */
#if(_WIN32_WINNT >= 0x0501)
case WM_CLIPBOARDUPDATE:
str.Format("0x%04X WM_CLIPBOARDUPDATE\n",msg.message);
break;
#endif /* _WIN32_WINNT >= 0x0501 */
#if(_WIN32_WINNT >= 0x0600)
case WM_DWMCOMPOSITIONCHANGED:
str.Format("0x%04X WM_DWMCOMPOSITIONCHANGED\n",msg.message);
break;
case WM_DWMNCRENDERINGCHANGED:
str.Format("0x%04X WM_DWMNCRENDERINGCHANGED\n",msg.message);
break;
case WM_DWMCOLORIZATIONCOLORCHANGED:
str.Format("0x%04X WM_DWMCOLORIZATIONCOLORCHANGED\n",msg.message);
break;
case WM_DWMWINDOWMAXIMIZEDCHANGE:
str.Format("0x%04X WM_DWMWINDOWMAXIMIZEDCHANGE\n",msg.message);
break;
#endif /* _WIN32_WINNT >= 0x0600 */
#if(_WIN32_WINNT >= 0x0601)
case WM_DWMSENDICONICTHUMBNAIL:
str.Format("0x%04X WM_DWMSENDICONICTHUMBNAIL\n",msg.message);
break;
case WM_DWMSENDICONICLIVEPREVIEWBITMAP:
str.Format("0x%04X WM_DWMSENDICONICLIVEPREVIEWBITMAP\n",msg.message);
break;
#endif /* _WIN32_WINNT >= 0x0601 */
#if(WINVER >= 0x0600)
case WM_GETTITLEBARINFOEX:
str.Format("0x%04X WM_GETTITLEBARINFOEX\n",msg.message);
break;
#endif /* WINVER >= 0x0600 */
#if(WINVER >= 0x0400)
case WM_HANDHELDFIRST:
str.Format("0x%04X WM_HANDHELDFIRST\n",msg.message);
break;
case WM_HANDHELDLAST:
str.Format("0x%04X WM_HANDHELDLAST\n",msg.message);
break;
case WM_AFXFIRST:
str.Format("0x%04X WM_AFXFIRST\n",msg.message);
break;
case WM_AFXLAST:
str.Format("0x%04X WM_AFXLAST\n",msg.message);
break;
#endif /* WINVER >= 0x0400 */
case WM_PENWINFIRST:
str.Format("0x%04X WM_PENWINFIRST\n",msg.message);
break;
case WM_PENWINLAST:
str.Format("0x%04X WM_PENWINLAST\n",msg.message);
break;
#if(WINVER >= 0x0400)
case WM_APP:
str.Format("0x%04X WM_APP\n",msg.message);
break;
#endif /* WINVER >= 0x0400 */
case WM_USER:// 截止到winuser.h文件的2231行
str.Format("0x%04X WM_USER\n",msg.message);
break;
default:// 可能有没写全的消息,如果有以后过滤出来在添加到case里面
str.Format("0x%04X default: unknown windows message\n",msg.message);
break;
}
OutputDebugString(str);
}