有没有一个函数或者宏根据一个消息的值来返回它的可打印字符?比如假设WM_PAINT消息对应的数值为N,如何根据N来得到"WM_PAINT" 

解决方案 »

  1.   

    把winuser.h里面的定义人肉定义一下就可以了
    #define WM_NULL                         0x0000
    #define WM_CREATE                       0x0001
    #define WM_DESTROY                      0x0002
    #define WM_MOVE                         0x0003
    #define WM_SIZE                         0x0005#define WM_ACTIVATE                     0x0006
    /*
     * WM_ACTIVATE state values
     */
    #define     WA_INACTIVE     0
    #define     WA_ACTIVE       1
    #define     WA_CLICKACTIVE  2#define WM_SETFOCUS                     0x0007
    #define WM_KILLFOCUS                    0x0008
    #define WM_ENABLE                       0x000A
    #define WM_SETREDRAW                    0x000B
    #define WM_SETTEXT                      0x000C
    #define WM_GETTEXT                      0x000D
    #define WM_GETTEXTLENGTH                0x000E
    #define WM_PAINT                        0x000F
    #define WM_CLOSE                        0x0010char *WM_MSG[]={
                 "WM_NULL                  "
                ,"WM_CREATE                "
                ,"WM_DESTROY               "
                ,"WM_MOVE                  "
                ,"WM_SIZE                  "
                ,"WM_ACTIVATE              "
                ,"WM_SETFOCUS              "
                ,"WM_KILLFOCUS             "
                ,"WM_ENABLE                "
                ,"WM_SETREDRAW             "
                ,"WM_SETTEXT               "
                ,"WM_GETTEXT               "
                ,"WM_GETTEXTLENGTH         "
                ,"WM_PAINT                 "
                ,"WM_CLOSE                 "
                ,"WM_QUERYENDSESSION       "
                ,"WM_QUIT                  "
                ,"WM_QUERYOPEN             "
                ,"WM_ERASEBKGND            "
                ,"WM_SYSCOLORCHANGE        "
                ,"WM_ENDSESSION            "
                ,"WM_SHOWWINDOW            "
                ,"WM_WININICHANGE          "
                ,"WM_DEVMODECHANGE         "
                ,"WM_ACTIVATEAPP           "
                ,"WM_FONTCHANGE            "
                ,"WM_TIMECHANGE            "
                ,"WM_CANCELMODE            "
                ,"WM_SETCURSOR             "
                ,"WM_MOUSEACTIVATE         "
                ,"WM_CHILDACTIVATE         "
                ,"WM_QUEUESYNC             "
                ,"WM_GETMINMAXINFO         "
                ,"WM_PAINTICON             "
                ,"WM_ICONERASEBKGND        "
                ,"WM_NEXTDLGCTL            "
                ,"WM_SPOOLERSTATUS         "
                ,"WM_DRAWITEM              "
                ,"WM_MEASUREITEM           "
                ,"WM_DELETEITEM            "
                ,"WM_VKEYTOITEM            "
                ,"WM_CHARTOITEM            "
                ,"WM_SETFONT               "
                ,"WM_GETFONT               "
                ,"WM_SETHOTKEY             "
                ,"WM_GETHOTKEY             "
                ,"WM_QUERYDRAGICON         "
                ,"WM_COMPAREITEM           "
                ,"WM_COMPACTING            "
                ,"WM_COMMNOTIFY            "
                ,"WM_WINDOWPOSCHANGING     "
                ,"WM_WINDOWPOSCHANGED      "
                ,"WM_POWER                 "
                ,"WM_COPYDATA              "
                ,"WM_CANCELJOURNAL         "
                ,"WM_NOTIFY                "
                ,"WM_INPUTLANGCHANGEREQUEST"
                ,"WM_INPUTLANGCHANGE       "
                ,"WM_TCARD                 "
                ,"WM_HELP                  "
                ,"WM_USERCHANGED           "
                ,"WM_NOTIFYFORMAT          "
                ,"WM_CONTEXTMENU           "
                ,"WM_STYLECHANGING         "
                ,"WM_STYLECHANGED          "
                ,"WM_DISPLAYCHANGE         "
                ,"WM_GETICON               "
                ,"WM_SETICON               "
                ,"WM_NCCREATE              "
                ,"WM_NCDESTROY             "
                ,"WM_NCCALCSIZE            "
                ,"WM_NCHITTEST             "
                ,"WM_NCPAINT               "
                ,"WM_NCACTIVATE            "
                ,"WM_GETDLGCODE            "
                ,"WM_SYNCPAINT             "
                ,"WM_NCMOUSEMOVE           "
                ,"WM_NCLBUTTONDOWN         "
                ,"WM_NCLBUTTONUP           "
                ,"WM_NCLBUTTONDBLCLK       "
                ,"WM_NCRBUTTONDOWN         "
                ,"WM_NCRBUTTONUP           "
                ,"WM_NCRBUTTONDBLCLK       "
                ,"WM_NCMBUTTONDOWN         "
                ,"WM_NCMBUTTONUP           "
                ,"WM_NCMBUTTONDBLCLK       "
                ,"WM_KEYDOWN               "
                ,"WM_KEYUP                 "
                ,"WM_CHAR                  "
                ,"WM_DEADCHAR              "
                ,"WM_SYSKEYDOWN            "
                ,"WM_SYSKEYUP              "
                ,"WM_SYSCHAR               "
                ,"WM_SYSDEADCHAR           "
                ,"WM_KEYLAST               "
                ,"WM_INITDIALOG            "
                ,"WM_COMMAND               "
                ,"WM_SYSCOMMAND            "
                ,"WM_TIMER                 "
                ,"WM_HSCROLL               "
                ,"WM_VSCROLL               "
                ,"WM_INITMENU              "
                ,"WM_INITMENUPOPUP         "
                ,"WM_MENUSELECT            "
                ,"WM_MENUCHAR              "
                ,"WM_ENTERIDLE             "
                ,"WM_CTLCOLORMSGBOX        "
                ,"WM_CTLCOLOREDIT          "
                ,"WM_CTLCOLORLISTBOX       "
                ,"WM_CTLCOLORBTN           "
                ,"WM_CTLCOLORDLG           "
                ,"WM_CTLCOLORSCROLLBAR     "
                ,"WM_CTLCOLORSTATIC        "
                ,"WM_MOUSEMOVE             "
                ,"WM_LBUTTONDOWN           "
                ,"WM_LBUTTONUP             "
                ,"WM_LBUTTONDBLCLK         "
                ,"WM_RBUTTONDOWN           "
                ,"WM_RBUTTONUP             "
                ,"WM_RBUTTONDBLCLK         "
                ,"WM_MBUTTONDOWN           "
                ,"WM_MBUTTONUP             "
                ,"WM_MBUTTONDBLCLK         "
                ,"WM_MOUSELAST             "
                ,"WM_PARENTNOTIFY          "
                ,"WM_ENTERMENULOOP         "
                ,"WM_EXITMENULOOP          "
                ,"WM_MDICREATE             "
                ,"WM_MDIDESTROY            "
                ,"WM_MDIACTIVATE           "
                ,"WM_MDIRESTORE            "
                ,"WM_MDINEXT               "
                ,"WM_MDIMAXIMIZE           "
                ,"WM_MDITILE               "
                ,"WM_MDICASCADE            "
                ,"WM_MDIICONARRANGE        "
                ,"WM_MDIGETACTIVE          "
                ,"WM_MDISETMENU            "
                ,"WM_DROPFILES             "
                ,"WM_MDIREFRESHMENU        "
                ,"WM_CUT                   "
                ,"WM_COPY                  "
                ,"WM_PASTE                 "
                ,"WM_CLEAR                 "
                ,"WM_UNDO                  "
                ,"WM_RENDERFORMAT          "
                ,"WM_RENDERALLFORMATS      "
                ,"WM_DESTROYCLIPBOARD      "
                ,"WM_DRAWCLIPBOARD         "
                ,"WM_PAINTCLIPBOARD        "
                ,"WM_VSCROLLCLIPBOARD      "
                ,"WM_SIZECLIPBOARD         "
                ,"WM_ASKCBFORMATNAME       "
                ,"WM_CHANGECBCHAIN         "
                ,"WM_HSCROLLCLIPBOARD      "
                ,"WM_QUERYNEWPALETTE       "
                ,"WM_PALETTEISCHANGING     "
                ,"WM_PALETTECHANGED        "
                ,"WM_HOTKEY                "
                ,"WM_PRINT                 "
                ,"WM_PRINTCLIENT           "
                ,"WM_PENWINFIRST           "
                ,"WM_PENWINLAST            "
                ,"WM_NEXTMENU              "
                ,"WM_SIZING                "
                ,"WM_CAPTURECHANGED        "
                ,"WM_MOVING                "
                ,"WM_POWERBROADCAST        "
                ,"WM_DEVICECHANGE          "
                ,"WM_ENTERSIZEMOVE         "
                ,"WM_EXITSIZEMOVE          "
                ,"Cann't find the message! "
            };
    WM_MSG[WM_CLOSE]来返回字符串
      

  2.   

    也可以自己解析~~把消息转化成十六进制,十进制两种形式的字符串,在winuser.h里面查找,找匹配的后根据一些规则来过滤一下消息文本,应该就可以得到对应的消息了~~呵呵
      

  3.   


    嗯嗯,感觉这种方法好一点,毕竟不用修改winuser.h文件,呵呵.