/* * Copyright 2011 Vincent Sanders * * This file is part of NetSurf, http://www.netsurf-browser.org/ * * NetSurf is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License. * * NetSurf is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include "windbg.h" const char *msg_num_to_name(int msg) { static char str[256]; switch (msg) { case 32768: return "WM_APP"; case 6: return "WM_ACTIVATE "; case 28: return "WM_ACTIVATEAPP "; case 864: return "WM_AFXFIRST "; case 895: return "WM_AFXLAST "; case 780: return "WM_ASKCBFORMATNAME "; case 75: return "WM_CANCELJOURNAL "; case 31: return "WM_CANCELMODE "; case 533: return "WM_CAPTURECHANGED "; case 781: return "WM_CHANGECBCHAIN "; case 258: return "WM_CHAR "; case 47: return "WM_CHARTOITEM "; case 34: return "WM_CHILDACTIVATE "; case 771: return "WM_CLEAR "; case 16: return "WM_CLOSE "; case 273: return "WM_COMMAND "; case 68: return "WM_COMMNOTIFY "; case 65: return "WM_COMPACTING "; case 57: return "WM_COMPAREITEM "; case 123: return "WM_CONTEXTMENU "; case 769: return "WM_COPY "; case 74: return "WM_COPYDATA "; case 1: return "WM_CREATE "; case 309: return "WM_CTLCOLORBTN "; case 310: return "WM_CTLCOLORDLG "; case 307: return "WM_CTLCOLOREDIT "; case 308: return "WM_CTLCOLORLISTBOX "; case 306: return "WM_CTLCOLORMSGBOX "; case 311: return "WM_CTLCOLORSCROLLBAR "; case 312: return "WM_CTLCOLORSTATIC "; case 768: return "WM_CUT "; case 259: return "WM_DEADCHAR "; case 45: return "WM_DELETEITEM "; case 2: return "WM_DESTROY "; case 775: return "WM_DESTROYCLIPBOARD "; case 537: return "WM_DEVICECHANGE "; case 27: return "WM_DEVMODECHANGE "; case 126: return "WM_DISPLAYCHANGE "; case 776: return "WM_DRAWCLIPBOARD "; case 43: return "WM_DRAWITEM "; case 563: return "WM_DROPFILES "; case 10: return "WM_ENABLE "; case 22: return "WM_ENDSESSION "; case 289: return "WM_ENTERIDLE "; case 529: return "WM_ENTERMENULOOP "; case 561: return "WM_ENTERSIZEMOVE "; case 20: return "WM_ERASEBKGND "; case 530: return "WM_EXITMENULOOP "; case 562: return "WM_EXITSIZEMOVE "; case 29: return "WM_FONTCHANGE "; case 135: return "WM_GETDLGCODE "; case 49: return "WM_GETFONT "; case 51: return "WM_GETHOTKEY "; case 127: return "WM_GETICON "; case 36: return "WM_GETMINMAXINFO "; case 13: return "WM_GETTEXT "; case 14: return "WM_GETTEXTLENGTH "; case 856: return "WM_HANDHELDFIRST "; case 863: return "WM_HANDHELDLAST "; case 83: return "WM_HELP "; case 786: return "WM_HOTKEY "; case 276: return "WM_HSCROLL "; case 782: return "WM_HSCROLLCLIPBOARD "; case 39: return "WM_ICONERASEBKGND "; case 272: return "WM_INITDIALOG "; case 278: return "WM_INITMENU "; case 279: return "WM_INITMENUPOPUP "; case 0x00FF: return "WM_INPUT "; case 81: return "WM_INPUTLANGCHANGE "; case 80: return "WM_INPUTLANGCHANGEREQUEST "; case 256: return "WM_KEYDOWN "; case 257: return "WM_KEYUP "; case 8: return "WM_KILLFOCUS "; case 546: return "WM_MDIACTIVATE "; case 551: return "WM_MDICASCADE "; case 544: return "WM_MDICREATE "; case 545: return "WM_MDIDESTROY "; case 553: return "WM_MDIGETACTIVE "; case 552: return "WM_MDIICONARRANGE "; case 549: return "WM_MDIMAXIMIZE "; case 548: return "WM_MDINEXT "; case 564: return "WM_MDIREFRESHMENU "; case 547: return "WM_MDIRESTORE "; case 560: return "WM_MDISETMENU "; case 550: return "WM_MDITILE "; case 44: return "WM_MEASUREITEM "; case 0x003D: return "WM_GETOBJECT "; case 0x0127: return "WM_CHANGEUISTATE "; case 0x0128: return "WM_UPDATEUISTATE "; case 0x0129: return "WM_QUERYUISTATE "; case 0x0125: return "WM_UNINITMENUPOPUP "; case 290: return "WM_MENURBUTTONUP "; case 0x0126: return "WM_MENUCOMMAND "; case 0x0124: return "WM_MENUGETOBJECT "; case 0x0123: return "WM_MENUDRAG "; case 0x0319: return "WM_APPCOMMAND "; case 288: return "WM_MENUCHAR "; case 287: return "WM_MENUSELECT "; case 531: return "WM_NEXTMENU "; case 3: return "WM_MOVE "; case 534: return "WM_MOVING "; case 134: return "WM_NCACTIVATE "; case 131: return "WM_NCCALCSIZE "; case 129: return "WM_NCCREATE "; case 130: return "WM_NCDESTROY "; case 132: return "WM_NCHITTEST "; case 163: return "WM_NCLBUTTONDBLCLK "; case 161: return "WM_NCLBUTTONDOWN "; case 162: return "WM_NCLBUTTONUP "; case 169: return "WM_NCMBUTTONDBLCLK "; case 167: return "WM_NCMBUTTONDOWN "; case 168: return "WM_NCMBUTTONUP "; case 171: return "WM_NCXBUTTONDOWN "; case 172: return "WM_NCXBUTTONUP "; case 173: return "WM_NCXBUTTONDBLCLK "; case 0x02A0: return "WM_NCMOUSEHOVER "; case 0x02A2: return "WM_NCMOUSELEAVE "; case 160: return "WM_NCMOUSEMOVE "; case 133: return "WM_NCPAINT "; case 166: return "WM_NCRBUTTONDBLCLK "; case 164: return "WM_NCRBUTTONDOWN "; case 165: return "WM_NCRBUTTONUP "; case 40: return "WM_NEXTDLGCTL "; case 78: return "WM_NOTIFY "; case 85: return "WM_NOTIFYFORMAT "; case 0: return "WM_NULL "; case 15: return "WM_PAINT "; case 777: return "WM_PAINTCLIPBOARD "; case 38: return "WM_PAINTICON "; case 785: return "WM_PALETTECHANGED "; case 784: return "WM_PALETTEISCHANGING "; case 528: return "WM_PARENTNOTIFY "; case 770: return "WM_PASTE "; case 896: return "WM_PENWINFIRST "; case 911: return "WM_PENWINLAST "; case 72: return "WM_POWER "; case 536: return "WM_POWERBROADCAST "; case 791: return "WM_PRINT "; case 792: return "WM_PRINTCLIENT "; case 55: return "WM_QUERYDRAGICON "; case 17: return "WM_QUERYENDSESSION "; case 783: return "WM_QUERYNEWPALETTE "; case 19: return "WM_QUERYOPEN "; case 35: return "WM_QUEUESYNC "; case 18: return "WM_QUIT "; case 774: return "WM_RENDERALLFORMATS "; case 773: return "WM_RENDERFORMAT "; case 32: return "WM_SETCURSOR "; case 7: return "WM_SETFOCUS "; case 48: return "WM_SETFONT "; case 50: return "WM_SETHOTKEY "; case 128: return "WM_SETICON "; case 11: return "WM_SETREDRAW "; case 12: return "WM_SETTEXT "; case 26: return "WM_SETTINGCHANGE "; case 24: return "WM_SHOWWINDOW "; case 5: return "WM_SIZE "; case 779: return "WM_SIZECLIPBOARD "; case 532: return "WM_SIZING "; case 42: return "WM_SPOOLERSTATUS "; case 125: return "WM_STYLECHANGED "; case 124: return "WM_STYLECHANGING "; case 262: return "WM_SYSCHAR "; case 21: return "WM_SYSCOLORCHANGE "; case 274: return "WM_SYSCOMMAND "; case 263: return "WM_SYSDEADCHAR "; case 260: return "WM_SYSKEYDOWN "; case 261: return "WM_SYSKEYUP "; case 82: return "WM_TCARD "; case 794: return "WM_THEMECHANGED "; case 30: return "WM_TIMECHANGE "; case 275: return "WM_TIMER "; case 772: return "WM_UNDO "; case 1024: return "WM_USER "; case 84: return "WM_USERCHANGED "; case 46: return "WM_VKEYTOITEM "; case 277: return "WM_VSCROLL "; case 778: return "WM_VSCROLLCLIPBOARD "; case 71: return "WM_WINDOWPOSCHANGED "; case 70: return "WM_WINDOWPOSCHANGING "; case 264: return "WM_KEYLAST "; case 136: return "WM_SYNCPAINT "; case 33: return "WM_MOUSEACTIVATE "; case 512: return "WM_MOUSEMOVE "; case 513: return "WM_LBUTTONDOWN "; case 514: return "WM_LBUTTONUP "; case 515: return "WM_LBUTTONDBLCLK "; case 516: return "WM_RBUTTONDOWN "; case 517: return "WM_RBUTTONUP "; case 518: return "WM_RBUTTONDBLCLK "; case 519: return "WM_MBUTTONDOWN "; case 520: return "WM_MBUTTONUP "; case 521: return "WM_MBUTTONDBLCLK "; case 522: return "WM_MOUSEWHEEL "; case 523: return "WM_XBUTTONDOWN "; case 524: return "WM_XBUTTONUP "; case 525: return "WM_XBUTTONDBLCLK "; case 0x2A1: return "WM_MOUSEHOVER "; case 0x2A3: return "WM_MOUSELEAVE "; } sprintf(str,"%d",msg); return str; } void win_perror(const char * lpszFunction) { /* Retrieve the system error message for the last-error code */ LPVOID lpMsgBuf; LPVOID lpDisplayBuf; DWORD dw = GetLastError(); FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL ); /* Display the error message and exit the process */ lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT, (lstrlen((LPCTSTR)lpMsgBuf) + lstrlen((LPCTSTR)lpszFunction) + 40) * sizeof(TCHAR)); snprintf((LPTSTR)lpDisplayBuf, LocalSize(lpDisplayBuf) / sizeof(TCHAR), TEXT("%s failed with error %ld: %s"), lpszFunction, dw, (char *)lpMsgBuf); MessageBox(NULL, (LPCTSTR)lpDisplayBuf, TEXT("Error"), MB_OK); LocalFree(lpMsgBuf); LocalFree(lpDisplayBuf); }