You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
netsurf/frontends/windows/windbg.c

664 lines
9.3 KiB

/*
* Copyright 2011 Vincent Sanders <vince@netsurf-browser.org>
*
* 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 <http://www.gnu.org/licenses/>.
*/
#include <windows.h>
#include <stdio.h>
#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);
}