用WindowsAPI封装绘图窗口类,如何从窗口消息值转成可读消息字符串,Win32窗口生命周期消息

最近在写一个纯win32api方式创建窗口的绘图类的封装(摆脱mfc的束缚)。
从对win32api方式生成一个窗口过程中,观察窗口过程函数接受了哪些消息,了解窗口生命周期更深刻的认识。

第一步:实现实现一个windows消息id值到以"WM_"开头的可读的windows消息名字符串的转换函数(该函数由WinDef.h头文件制作而成),
代码如下:

C++ Code

//全局函数:取得windows消息码所对应的消息定义字符串,Release模式下返回一行表述函数已弃用的提示字符串,而不是NULL指针。
LPCTSTR GetWindowsMsgStringFromMsgID(UINT messageId){
#ifdef _DEBUG
#define ITERN_WNDDOWSMSGID2STRING( szName , nID ) case (nID):return _T(#szName);break
switch(messageId){
ITERN_WNDDOWSMSGID2STRING( WM_NULL                         , 0x0000
);ITERN_WNDDOWSMSGID2STRING( WM_CREATE                       , 0x0001
);ITERN_WNDDOWSMSGID2STRING( WM_DESTROY                      , 0x0002
);ITERN_WNDDOWSMSGID2STRING( WM_MOVE                         , 0x0003
);ITERN_WNDDOWSMSGID2STRING( WM_SIZE                         , 0x0005
);ITERN_WNDDOWSMSGID2STRING( WM_ACTIVATE                     , 0x0006
);ITERN_WNDDOWSMSGID2STRING( WM_SETFOCUS                     , 0x0007
);ITERN_WNDDOWSMSGID2STRING( WM_KILLFOCUS                    , 0x0008
);ITERN_WNDDOWSMSGID2STRING( WM_ENABLE                       , 0x000A
);ITERN_WNDDOWSMSGID2STRING( WM_SETREDRAW                    , 0x000B
);ITERN_WNDDOWSMSGID2STRING( WM_SETTEXT                      , 0x000C
);ITERN_WNDDOWSMSGID2STRING( WM_GETTEXT                      , 0x000D
);ITERN_WNDDOWSMSGID2STRING( WM_GETTEXTLENGTH                , 0x000E
);ITERN_WNDDOWSMSGID2STRING( WM_PAINT                        , 0x000F
);ITERN_WNDDOWSMSGID2STRING( WM_CLOSE                        , 0x0010);
#ifndef _WIN32_WCE
ITERN_WNDDOWSMSGID2STRING( WM_QUERYENDSESSION              , 0x0011
);ITERN_WNDDOWSMSGID2STRING( WM_QUERYOPEN                    , 0x0013
);ITERN_WNDDOWSMSGID2STRING( WM_ENDSESSION                   , 0x0016);
#endif
ITERN_WNDDOWSMSGID2STRING( WM_QUIT                         , 0x0012
);ITERN_WNDDOWSMSGID2STRING( WM_ERASEBKGND                   , 0x0014
);ITERN_WNDDOWSMSGID2STRING( WM_SYSCOLORCHANGE               , 0x0015
);ITERN_WNDDOWSMSGID2STRING( WM_SHOWWINDOW                   , 0x0018
);ITERN_WNDDOWSMSGID2STRING( WM_WININICHANGE                 , 0x001A
);ITERN_WNDDOWSMSGID2STRING( WM_DEVMODECHANGE                , 0x001B
);ITERN_WNDDOWSMSGID2STRING( WM_ACTIVATEAPP                  , 0x001C
);ITERN_WNDDOWSMSGID2STRING( WM_FONTCHANGE                   , 0x001D
);ITERN_WNDDOWSMSGID2STRING( WM_TIMECHANGE                   , 0x001E
);ITERN_WNDDOWSMSGID2STRING( WM_CANCELMODE                   , 0x001F
);ITERN_WNDDOWSMSGID2STRING( WM_SETCURSOR                    , 0x0020
);ITERN_WNDDOWSMSGID2STRING( WM_MOUSEACTIVATE                , 0x0021
);ITERN_WNDDOWSMSGID2STRING( WM_CHILDACTIVATE                , 0x0022
);ITERN_WNDDOWSMSGID2STRING( WM_QUEUESYNC                    , 0x0023
);ITERN_WNDDOWSMSGID2STRING( WM_GETMINMAXINFO                , 0x0024
);ITERN_WNDDOWSMSGID2STRING( WM_PAINTICON                    , 0x0026
);ITERN_WNDDOWSMSGID2STRING( WM_ICONERASEBKGND               , 0x0027
);ITERN_WNDDOWSMSGID2STRING( WM_NEXTDLGCTL                   , 0x0028
);ITERN_WNDDOWSMSGID2STRING( WM_SPOOLERSTATUS                , 0x002A
);ITERN_WNDDOWSMSGID2STRING( WM_DRAWITEM                     , 0x002B
);ITERN_WNDDOWSMSGID2STRING( WM_MEASUREITEM                  , 0x002C
);ITERN_WNDDOWSMSGID2STRING( WM_DELETEITEM                   , 0x002D
);ITERN_WNDDOWSMSGID2STRING( WM_VKEYTOITEM                   , 0x002E
);ITERN_WNDDOWSMSGID2STRING( WM_CHARTOITEM                   , 0x002F
);ITERN_WNDDOWSMSGID2STRING( WM_SETFONT                      , 0x0030
);ITERN_WNDDOWSMSGID2STRING( WM_GETFONT                      , 0x0031
);ITERN_WNDDOWSMSGID2STRING( WM_SETHOTKEY                    , 0x0032
);ITERN_WNDDOWSMSGID2STRING( WM_GETHOTKEY                    , 0x0033
);ITERN_WNDDOWSMSGID2STRING( WM_QUERYDRAGICON                , 0x0037
);ITERN_WNDDOWSMSGID2STRING( WM_COMPAREITEM                  , 0x0039);
#if(WINVER >=  0x0500)
#ifndef _WIN32_WCE
ITERN_WNDDOWSMSGID2STRING( WM_GETOBJECT                    , 0x003D);
#endif
#endif
ITERN_WNDDOWSMSGID2STRING( WM_COMPACTING                   , 0x0041
);ITERN_WNDDOWSMSGID2STRING( WM_COMMNOTIFY                   , 0x0044
);ITERN_WNDDOWSMSGID2STRING( WM_WINDOWPOSCHANGING            , 0x0046
);ITERN_WNDDOWSMSGID2STRING( WM_WINDOWPOSCHANGED             , 0x0047
);ITERN_WNDDOWSMSGID2STRING( WM_POWER                        , 0x0048
);ITERN_WNDDOWSMSGID2STRING( WM_COPYDATA                     , 0x004A
);ITERN_WNDDOWSMSGID2STRING( WM_CANCELJOURNAL                , 0x004B);
#if(WINVER >=  0x0400)
ITERN_WNDDOWSMSGID2STRING( WM_NOTIFY                       , 0x004E
);ITERN_WNDDOWSMSGID2STRING( WM_INPUTLANGCHANGEREQUEST       , 0x0050
);ITERN_WNDDOWSMSGID2STRING( WM_INPUTLANGCHANGE              , 0x0051
);ITERN_WNDDOWSMSGID2STRING( WM_TCARD                        , 0x0052
);ITERN_WNDDOWSMSGID2STRING( WM_HELP                         , 0x0053
);ITERN_WNDDOWSMSGID2STRING( WM_USERCHANGED                  , 0x0054
);ITERN_WNDDOWSMSGID2STRING( WM_NOTIFYFORMAT                 , 0x0055
);ITERN_WNDDOWSMSGID2STRING( WM_CONTEXTMENU                  , 0x007B
);ITERN_WNDDOWSMSGID2STRING( WM_STYLECHANGING                , 0x007C
);ITERN_WNDDOWSMSGID2STRING( WM_STYLECHANGED                 , 0x007D
);ITERN_WNDDOWSMSGID2STRING( WM_DISPLAYCHANGE                , 0x007E
);ITERN_WNDDOWSMSGID2STRING( WM_GETICON                      , 0x007F
);ITERN_WNDDOWSMSGID2STRING( WM_SETICON                      , 0x0080);
#endif

ITERN_WNDDOWSMSGID2STRING( WM_NCCREATE                     , 0x0081
);ITERN_WNDDOWSMSGID2STRING( WM_NCDESTROY                    , 0x0082
);ITERN_WNDDOWSMSGID2STRING( WM_NCCALCSIZE                   , 0x0083
);ITERN_WNDDOWSMSGID2STRING( WM_NCHITTEST                    , 0x0084
);ITERN_WNDDOWSMSGID2STRING( WM_NCPAINT                      , 0x0085
);ITERN_WNDDOWSMSGID2STRING( WM_NCACTIVATE                   , 0x0086
);ITERN_WNDDOWSMSGID2STRING( WM_GETDLGCODE                   , 0x0087);
#ifndef _WIN32_WCE
ITERN_WNDDOWSMSGID2STRING( WM_SYNCPAINT                    , 0x0088);
#endif
ITERN_WNDDOWSMSGID2STRING( WM_NCMOUSEMOVE                  , 0x00A0
);ITERN_WNDDOWSMSGID2STRING( WM_NCLBUTTONDOWN                , 0x00A1
);ITERN_WNDDOWSMSGID2STRING( WM_NCLBUTTONUP                  , 0x00A2
);ITERN_WNDDOWSMSGID2STRING( WM_NCLBUTTONDBLCLK              , 0x00A3
);ITERN_WNDDOWSMSGID2STRING( WM_NCRBUTTONDOWN                , 0x00A4
);ITERN_WNDDOWSMSGID2STRING( WM_NCRBUTTONUP                  , 0x00A5
);ITERN_WNDDOWSMSGID2STRING( WM_NCRBUTTONDBLCLK              , 0x00A6
);ITERN_WNDDOWSMSGID2STRING( WM_NCMBUTTONDOWN                , 0x00A7
);ITERN_WNDDOWSMSGID2STRING( WM_NCMBUTTONUP                  , 0x00A8
);ITERN_WNDDOWSMSGID2STRING( WM_NCMBUTTONDBLCLK              , 0x00A9);
#if(_WIN32_WINNT >=  0x0500)
 ITERN_WNDDOWSMSGID2STRING( WM_NCXBUTTONDOWN                , 0x00AB
);ITERN_WNDDOWSMSGID2STRING( WM_NCXBUTTONUP                  , 0x00AC
);ITERN_WNDDOWSMSGID2STRING( WM_NCXBUTTONDBLCLK              , 0x00AD);
#endif


#if(_WIN32_WINNT >=  0x0501)
 ITERN_WNDDOWSMSGID2STRING( WM_INPUT_DEVICE_CHANGE          , 0x00FE);
#endif

#if(_WIN32_WINNT >=  0x0501)
ITERN_WNDDOWSMSGID2STRING( WM_INPUT                        , 0x00FF);
#endif

ITERN_WNDDOWSMSGID2STRING( WM_KEYFIRST / WM_KEYDOWN          , 0x0100
);ITERN_WNDDOWSMSGID2STRING( WM_KEYUP                        , 0x0101
);ITERN_WNDDOWSMSGID2STRING( WM_CHAR                         , 0x0102
);ITERN_WNDDOWSMSGID2STRING( WM_DEADCHAR                     , 0x0103
);ITERN_WNDDOWSMSGID2STRING( WM_SYSKEYDOWN                   , 0x0104
);ITERN_WNDDOWSMSGID2STRING( WM_SYSKEYUP                     , 0x0105
);ITERN_WNDDOWSMSGID2STRING( WM_SYSCHAR                      , 0x0106
);ITERN_WNDDOWSMSGID2STRING( WM_SYSDEADCHAR                  , 0x0107);
#if(_WIN32_WINNT >=  0x0501)
ITERN_WNDDOWSMSGID2STRING( WM_UNICHAR / WM_KEYLAST           , 0x0109);
#else
ITERN_WNDDOWSMSGID2STRING( WM_KEYLAST                      , 0x0108
);
#endif

#if(WINVER >=  0x0400)
ITERN_WNDDOWSMSGID2STRING( WM_IME_STARTCOMPOSITION         , 0x010D
);ITERN_WNDDOWSMSGID2STRING( WM_IME_ENDCOMPOSITION           , 0x010E
);ITERN_WNDDOWSMSGID2STRING( WM_IME_COMPOSITION / WM_IME_KEYLAST , 0x010F
);
#endif

ITERN_WNDDOWSMSGID2STRING( WM_INITDIALOG                   , 0x0110
);ITERN_WNDDOWSMSGID2STRING( WM_COMMAND                      , 0x0111
);ITERN_WNDDOWSMSGID2STRING( WM_SYSCOMMAND                   , 0x0112
);ITERN_WNDDOWSMSGID2STRING( WM_TIMER                        , 0x0113
);ITERN_WNDDOWSMSGID2STRING( WM_HSCROLL                      , 0x0114
);ITERN_WNDDOWSMSGID2STRING( WM_VSCROLL                      , 0x0115
);ITERN_WNDDOWSMSGID2STRING( WM_INITMENU                     , 0x0116
);ITERN_WNDDOWSMSGID2STRING( WM_INITMENUPOPUP                , 0x0117
);
#if(WINVER >=  0x0601)
ITERN_WNDDOWSMSGID2STRING( WM_GESTURE                      , 0x0119
);ITERN_WNDDOWSMSGID2STRING( WM_GESTURENOTIFY                , 0x011A
);
#endif
ITERN_WNDDOWSMSGID2STRING( WM_MENUSELECT                   , 0x011F
);ITERN_WNDDOWSMSGID2STRING( WM_MENUCHAR                     , 0x0120
);ITERN_WNDDOWSMSGID2STRING( WM_ENTERIDLE                    , 0x0121
);
#if(WINVER >=  0x0500)
#ifndef _WIN32_WCE
ITERN_WNDDOWSMSGID2STRING( WM_MENURBUTTONUP                , 0x0122
);ITERN_WNDDOWSMSGID2STRING( WM_MENUDRAG                     , 0x0123
);ITERN_WNDDOWSMSGID2STRING( WM_MENUGETOBJECT                , 0x0124
);ITERN_WNDDOWSMSGID2STRING( WM_UNINITMENUPOPUP              , 0x0125
);ITERN_WNDDOWSMSGID2STRING( WM_MENUCOMMAND                  , 0x0126);

#ifndef _WIN32_WCE
#if(_WIN32_WINNT >=  0x0500)
ITERN_WNDDOWSMSGID2STRING( WM_CHANGEUISTATE                , 0x0127
);ITERN_WNDDOWSMSGID2STRING( WM_UPDATEUISTATE                , 0x0128
);ITERN_WNDDOWSMSGID2STRING( WM_QUERYUISTATE                 , 0x0129
);
#endif
#endif

#endif
#endif

ITERN_WNDDOWSMSGID2STRING( WM_CTLCOLORMSGBOX               , 0x0132
);ITERN_WNDDOWSMSGID2STRING( WM_CTLCOLOREDIT                 , 0x0133
);ITERN_WNDDOWSMSGID2STRING( WM_CTLCOLORLISTBOX              , 0x0134
);ITERN_WNDDOWSMSGID2STRING( WM_CTLCOLORBTN                  , 0x0135
);ITERN_WNDDOWSMSGID2STRING( WM_CTLCOLORDLG                  , 0x0136
);ITERN_WNDDOWSMSGID2STRING( WM_CTLCOLORSCROLLBAR            , 0x0137
);ITERN_WNDDOWSMSGID2STRING( WM_CTLCOLORSTATIC               , 0x0138
);ITERN_WNDDOWSMSGID2STRING( WM_MOUSEFIRST / WM_MOUSEMOVE    , 0x0200
);ITERN_WNDDOWSMSGID2STRING( WM_LBUTTONDOWN                  , 0x0201
);ITERN_WNDDOWSMSGID2STRING( WM_LBUTTONUP                    , 0x0202
);ITERN_WNDDOWSMSGID2STRING( WM_LBUTTONDBLCLK                , 0x0203
);ITERN_WNDDOWSMSGID2STRING( WM_RBUTTONDOWN                  , 0x0204
);ITERN_WNDDOWSMSGID2STRING( WM_RBUTTONUP                    , 0x0205
);ITERN_WNDDOWSMSGID2STRING( WM_RBUTTONDBLCLK                , 0x0206
);ITERN_WNDDOWSMSGID2STRING( WM_MBUTTONDOWN                  , 0x0207
);ITERN_WNDDOWSMSGID2STRING( WM_MBUTTONUP                    , 0x0208
);ITERN_WNDDOWSMSGID2STRING( WM_MBUTTONDBLCLK                , 0x0209);
#if (_WIN32_WINNT >=  0x0400) || (_WIN32_WINDOWS >  0x0400)
ITERN_WNDDOWSMSGID2STRING( WM_MOUSEWHEEL                   , 0x020A);
#endif
#if (_WIN32_WINNT >=  0x0500)
 ITERN_WNDDOWSMSGID2STRING( WM_XBUTTONDOWN                  , 0x020B
);ITERN_WNDDOWSMSGID2STRING( WM_XBUTTONUP                    , 0x020C
);ITERN_WNDDOWSMSGID2STRING( WM_XBUTTONDBLCLK                , 0x020D);
#endif
#if (_WIN32_WINNT >=  0x0600)
 ITERN_WNDDOWSMSGID2STRING( WM_MOUSEHWHEEL / WM_MOUSELAST    , 0x020E);
#endif

#if (_WIN32_WINNT >=  0x0600) 
#elif (_WIN32_WINNT >=  0x0500)
 ITERN_WNDDOWSMSGID2STRING( WM_MOUSELAST                    , 0x020D);
#elif (_WIN32_WINNT >=  0x0400) || (_WIN32_WINDOWS >  0x0400)
 ITERN_WNDDOWSMSGID2STRING( WM_MOUSELAST                    , 0x020A);
#else
 ITERN_WNDDOWSMSGID2STRING( WM_MOUSELAST                    , 0x0209);
#endif

 ITERN_WNDDOWSMSGID2STRING( WM_PARENTNOTIFY                 , 0x0210
);ITERN_WNDDOWSMSGID2STRING( WM_ENTERMENULOOP                , 0x0211
);ITERN_WNDDOWSMSGID2STRING( WM_EXITMENULOOP                 , 0x0212
);
#if(WINVER >=  0x0400)
 ITERN_WNDDOWSMSGID2STRING( WM_NEXTMENU                     , 0x0213
);ITERN_WNDDOWSMSGID2STRING( WM_SIZING                       , 0x0214
);ITERN_WNDDOWSMSGID2STRING( WM_CAPTURECHANGED               , 0x0215
);ITERN_WNDDOWSMSGID2STRING( WM_MOVING                       , 0x0216
);
#endif

 #if(WINVER >=  0x0400)
 ITERN_WNDDOWSMSGID2STRING( WM_POWERBROADCAST               , 0x0218
);
#endif

 #if(WINVER >=  0x0400)
 ITERN_WNDDOWSMSGID2STRING( WM_DEVICECHANGE                 , 0x0219
);
#endif

 ITERN_WNDDOWSMSGID2STRING( WM_MDICREATE                    , 0x0220
);ITERN_WNDDOWSMSGID2STRING( WM_MDIDESTROY                   , 0x0221
);ITERN_WNDDOWSMSGID2STRING( WM_MDIACTIVATE                  , 0x0222
);ITERN_WNDDOWSMSGID2STRING( WM_MDIRESTORE                   , 0x0223
);ITERN_WNDDOWSMSGID2STRING( WM_MDINEXT                      , 0x0224
);ITERN_WNDDOWSMSGID2STRING( WM_MDIMAXIMIZE                  , 0x0225
);ITERN_WNDDOWSMSGID2STRING( WM_MDITILE                      , 0x0226
);ITERN_WNDDOWSMSGID2STRING( WM_MDICASCADE                   , 0x0227
);ITERN_WNDDOWSMSGID2STRING( WM_MDIICONARRANGE               , 0x0228
);ITERN_WNDDOWSMSGID2STRING( WM_MDIGETACTIVE                 , 0x0229
);ITERN_WNDDOWSMSGID2STRING( WM_MDISETMENU                   , 0x0230
);ITERN_WNDDOWSMSGID2STRING( WM_ENTERSIZEMOVE                , 0x0231
);ITERN_WNDDOWSMSGID2STRING( WM_EXITSIZEMOVE                 , 0x0232
);ITERN_WNDDOWSMSGID2STRING( WM_DROPFILES                    , 0x0233
);ITERN_WNDDOWSMSGID2STRING( WM_MDIREFRESHMENU               , 0x0234
);
#if(WINVER >=  0x0601)
 ITERN_WNDDOWSMSGID2STRING( WM_TOUCH                        , 0x0240
);
#endif

#if(WINVER >=  0x0400)
 ITERN_WNDDOWSMSGID2STRING( WM_IME_SETCONTEXT               , 0x0281
);ITERN_WNDDOWSMSGID2STRING( WM_IME_NOTIFY                   , 0x0282
);ITERN_WNDDOWSMSGID2STRING( WM_IME_CONTROL                  , 0x0283
);ITERN_WNDDOWSMSGID2STRING( WM_IME_COMPOSITIONFULL          , 0x0284
);ITERN_WNDDOWSMSGID2STRING( WM_IME_SELECT                   , 0x0285
);ITERN_WNDDOWSMSGID2STRING( WM_IME_CHAR                     , 0x0286
);
#endif
#if(WINVER >=  0x0500)
 ITERN_WNDDOWSMSGID2STRING( WM_IME_REQUEST                  , 0x0288
);
#endif
#if(WINVER >=  0x0400)
 ITERN_WNDDOWSMSGID2STRING( WM_IME_KEYDOWN                  , 0x0290
);ITERN_WNDDOWSMSGID2STRING( WM_IME_KEYUP                    , 0x0291
);
#endif

#if((_WIN32_WINNT >=  0x0400) || (WINVER >=  0x0500))
 ITERN_WNDDOWSMSGID2STRING( WM_MOUSEHOVER                   , 0x02A1
);ITERN_WNDDOWSMSGID2STRING( WM_MOUSELEAVE                   , 0x02A3);
#endif
#if(WINVER >=  0x0500)
 ITERN_WNDDOWSMSGID2STRING( WM_NCMOUSEHOVER                 , 0x02A0
);ITERN_WNDDOWSMSGID2STRING( WM_NCMOUSELEAVE                 , 0x02A2
);
#endif

#if(_WIN32_WINNT >=  0x0501)
 ITERN_WNDDOWSMSGID2STRING( WM_WTSSESSION_CHANGE            , 0x02B1

);ITERN_WNDDOWSMSGID2STRING( WM_TABLET_FIRST                 , 0x02c0
);ITERN_WNDDOWSMSGID2STRING( WM_TABLET_LAST                  , 0x02df
);
#endif

 ITERN_WNDDOWSMSGID2STRING( WM_CUT                          , 0x0300
);ITERN_WNDDOWSMSGID2STRING( WM_COPY                         , 0x0301
);ITERN_WNDDOWSMSGID2STRING( WM_PASTE                        , 0x0302
);ITERN_WNDDOWSMSGID2STRING( WM_CLEAR                        , 0x0303
);ITERN_WNDDOWSMSGID2STRING( WM_UNDO                         , 0x0304
);ITERN_WNDDOWSMSGID2STRING( WM_RENDERFORMAT                 , 0x0305
);ITERN_WNDDOWSMSGID2STRING( WM_RENDERALLFORMATS             , 0x0306
);ITERN_WNDDOWSMSGID2STRING( WM_DESTROYCLIPBOARD             , 0x0307
);ITERN_WNDDOWSMSGID2STRING( WM_DRAWCLIPBOARD                , 0x0308
);ITERN_WNDDOWSMSGID2STRING( WM_PAINTCLIPBOARD               , 0x0309
);ITERN_WNDDOWSMSGID2STRING( WM_VSCROLLCLIPBOARD             , 0x030A
);ITERN_WNDDOWSMSGID2STRING( WM_SIZECLIPBOARD                , 0x030B
);ITERN_WNDDOWSMSGID2STRING( WM_ASKCBFORMATNAME              , 0x030C
);ITERN_WNDDOWSMSGID2STRING( WM_CHANGECBCHAIN                , 0x030D
);ITERN_WNDDOWSMSGID2STRING( WM_HSCROLLCLIPBOARD             , 0x030E
);ITERN_WNDDOWSMSGID2STRING( WM_QUERYNEWPALETTE              , 0x030F
);ITERN_WNDDOWSMSGID2STRING( WM_PALETTEISCHANGING            , 0x0310
);ITERN_WNDDOWSMSGID2STRING( WM_PALETTECHANGED               , 0x0311
);ITERN_WNDDOWSMSGID2STRING( WM_HOTKEY                       , 0x0312 
);
#if(WINVER >=  0x0400)
 ITERN_WNDDOWSMSGID2STRING( WM_PRINT                        , 0x0317
);ITERN_WNDDOWSMSGID2STRING( WM_PRINTCLIENT                  , 0x0318
);
#endif

#if(_WIN32_WINNT >=  0x0500)
 ITERN_WNDDOWSMSGID2STRING( WM_APPCOMMAND                   , 0x0319
);
#endif

#if(_WIN32_WINNT >=  0x0501)
 ITERN_WNDDOWSMSGID2STRING( WM_THEMECHANGED                 , 0x031A
);
#endif


#if(_WIN32_WINNT >=  0x0501)
 ITERN_WNDDOWSMSGID2STRING( WM_CLIPBOARDUPDATE              , 0x031D
);
#endif

#if(_WIN32_WINNT >=  0x0600)
 ITERN_WNDDOWSMSGID2STRING( WM_DWMCOMPOSITIONCHANGED        , 0x031E
);ITERN_WNDDOWSMSGID2STRING( WM_DWMNCRENDERINGCHANGED        , 0x031F
);ITERN_WNDDOWSMSGID2STRING( WM_DWMCOLORIZATIONCOLORCHANGED  , 0x0320
);ITERN_WNDDOWSMSGID2STRING( WM_DWMWINDOWMAXIMIZEDCHANGE     , 0x0321
);
#endif

#if(_WIN32_WINNT >=  0x0601)
 ITERN_WNDDOWSMSGID2STRING( WM_DWMSENDICONICTHUMBNAIL           , 0x0323
);ITERN_WNDDOWSMSGID2STRING( WM_DWMSENDICONICLIVEPREVIEWBITMAP   , 0x0326
);
#endif


 #if(WINVER >=  0x0600)
 ITERN_WNDDOWSMSGID2STRING( WM_GETTITLEBARINFOEX            , 0x033F
);
#endif

 #if(WINVER >=  0x0400)

 ITERN_WNDDOWSMSGID2STRING( WM_HANDHELDFIRST                , 0x0358
);ITERN_WNDDOWSMSGID2STRING( WM_HANDHELDLAST                 , 0x035F

);ITERN_WNDDOWSMSGID2STRING( WM_AFXFIRST                     , 0x0360
);ITERN_WNDDOWSMSGID2STRING( WM_AFXLAST                      , 0x037F
);
#endif

 ITERN_WNDDOWSMSGID2STRING( WM_PENWINFIRST                  , 0x0380
);ITERN_WNDDOWSMSGID2STRING( WM_PENWINLAST                   , 0x038F);

 #if(WINVER >=  0x0400)
 ITERN_WNDDOWSMSGID2STRING( WM_APP                          , 0x8000);
#endif

ITERN_WNDDOWSMSGID2STRING( WM_USER                         , 0x0400);

default:
return _T("自定义消息");
};
#else
return _T("The method is unused in undebug!");//非调试模式下返回值
#endif // _DEBUG
}

第二步:创建win32窗口程序,在窗口的窗口过程函数中加入上面的函数,并传入获得的消息id值
第三步:断点窗口过程,截获消息id转换成字符串,输出到记录。(这一过程我已经通过编码形式自动输出信息到一个文件中了)
第四步:查看得到的运行得到结果,如下:(说明:前一个数字是时间戳,后一个是该消息的宏名)

20180105005459949 : WM_GETMINMAXINFO //第一个消息总是这个
20180105005459951 : WM_NCCREATE //准备第一次创建窗口前---------------------
20180105005459957 : WM_NCCALCSIZE //准备计算窗口大小
20180105005459958 : WM_CREATE //创建窗口-------------------------
20180105005459958 : WM_SHOWWINDOW //显示窗口
20180105005459958 : WM_WINDOWPOSCHANGING
20180105005459976 : WM_WINDOWPOSCHANGING
20180105005459981 : WM_ACTIVATEAPP //激活程序
20180105005459986 : WM_NCACTIVATE //激活结束
20180105005459991 : WM_GETICON
20180105005459996 : WM_GETICON
20180105005500001 : WM_GETICON
20180105005500006 : WM_ACTIVATE
20180105005500046 : WM_IME_SETCONTEXT
20180105005500053 : WM_IME_NOTIFY
20180105005500056 : WM_SETFOCUS
20180105005500061 : WM_NCPAINT //第一次客户区绘图前----------------------
20180105005500066 : WM_ERASEBKGND //擦除背景
20180105005500071 : WM_WINDOWPOSCHANGED //改变位置
20180105005500074 : WM_SIZE //改变大小
20180105005500074 : WM_PAINT //重回客户区---------------------------
20180105005500089 : WM_MOVE //以下是窗口更新过程
20180105005500093 : WM_GETICON
20180105005500098 : WM_DWMNCRENDERINGCHANGED
20180105005500102 : WM_GETICON
20180105005500107 : 自定义消息
20180105005500112 : WM_GETICON
20180105005500117 : WM_GETMINMAXINFO
20180105005500122 : WM_KEYUP
20180105005500249 : WM_IME_NOTIFY
20180105005501080 : WM_TIMER
20180105005501083 : WM_WINDOWPOSCHANGING
20180105005501089 : WM_GETMINMAXINFO
20180105005501093 : WM_NCCALCSIZE
20180105005501099 : WM_NCPAINT
20180105005501103 : WM_ERASEBKGND
20180105005501108 : WM_WINDOWPOSCHANGED
20180105005501113 : WM_SIZE
20180105005501122 : WM_PAINT
20180105005501125 : WM_NCHITTEST
20180105005501130 : WM_SETCURSOR //鼠标在窗口上移动消息
20180105005501135 : WM_MOUSEFIRST / WM_MOUSEMOVE
20180105005501282 : WM_NCHITTEST
20180105005501285 : WM_SETCURSOR
20180105005501291 : WM_MOUSEFIRST / WM_MOUSEMOVE
20180105005501496 : WM_NCHITTEST
20180105005501499 : WM_SETCURSOR
20180105005501504 : WM_MOUSEFIRST / WM_MOUSEMOVE
20180105005501509 : WM_NCHITTEST
20180105005501514 : WM_SETCURSOR
20180105005501519 : WM_MOUSEFIRST / WM_MOUSEMOVE
20180105005501524 : WM_NCHITTEST
20180105005501529 : WM_SETCURSOR
20180105005501534 : WM_MOUSEFIRST / WM_MOUSEMOVE
20180105005501539 : WM_NCHITTEST
20180105005501544 : WM_SETCURSOR
20180105005501549 : WM_MOUSEFIRST / WM_MOUSEMOVE
20180105005501554 : WM_NCHITTEST
20180105005501558 : WM_SETCURSOR
20180105005501563 : WM_MOUSEFIRST / WM_MOUSEMOVE
20180105005501568 : WM_NCHITTEST
20180105005501573 : WM_SETCURSOR
20180105005501574 : WM_MOUSEFIRST / WM_MOUSEMOVE
20180105005501574 : WM_NCHITTEST
20180105005501574 : WM_SETCURSOR
20180105005501593 : WM_MOUSEFIRST / WM_MOUSEMOVE
20180105005501598 : WM_NCHITTEST
20180105005501603 : WM_SETCURSOR
20180105005501608 : WM_MOUSEFIRST / WM_MOUSEMOVE
20180105005501613 : WM_NCHITTEST
20180105005501617 : WM_SETCURSOR
20180105005501622 : WM_MOUSEFIRST / WM_MOUSEMOVE
20180105005501634 : WM_NCHITTEST
20180105005501637 : WM_SETCURSOR
20180105005501642 : WM_MOUSEFIRST / WM_MOUSEMOVE
20180105005501647 : WM_NCHITTEST
20180105005501652 : WM_SETCURSOR
20180105005501657 : WM_MOUSEFIRST / WM_MOUSEMOVE
20180105005501662 : WM_NCHITTEST
20180105005501667 : WM_SETCURSOR
20180105005501672 : WM_MOUSEFIRST / WM_MOUSEMOVE
20180105005501677 : WM_SETCURSOR
20180105005501681 : WM_NCMOUSEMOVE
20180105005501686 : WM_SETCURSOR
20180105005501691 : WM_NCMOUSEMOVE
20180105005501691 : WM_SETCURSOR
20180105005501691 : WM_NCMOUSEMOVE
20180105005501691 : WM_SETCURSOR
20180105005501711 : WM_NCMOUSEMOVE
20180105005501716 : WM_SETCURSOR
20180105005501721 : WM_NCMOUSEMOVE
20180105005501726 : WM_SETCURSOR
20180105005501731 : WM_NCMOUSEMOVE
20180105005501744 : WM_SETCURSOR
20180105005501748 : WM_NCMOUSEMOVE
20180105005501760 : WM_SETCURSOR
20180105005501764 : WM_NCMOUSEMOVE
20180105005501802 : WM_SETCURSOR
20180105005501806 : WM_NCMOUSEMOVE
20180105005501874 : WM_SETCURSOR
20180105005501891 : WM_NCMOUSEMOVE
20180105005501908 : WM_SETCURSOR
20180105005501912 : WM_NCMOUSEMOVE
20180105005501920 : WM_SETCURSOR
20180105005501923 : WM_NCMOUSEMOVE
20180105005501935 : WM_SETCURSOR
20180105005501937 : WM_NCMOUSEMOVE
20180105005501999 : WM_SETCURSOR
20180105005502002 : WM_NCMOUSEMOVE
20180105005502007 : WM_SETCURSOR
20180105005502012 : WM_NCMOUSEMOVE
20180105005502082 : WM_TIMER
20180105005502085 : WM_WINDOWPOSCHANGING
20180105005502090 : WM_GETMINMAXINFO
20180105005502275 : WM_SETCURSOR
20180105005502280 : WM_NCLBUTTONDOWN
20180105005502434 : WM_CAPTURECHANGED
20180105005502437 : WM_SYSCOMMAND //此时我点了关闭按钮
20180105005502442 : WM_CLOSE //窗口关闭-----------------
20180105005502448 : 自定义消息
20180105005502454 : WM_WINDOWPOSCHANGING
20180105005502459 : WM_WINDOWPOSCHANGED
20180105005502464 : WM_NCACTIVATE
20180105005502469 : WM_ACTIVATE
20180105005502474 : WM_ACTIVATEAPP
20180105005502474 : WM_KILLFOCUS //失去窗口焦点
20180105005502474 : WM_IME_SETCONTEXT
20180105005502474 : WM_IME_NOTIFY
20180105005502494 : WM_DESTROY //销毁窗口
20180105005502502 : WM_NCDESTROY //完全销毁后,生命周期结束--------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值