-        case 0x0003: return "WM_MOVE";
-        case 0x0005: return "WM_SIZE";
-        case 0x0006: return "WM_ACTIVATE";
-        case 0x0007: return "WM_SETFOCUS";
-        case 0x0008: return "WM_KILLFOCUS";
-        case 0x000A: return "WM_ENABLE";
-        case 0x000B: return "WM_SETREDRAW";
-        case 0x000C: return "WM_SETTEXT";
-        case 0x000D: return "WM_GETTEXT";
-        case 0x000E: return "WM_GETTEXTLENGTH";
-        case 0x000F: return "WM_PAINT";
-        case 0x0010: return "WM_CLOSE";
-        case 0x0011: return "WM_QUERYENDSESSION";
-        case 0x0012: return "WM_QUIT";
-        case 0x0013: return "WM_QUERYOPEN";
-        case 0x0014: return "WM_ERASEBKGND";
-        case 0x0015: return "WM_SYSCOLORCHANGE";
-        case 0x0016: return "WM_ENDSESSION";
-        case 0x0017: return "WM_SYSTEMERROR";
-        case 0x0018: return "WM_SHOWWINDOW";
-        case 0x0019: return "WM_CTLCOLOR";
-        case 0x001A: return "WM_WININICHANGE";
-        case 0x001B: return "WM_DEVMODECHANGE";
-        case 0x001C: return "WM_ACTIVATEAPP";
-        case 0x001D: return "WM_FONTCHANGE";
-        case 0x001E: return "WM_TIMECHANGE";
-        case 0x001F: return "WM_CANCELMODE";
-        case 0x0020: return "WM_SETCURSOR";
-        case 0x0021: return "WM_MOUSEACTIVATE";
-        case 0x0022: return "WM_CHILDACTIVATE";
-        case 0x0023: return "WM_QUEUESYNC";
-        case 0x0024: return "WM_GETMINMAXINFO";
-        case 0x0026: return "WM_PAINTICON";
-        case 0x0027: return "WM_ICONERASEBKGND";
-        case 0x0028: return "WM_NEXTDLGCTL";
-        case 0x002A: return "WM_SPOOLERSTATUS";
-        case 0x002B: return "WM_DRAWITEM";
-        case 0x002C: return "WM_MEASUREITEM";
-        case 0x002D: return "WM_DELETEITEM";
-        case 0x002E: return "WM_VKEYTOITEM";
-        case 0x002F: return "WM_CHARTOITEM";
-        case 0x0030: return "WM_SETFONT";
-        case 0x0031: return "WM_GETFONT";
-        case 0x0037: return "WM_QUERYDRAGICON";
-        case 0x0039: return "WM_COMPAREITEM";
-        case 0x0041: return "WM_COMPACTING";
-        case 0x0044: return "WM_COMMNOTIFY";
-        case 0x0046: return "WM_WINDOWPOSCHANGING";
-        case 0x0047: return "WM_WINDOWPOSCHANGED";
-        case 0x0048: return "WM_POWER";
-
-#ifdef  __WIN32__
-        case 0x004A: return "WM_COPYDATA";
-        case 0x004B: return "WM_CANCELJOURNAL";
-        case 0x004E: return "WM_NOTIFY";
-        case 0x0050: return "WM_INPUTLANGCHANGEREQUEST";
-        case 0x0051: return "WM_INPUTLANGCHANGE";
-        case 0x0052: return "WM_TCARD";
-        case 0x0053: return "WM_HELP";
-        case 0x0054: return "WM_USERCHANGED";
-        case 0x0055: return "WM_NOTIFYFORMAT";
-        case 0x007B: return "WM_CONTEXTMENU";
-        case 0x007C: return "WM_STYLECHANGING";
-        case 0x007D: return "WM_STYLECHANGED";
-        case 0x007E: return "WM_DISPLAYCHANGE";
-        case 0x007F: return "WM_GETICON";
-        case 0x0080: return "WM_SETICON";
-#endif  //WIN32
-
-        case 0x0081: return "WM_NCCREATE";
-        case 0x0082: return "WM_NCDESTROY";
-        case 0x0083: return "WM_NCCALCSIZE";
-        case 0x0084: return "WM_NCHITTEST";
-        case 0x0085: return "WM_NCPAINT";
-        case 0x0086: return "WM_NCACTIVATE";
-        case 0x0087: return "WM_GETDLGCODE";
-        case 0x00A0: return "WM_NCMOUSEMOVE";
-        case 0x00A1: return "WM_NCLBUTTONDOWN";
-        case 0x00A2: return "WM_NCLBUTTONUP";
-        case 0x00A3: return "WM_NCLBUTTONDBLCLK";
-        case 0x00A4: return "WM_NCRBUTTONDOWN";
-        case 0x00A5: return "WM_NCRBUTTONUP";
-        case 0x00A6: return "WM_NCRBUTTONDBLCLK";
-        case 0x00A7: return "WM_NCMBUTTONDOWN";
-        case 0x00A8: return "WM_NCMBUTTONUP";
-        case 0x00A9: return "WM_NCMBUTTONDBLCLK";
-        case 0x0100: return "WM_KEYDOWN";
-        case 0x0101: return "WM_KEYUP";
-        case 0x0102: return "WM_CHAR";
-        case 0x0103: return "WM_DEADCHAR";
-        case 0x0104: return "WM_SYSKEYDOWN";
-        case 0x0105: return "WM_SYSKEYUP";
-        case 0x0106: return "WM_SYSCHAR";
-        case 0x0107: return "WM_SYSDEADCHAR";
-        case 0x0108: return "WM_KEYLAST";
-
-#ifdef  __WIN32__
-        case 0x010D: return "WM_IME_STARTCOMPOSITION";
-        case 0x010E: return "WM_IME_ENDCOMPOSITION";
-        case 0x010F: return "WM_IME_COMPOSITION";
-#endif  //WIN32
-
-        case 0x0110: return "WM_INITDIALOG";
-        case 0x0111: return "WM_COMMAND";
-        case 0x0112: return "WM_SYSCOMMAND";
-        case 0x0113: return "WM_TIMER";
-        case 0x0114: return "WM_HSCROLL";
-        case 0x0115: return "WM_VSCROLL";
-        case 0x0116: return "WM_INITMENU";
-        case 0x0117: return "WM_INITMENUPOPUP";
-        case 0x011F: return "WM_MENUSELECT";
-        case 0x0120: return "WM_MENUCHAR";
-        case 0x0121: return "WM_ENTERIDLE";
-        case 0x0200: return "WM_MOUSEMOVE";
-        case 0x0201: return "WM_LBUTTONDOWN";
-        case 0x0202: return "WM_LBUTTONUP";
-        case 0x0203: return "WM_LBUTTONDBLCLK";
-        case 0x0204: return "WM_RBUTTONDOWN";
-        case 0x0205: return "WM_RBUTTONUP";
-        case 0x0206: return "WM_RBUTTONDBLCLK";
-        case 0x0207: return "WM_MBUTTONDOWN";
-        case 0x0208: return "WM_MBUTTONUP";
-        case 0x0209: return "WM_MBUTTONDBLCLK";
-        case 0x0210: return "WM_PARENTNOTIFY";
-        case 0x0211: return "WM_ENTERMENULOOP";
-        case 0x0212: return "WM_EXITMENULOOP";
-
-#ifdef  __WIN32__
-        case 0x0213: return "WM_NEXTMENU";
-        case 0x0214: return "WM_SIZING";
-        case 0x0215: return "WM_CAPTURECHANGED";
-        case 0x0216: return "WM_MOVING";
-        case 0x0218: return "WM_POWERBROADCAST";
-        case 0x0219: return "WM_DEVICECHANGE";
-#endif  //WIN32
-
-        case 0x0220: return "WM_MDICREATE";
-        case 0x0221: return "WM_MDIDESTROY";
-        case 0x0222: return "WM_MDIACTIVATE";
-        case 0x0223: return "WM_MDIRESTORE";
-        case 0x0224: return "WM_MDINEXT";
-        case 0x0225: return "WM_MDIMAXIMIZE";
-        case 0x0226: return "WM_MDITILE";
-        case 0x0227: return "WM_MDICASCADE";
-        case 0x0228: return "WM_MDIICONARRANGE";
-        case 0x0229: return "WM_MDIGETACTIVE";
-        case 0x0230: return "WM_MDISETMENU";
-        case 0x0233: return "WM_DROPFILES";
-
-#ifdef  __WIN32__
-        case 0x0281: return "WM_IME_SETCONTEXT";
-        case 0x0282: return "WM_IME_NOTIFY";
-        case 0x0283: return "WM_IME_CONTROL";
-        case 0x0284: return "WM_IME_COMPOSITIONFULL";
-        case 0x0285: return "WM_IME_SELECT";
-        case 0x0286: return "WM_IME_CHAR";
-        case 0x0290: return "WM_IME_KEYDOWN";
-        case 0x0291: return "WM_IME_KEYUP";
-#endif  //WIN32
-
-        case 0x0300: return "WM_CUT";
-        case 0x0301: return "WM_COPY";
-        case 0x0302: return "WM_PASTE";
-        case 0x0303: return "WM_CLEAR";
-        case 0x0304: return "WM_UNDO";
-        case 0x0305: return "WM_RENDERFORMAT";
-        case 0x0306: return "WM_RENDERALLFORMATS";
-        case 0x0307: return "WM_DESTROYCLIPBOARD";
-        case 0x0308: return "WM_DRAWCLIPBOARD";
-        case 0x0309: return "WM_PAINTCLIPBOARD";
-        case 0x030A: return "WM_VSCROLLCLIPBOARD";
-        case 0x030B: return "WM_SIZECLIPBOARD";
-        case 0x030C: return "WM_ASKCBFORMATNAME";
-        case 0x030D: return "WM_CHANGECBCHAIN";
-        case 0x030E: return "WM_HSCROLLCLIPBOARD";
-        case 0x030F: return "WM_QUERYNEWPALETTE";
-        case 0x0310: return "WM_PALETTEISCHANGING";
-        case 0x0311: return "WM_PALETTECHANGED";
-
-#ifdef __WIN32__
-        // common controls messages - although they're not strictly speaking
-        // standard, it's nice to decode them nevertheless
+        case 0x0004: return "WM_ENABLE";
+        case 0x0005: return "WM_SHOW";
+        case 0x0006: return "WM_MOVE";
+        case 0x0007: return "WM_SIZE";
+        case 0x0008: return "WM_ADJUSTWINDOWPOS";
+        case 0x0009: return "WM_CALCVALIDRECTS";
+        case 0x000A: return "WM_SETWINDOWPARAMS";
+        case 0x000B: return "WM_QUERYWINDOWPARAMS";
+        case 0x000C: return "WM_HITTEST";
+        case 0x000D: return "WM_ACTIVATE";
+        case 0x000F: return "WM_SETFOCUS";
+        case 0x0010: return "WM_SETSELECTION";
+        case 0x0011: return "WM_PPAINT";
+        case 0x0012: return "WM_PSETFOCUS";
+        case 0x0013: return "WM_PSYSCOLORCHANGE";
+        case 0x0014: return "WM_PSIZE";
+        case 0x0015: return "WM_PACTIVATE";
+        case 0x0016: return "WM_PCONTROL";
+        case 0x0020: return "WM_COMMAND";
+        case 0x0021: return "WM_SYSCOMMAND";
+        case 0x0022: return "WM_HELP";
+        case 0x0023: return "WM_PAINT";
+        case 0x0024: return "WM_TIMER";
+        case 0x0025: return "WM_SEM1";
+        case 0x0026: return "WM_SEM2";
+        case 0x0027: return "WM_SEM3";
+        case 0x0028: return "WM_SEM4";
+        case 0x0029: return "WM_CLOSE";
+        case 0x002A: return "WM_QUIT";
+        case 0x002B: return "WM_SYSCOLORCHANGE";
+        case 0x002D: return "WM_SYSVALUECHANGE";
+        case 0x002E: return "WM_APPTERMINATENOTIFY";
+        case 0x002F: return "WM_PRESPARAMCHANGED";
+        // Control notification messages
+        case 0x0030: return "WM_CONTROL";
+        case 0x0031: return "WM_VSCROLL";
+        case 0x0032: return "WM_HSCROLL";
+        case 0x0033: return "WM_INITMENU";
+        case 0x0034: return "WM_MENUSELECT";
+        case 0x0035: return "WM_MENUSEND";
+        case 0x0036: return "WM_DRAWITEM";
+        case 0x0037: return "WM_MEASUREITEM";
+        case 0x0038: return "WM_CONTROLPOINTER";
+        case 0x003A: return "WM_QUERYDLGCODE";
+        case 0x003B: return "WM_INITDLG";
+        case 0x003C: return "WM_SUBSTITUTESTRING";
+        case 0x003D: return "WM_MATCHMNEMONIC";
+        case 0x003E: return "WM_SAVEAPPLICATION";
+        case 0x0129: return "WM_CTLCOLORCHANGE";
+        case 0x0130: return "WM_QUERYCTLTYPE";
+        // Frame messages
+        case 0x0040: return "WM_FLASHWINDOW";
+        case 0x0041: return "WM_FORMATFRAME";
+        case 0x0042: return "WM_UPDATEFRAME";
+        case 0x0043: return "WM_FOCUSCHANGE";
+        case 0x0044: return "WM_SETBORDERSIZE";
+        case 0x0045: return "WM_TRACKFRAME";
+        case 0x0046: return "WM_MINMAXFRAME";
+        case 0x0047: return "WM_SETICON";
+        case 0x0048: return "WM_QUERYICON";
+        case 0x0049: return "WM_SETACCELTABLE";
+        case 0x004A: return "WM_QUERYACCELTABLE";
+        case 0x004B: return "WM_TRANSLATEACCEL";
+        case 0x004C: return "WM_QUERYTRACKINFO";
+        case 0x004D: return "WM_QUERYBORDERSIZE";
+        case 0x004E: return "WM_NEXTMENU";
+        case 0x004F: return "WM_ERASEBACKGROUND";
+        case 0x0050: return "WM_QUERYFRAMEINFO";
+        case 0x0051: return "WM_QUERYFOCUSCHAIN";
+        case 0x0052: return "WM_OWNERPOSCHANGE";
+        case 0x0053: return "WM_CACLFRAMERECT";
+        case 0x0055: return "WM_WINDOWPOSCHANGED";
+        case 0x0056: return "WM_ADJUSTFRAMEPOS";
+        case 0x0059: return "WM_QUERYFRAMECTLCOUNT";
+        case 0x005B: return "WM_QUERYHELPINFO";
+        case 0x005C: return "WM_SETHELPINFO";
+        case 0x005D: return "WM_ERROR";
+        case 0x005E: return "WM_REALIZEPALETTE";
+        // Clipboard messages
+        case 0x0060: return "WM_RENDERFMT";
+        case 0x0061: return "WM_RENDERALLFMTS";
+        case 0x0062: return "WM_DESTROYCLIPBOARD";
+        case 0x0063: return "WM_PAINTCLIPBOARD";
+        case 0x0064: return "WM_SIZECLIPBOARD";
+        case 0x0065: return "WM_HSCROLLCLIPBOARD";
+        case 0x0066: return "WM_VSCROLLCLIPBOARD";
+        case 0x0067: return "WM_DRAWCLIPBOARD";
+        // mouse messages
+        case 0x0070: return "WM_MOUSEMOVE";
+        case 0x0071: return "WM_BUTTON1DOWN";
+        case 0x0072: return "WM_BUTTON1UP";
+        case 0x0073: return "WM_BUTTON1DBLCLK";
+        case 0x0074: return "WM_BUTTON2DOWN";
+        case 0x0075: return "WM_BUTTON2UP";
+        case 0x0076: return "WM_BUTTON2DBLCLK";
+        case 0x0077: return "WM_BUTTON3DOWN";
+        case 0x0078: return "WM_BUTTON3UP";
+        case 0x0079: return "WM_BUTTON3DBLCLK";
+        case 0x007D: return "WM_MOUSEMAP";
+        case 0x007E: return "WM_VRNDISABLED";
+        case 0x007F: return "WM_VRNENABLED";
+        case 0x0410: return "WM_CHORD";
+        case 0x0411: return "WM_BUTTON1MOTIONSTART";
+        case 0x0412: return "WM_BUTTON1MOTIONEND";
+        case 0x0413: return "WM_BUTTON1CLICK";
+        case 0x0414: return "WM_BUTTON2MOTIONSTART";
+        case 0x0415: return "WM_BUTTON2MOTIONEND";
+        case 0x0416: return "WM_BUTTON2CLICK";
+        case 0x0417: return "WM_BUTTON3MOTIONSTART";
+        case 0x0418: return "WM_BUTTON3MOTIONEND";
+        case 0x0419: return "WM_BUTTON3CLICK";
+        case 0x0420: return "WM_BEGINDRAG";
+        case 0x0421: return "WM_ENDDRAG";
+        case 0x0422: return "WM_SINGLESELECT";
+        case 0x0423: return "WM_OPEN";
+        case 0x0424: return "WM_CONTEXTMENU";
+        case 0x0425: return "WM_CONTEXTHELP";
+        case 0x0426: return "WM_TEXTEDIT";
+        case 0x0427: return "WM_BEGINSELECT";
+        case 0x0228: return "WM_ENDSELECT";
+        case 0x0429: return "WM_PICKUP";
+        case 0x04C0: return "WM_PENFIRST";
+        case 0x04FF: return "WM_PENLAST";
+        case 0x0500: return "WM_MMPMFIRST";
+        case 0x05FF: return "WM_MMPMLAST";
+        case 0x0600: return "WM_STDDLGFIRST";
+        case 0x06FF: return "WM_STDDLGLAST";
+        case 0x0BD0: return "WM_BIDI_FIRST";
+        case 0x0BFF: return "WM_BIDI_LAST";
+        // keyboard input
+        case 0x007A: return "WM_CHAR";
+        case 0x007B: return "WM_VIOCHAR";
+        // DDE messages
+        case 0x00A0: return "WM_DDE_INITIATE";
+        case 0x00A1: return "WM_DDE_REQUEST";
+        case 0x00A2: return "WM_DDE_ACK";
+        case 0x00A3: return "WM_DDE_DATA";
+        case 0x00A4: return "WM_DDE_ADVISE";
+        case 0x00A5: return "WM_DDE_UNADVISE";
+        case 0x00A6: return "WM_DDE_POKE";
+        case 0x00A7: return "WM_DDE_EXECUTE";
+        case 0x00A8: return "WM_DDE_TERMINATE";
+        case 0x00A9: return "WM_DDE_INITIATEACK";
+        case 0x00AF: return "WM_DDE_LAST";
+        // Buttons
+        case 0x0120: return "BM_CLICK";
+        case 0x0121: return "BM_QUERYCHECKINDEX";
+        case 0x0122: return "BM_QUERYHILITE";
+        case 0x0123: return "BM_SETHILITE";
+        case 0x0124: return "BM_QUERYCHECK";
+        case 0x0125: return "BM_SETCHECK";
+        case 0x0126: return "BM_SETDEFAULT";
+        case 0x0128: return "BM_AUTOSIZE";
+        // Combo boxes
+        case 0x029A: return "CBID_LIST";
+        case 0x029B: return "CBID_EDIT";
+        case 0x0170: return "CBM_SHOWLIST";
+        case 0x0171: return "CBM_HILITE";
+        case 0x0172: return "CBM_ISLISTSHOWING";
+        // Edit fields
+        case 0x0140: return "EM_QUERYCHANGED";
+        case 0x0141: return "EM_QUERYSEL";
+        case 0x0142: return "EM_SETSEL";
+        case 0x0143: return "EM_SETTEXTLIMIT";
+        case 0x0144: return "EM_CUT";
+        case 0x0145: return "EM_COPY";
+        case 0x0146: return "EM_CLEAR";
+        case 0x0147: return "EM_PASTE";
+        case 0x0148: return "EM_QUERYFIRSTCHAR";
+        case 0x0149: return "EM_SETFIRSTCHAR";
+        case 0x014A: return "EM_QUERYREADONLY";
+        case 0x014B: return "EM_SETREADONLY";
+        case 0x014C: return "EM_SETINSERTMODE";
+        // Listboxes
+        case 0x0160: return "LM_QUERYITEMCOUNT";
+        case 0x0161: return "LM_INSERTITEM";
+        case 0x0162: return "LM_SETOPENINDEX";
+        case 0x0163: return "LM_DELETEITEM";
+        case 0x0164: return "LM_SELECTITEM";
+        case 0x0165: return "LM_QUERYSELECTION";
+        case 0x0166: return "LM_SETITEMTEXT";
+        case 0x0167: return "LM_QUERYITEMTEXTLENGTH";
+        case 0x0168: return "LM_QUERYITEMTEXT";
+        case 0x0169: return "LM_SETITEMHANDLE";
+        case 0x016A: return "LM_QUERYITEMHANDLE";
+        case 0x016B: return "LM_SEARCHSTRING";
+        case 0x016C: return "LM_SETITEMHEIGHT";
+        case 0x016D: return "LM_QUERYTOPINDEX";
+        case 0x016E: return "LM_DELETEALL";
+        case 0x016F: return "LM_INSERTMULITEMS";
+        case 0x0660: return "LM_SETITEMWIDTH";
+        // Menus
+        case 0x0180: return "MM_INSERTITEM";
+        case 0x0181: return "MM_DELETEITEM";
+        case 0x0182: return "MM_QUERYITEM";
+        case 0x0183: return "MM_SETITEM";
+        case 0x0184: return "MM_QUERYITEMCOUNT";
+        case 0x0185: return "MM_STARTMENUMODE";
+        case 0x0186: return "MM_ENDMENUMODE";
+        case 0x0188: return "MM_REMOVEITEM";
+        case 0x0189: return "MM_SELECTITEM";
+        case 0x018A: return "MM_QUERYSELITEMID";
+        case 0x018B: return "MM_QUERYITEMTEXT";
+        case 0x018C: return "MM_QUERYITEMTEXTLENGTH";
+        case 0x018D: return "MM_SETITEMHANDLE";
+        case 0x018E: return "MM_SETITEMTEXT";
+        case 0x018F: return "MM_ITEMPOSITIONFROMID";
+        case 0x0190: return "MM_ITEMIDFROMPOSITION";
+        case 0x0191: return "MM_QUERYITEMATTR";
+        case 0x0192: return "MM_SETITEMATTR";
+        case 0x0193: return "MM_ISITEMVALID";
+        case 0x0194: return "MM_QUERYITEMRECT";
+        case 0x0431: return "MM_QUERYDEFAULTITEMID";
+        case 0x0432: return "MM_SETDEFAULTITEMID";
+        // Scrollbars
+        case 0x01A0: return "SBM_SETSCROLLBAR";
+        case 0x01A1: return "SBM_SETPOS";
+        case 0x01A2: return "SBM_QUERYPOS";
+        case 0x01A3: return "SBM_QUERYRANGE";
+        case 0x01A6: return "SBM_SETTHUMBSIZE";
+
+        // Help messages
+        case 0x0F00: return "WM_HELPBASE";
+        case 0x0FFF: return "WM_HELPTOP";
+        // Beginning of user defined messages
+        case 0x1000: return "WM_USER";
+
+        // wxWindows user defined types