michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: /* michael@0: * nsWindowDbg - Debug related utilities for nsWindow. michael@0: */ michael@0: michael@0: #include "nsWindowDbg.h" michael@0: michael@0: #ifdef PR_LOGGING michael@0: extern PRLogModuleInfo* gWindowsLog; michael@0: #endif michael@0: michael@0: #if defined(POPUP_ROLLUP_DEBUG_OUTPUT) || defined(EVENT_DEBUG_OUTPUT) || 1 michael@0: michael@0: typedef struct { michael@0: const char * mStr; michael@0: long mId; michael@0: } EventMsgInfo; michael@0: michael@0: #if defined(POPUP_ROLLUP_DEBUG_OUTPUT) michael@0: MSGFEventMsgInfo gMSGFEvents[] = { michael@0: "MSGF_DIALOGBOX", 0, michael@0: "MSGF_MESSAGEBOX", 1, michael@0: "MSGF_MENU", 2, michael@0: "MSGF_SCROLLBAR", 5, michael@0: "MSGF_NEXTWINDOW", 6, michael@0: "MSGF_MAX", 8, michael@0: "MSGF_USER", 4096, michael@0: nullptr, 0}; michael@0: #endif michael@0: michael@0: EventMsgInfo gAllEvents[] = { michael@0: {"WM_NULL", 0x0000}, michael@0: {"WM_CREATE", 0x0001}, michael@0: {"WM_DESTROY", 0x0002}, michael@0: {"WM_MOVE", 0x0003}, michael@0: {"WM_SIZE", 0x0005}, michael@0: {"WM_ACTIVATE", 0x0006}, michael@0: {"WM_SETFOCUS", 0x0007}, michael@0: {"WM_KILLFOCUS", 0x0008}, michael@0: {"WM_ENABLE", 0x000A}, michael@0: {"WM_SETREDRAW", 0x000B}, michael@0: {"WM_SETTEXT", 0x000C}, michael@0: {"WM_GETTEXT", 0x000D}, michael@0: {"WM_GETTEXTLENGTH", 0x000E}, michael@0: {"WM_PAINT", 0x000F}, michael@0: {"WM_CLOSE", 0x0010}, michael@0: {"WM_QUERYENDSESSION", 0x0011}, michael@0: {"WM_QUIT", 0x0012}, michael@0: {"WM_QUERYOPEN", 0x0013}, michael@0: {"WM_ERASEBKGND", 0x0014}, michael@0: {"WM_SYSCOLORCHANGE", 0x0015}, michael@0: {"WM_ENDSESSION", 0x0016}, michael@0: {"WM_SHOWWINDOW", 0x0018}, michael@0: {"WM_SETTINGCHANGE", 0x001A}, michael@0: {"WM_DEVMODECHANGE", 0x001B}, michael@0: {"WM_ACTIVATEAPP", 0x001C}, michael@0: {"WM_FONTCHANGE", 0x001D}, michael@0: {"WM_TIMECHANGE", 0x001E}, michael@0: {"WM_CANCELMODE", 0x001F}, michael@0: {"WM_SETCURSOR", 0x0020}, michael@0: {"WM_MOUSEACTIVATE", 0x0021}, michael@0: {"WM_CHILDACTIVATE", 0x0022}, michael@0: {"WM_QUEUESYNC", 0x0023}, michael@0: {"WM_GETMINMAXINFO", 0x0024}, michael@0: {"WM_PAINTICON", 0x0026}, michael@0: {"WM_ICONERASEBKGND", 0x0027}, michael@0: {"WM_NEXTDLGCTL", 0x0028}, michael@0: {"WM_SPOOLERSTATUS", 0x002A}, michael@0: {"WM_DRAWITEM", 0x002B}, michael@0: {"WM_MEASUREITEM", 0x002C}, michael@0: {"WM_DELETEITEM", 0x002D}, michael@0: {"WM_VKEYTOITEM", 0x002E}, michael@0: {"WM_CHARTOITEM", 0x002F}, michael@0: {"WM_SETFONT", 0x0030}, michael@0: {"WM_GETFONT", 0x0031}, michael@0: {"WM_SETHOTKEY", 0x0032}, michael@0: {"WM_GETHOTKEY", 0x0033}, michael@0: {"WM_QUERYDRAGICON", 0x0037}, michael@0: {"WM_COMPAREITEM", 0x0039}, michael@0: {"WM_GETOBJECT", 0x003D}, michael@0: {"WM_COMPACTING", 0x0041}, michael@0: {"WM_COMMNOTIFY", 0x0044}, michael@0: {"WM_WINDOWPOSCHANGING", 0x0046}, michael@0: {"WM_WINDOWPOSCHANGED", 0x0047}, michael@0: {"WM_POWER", 0x0048}, michael@0: {"WM_COPYDATA", 0x004A}, michael@0: {"WM_CANCELJOURNAL", 0x004B}, michael@0: {"WM_NOTIFY", 0x004E}, michael@0: {"WM_INPUTLANGCHANGEREQUEST", 0x0050}, michael@0: {"WM_INPUTLANGCHANGE", 0x0051}, michael@0: {"WM_TCARD", 0x0052}, michael@0: {"WM_HELP", 0x0053}, michael@0: {"WM_USERCHANGED", 0x0054}, michael@0: {"WM_NOTIFYFORMAT", 0x0055}, michael@0: {"WM_CONTEXTMENU", 0x007B}, michael@0: {"WM_STYLECHANGING", 0x007C}, michael@0: {"WM_STYLECHANGED", 0x007D}, michael@0: {"WM_DISPLAYCHANGE", 0x007E}, michael@0: {"WM_GETICON", 0x007F}, michael@0: {"WM_SETICON", 0x0080}, michael@0: {"WM_NCCREATE", 0x0081}, michael@0: {"WM_NCDESTROY", 0x0082}, michael@0: {"WM_NCCALCSIZE", 0x0083}, michael@0: {"WM_NCHITTEST", 0x0084}, michael@0: {"WM_NCPAINT", 0x0085}, michael@0: {"WM_NCACTIVATE", 0x0086}, michael@0: {"WM_GETDLGCODE", 0x0087}, michael@0: {"WM_SYNCPAINT", 0x0088}, michael@0: {"WM_NCMOUSEMOVE", 0x00A0}, michael@0: {"WM_NCLBUTTONDOWN", 0x00A1}, michael@0: {"WM_NCLBUTTONUP", 0x00A2}, michael@0: {"WM_NCLBUTTONDBLCLK", 0x00A3}, michael@0: {"WM_NCRBUTTONDOWN", 0x00A4}, michael@0: {"WM_NCRBUTTONUP", 0x00A5}, michael@0: {"WM_NCRBUTTONDBLCLK", 0x00A6}, michael@0: {"WM_NCMBUTTONDOWN", 0x00A7}, michael@0: {"WM_NCMBUTTONUP", 0x00A8}, michael@0: {"WM_NCMBUTTONDBLCLK", 0x00A9}, michael@0: {"EM_GETSEL", 0x00B0}, michael@0: {"EM_SETSEL", 0x00B1}, michael@0: {"EM_GETRECT", 0x00B2}, michael@0: {"EM_SETRECT", 0x00B3}, michael@0: {"EM_SETRECTNP", 0x00B4}, michael@0: {"EM_SCROLL", 0x00B5}, michael@0: {"EM_LINESCROLL", 0x00B6}, michael@0: {"EM_SCROLLCARET", 0x00B7}, michael@0: {"EM_GETMODIFY", 0x00B8}, michael@0: {"EM_SETMODIFY", 0x00B9}, michael@0: {"EM_GETLINECOUNT", 0x00BA}, michael@0: {"EM_LINEINDEX", 0x00BB}, michael@0: {"EM_SETHANDLE", 0x00BC}, michael@0: {"EM_GETHANDLE", 0x00BD}, michael@0: {"EM_GETTHUMB", 0x00BE}, michael@0: {"EM_LINELENGTH", 0x00C1}, michael@0: {"EM_REPLACESEL", 0x00C2}, michael@0: {"EM_GETLINE", 0x00C4}, michael@0: {"EM_LIMITTEXT", 0x00C5}, michael@0: {"EM_CANUNDO", 0x00C6}, michael@0: {"EM_UNDO", 0x00C7}, michael@0: {"EM_FMTLINES", 0x00C8}, michael@0: {"EM_LINEFROMCHAR", 0x00C9}, michael@0: {"EM_SETTABSTOPS", 0x00CB}, michael@0: {"EM_SETPASSWORDCHAR", 0x00CC}, michael@0: {"EM_EMPTYUNDOBUFFER", 0x00CD}, michael@0: {"EM_GETFIRSTVISIBLELINE", 0x00CE}, michael@0: {"EM_SETREADONLY", 0x00CF}, michael@0: {"EM_SETWORDBREAKPROC", 0x00D0}, michael@0: {"EM_GETWORDBREAKPROC", 0x00D1}, michael@0: {"EM_GETPASSWORDCHAR", 0x00D2}, michael@0: {"EM_SETMARGINS", 0x00D3}, michael@0: {"EM_GETMARGINS", 0x00D4}, michael@0: {"EM_GETLIMITTEXT", 0x00D5}, michael@0: {"EM_POSFROMCHAR", 0x00D6}, michael@0: {"EM_CHARFROMPOS", 0x00D7}, michael@0: {"EM_SETIMESTATUS", 0x00D8}, michael@0: {"EM_GETIMESTATUS", 0x00D9}, michael@0: {"SBM_SETPOS", 0x00E0}, michael@0: {"SBM_GETPOS", 0x00E1}, michael@0: {"SBM_SETRANGE", 0x00E2}, michael@0: {"SBM_SETRANGEREDRAW", 0x00E6}, michael@0: {"SBM_GETRANGE", 0x00E3}, michael@0: {"SBM_ENABLE_ARROWS", 0x00E4}, michael@0: {"SBM_SETSCROLLINFO", 0x00E9}, michael@0: {"SBM_GETSCROLLINFO", 0x00EA}, michael@0: {"WM_KEYDOWN", 0x0100}, michael@0: {"WM_KEYUP", 0x0101}, michael@0: {"WM_CHAR", 0x0102}, michael@0: {"WM_DEADCHAR", 0x0103}, michael@0: {"WM_SYSKEYDOWN", 0x0104}, michael@0: {"WM_SYSKEYUP", 0x0105}, michael@0: {"WM_SYSCHAR", 0x0106}, michael@0: {"WM_SYSDEADCHAR", 0x0107}, michael@0: {"WM_KEYLAST", 0x0108}, michael@0: {"WM_IME_STARTCOMPOSITION", 0x010D}, michael@0: {"WM_IME_ENDCOMPOSITION", 0x010E}, michael@0: {"WM_IME_COMPOSITION", 0x010F}, michael@0: {"WM_INITDIALOG", 0x0110}, michael@0: {"WM_COMMAND", 0x0111}, michael@0: {"WM_SYSCOMMAND", 0x0112}, michael@0: {"WM_TIMER", 0x0113}, michael@0: {"WM_HSCROLL", 0x0114}, michael@0: {"WM_VSCROLL", 0x0115}, michael@0: {"WM_INITMENU", 0x0116}, michael@0: {"WM_INITMENUPOPUP", 0x0117}, michael@0: {"WM_MENUSELECT", 0x011F}, michael@0: {"WM_MENUCHAR", 0x0120}, michael@0: {"WM_ENTERIDLE", 0x0121}, michael@0: {"WM_MENURBUTTONUP", 0x0122}, michael@0: {"WM_MENUDRAG", 0x0123}, michael@0: {"WM_MENUGETOBJECT", 0x0124}, michael@0: {"WM_UNINITMENUPOPUP", 0x0125}, michael@0: {"WM_MENUCOMMAND", 0x0126}, michael@0: {"WM_CHANGEUISTATE", 0x0127}, michael@0: {"WM_UPDATEUISTATE", 0x0128}, michael@0: {"WM_CTLCOLORMSGBOX", 0x0132}, michael@0: {"WM_CTLCOLOREDIT", 0x0133}, michael@0: {"WM_CTLCOLORLISTBOX", 0x0134}, michael@0: {"WM_CTLCOLORBTN", 0x0135}, michael@0: {"WM_CTLCOLORDLG", 0x0136}, michael@0: {"WM_CTLCOLORSCROLLBAR", 0x0137}, michael@0: {"WM_CTLCOLORSTATIC", 0x0138}, michael@0: {"CB_GETEDITSEL", 0x0140}, michael@0: {"CB_LIMITTEXT", 0x0141}, michael@0: {"CB_SETEDITSEL", 0x0142}, michael@0: {"CB_ADDSTRING", 0x0143}, michael@0: {"CB_DELETESTRING", 0x0144}, michael@0: {"CB_DIR", 0x0145}, michael@0: {"CB_GETCOUNT", 0x0146}, michael@0: {"CB_GETCURSEL", 0x0147}, michael@0: {"CB_GETLBTEXT", 0x0148}, michael@0: {"CB_GETLBTEXTLEN", 0x0149}, michael@0: {"CB_INSERTSTRING", 0x014A}, michael@0: {"CB_RESETCONTENT", 0x014B}, michael@0: {"CB_FINDSTRING", 0x014C}, michael@0: {"CB_SELECTSTRING", 0x014D}, michael@0: {"CB_SETCURSEL", 0x014E}, michael@0: {"CB_SHOWDROPDOWN", 0x014F}, michael@0: {"CB_GETITEMDATA", 0x0150}, michael@0: {"CB_SETITEMDATA", 0x0151}, michael@0: {"CB_GETDROPPEDCONTROLRECT", 0x0152}, michael@0: {"CB_SETITEMHEIGHT", 0x0153}, michael@0: {"CB_GETITEMHEIGHT", 0x0154}, michael@0: {"CB_SETEXTENDEDUI", 0x0155}, michael@0: {"CB_GETEXTENDEDUI", 0x0156}, michael@0: {"CB_GETDROPPEDSTATE", 0x0157}, michael@0: {"CB_FINDSTRINGEXACT", 0x0158}, michael@0: {"CB_SETLOCALE", 0x0159}, michael@0: {"CB_GETLOCALE", 0x015A}, michael@0: {"CB_GETTOPINDEX", 0x015b}, michael@0: {"CB_SETTOPINDEX", 0x015c}, michael@0: {"CB_GETHORIZONTALEXTENT", 0x015d}, michael@0: {"CB_SETHORIZONTALEXTENT", 0x015e}, michael@0: {"CB_GETDROPPEDWIDTH", 0x015f}, michael@0: {"CB_SETDROPPEDWIDTH", 0x0160}, michael@0: {"CB_INITSTORAGE", 0x0161}, michael@0: {"CB_MSGMAX", 0x0162}, michael@0: {"LB_ADDSTRING", 0x0180}, michael@0: {"LB_INSERTSTRING", 0x0181}, michael@0: {"LB_DELETESTRING", 0x0182}, michael@0: {"LB_SELITEMRANGEEX", 0x0183}, michael@0: {"LB_RESETCONTENT", 0x0184}, michael@0: {"LB_SETSEL", 0x0185}, michael@0: {"LB_SETCURSEL", 0x0186}, michael@0: {"LB_GETSEL", 0x0187}, michael@0: {"LB_GETCURSEL", 0x0188}, michael@0: {"LB_GETTEXT", 0x0189}, michael@0: {"LB_GETTEXTLEN", 0x018A}, michael@0: {"LB_GETCOUNT", 0x018B}, michael@0: {"LB_SELECTSTRING", 0x018C}, michael@0: {"LB_DIR", 0x018D}, michael@0: {"LB_GETTOPINDEX", 0x018E}, michael@0: {"LB_FINDSTRING", 0x018F}, michael@0: {"LB_GETSELCOUNT", 0x0190}, michael@0: {"LB_GETSELITEMS", 0x0191}, michael@0: {"LB_SETTABSTOPS", 0x0192}, michael@0: {"LB_GETHORIZONTALEXTENT", 0x0193}, michael@0: {"LB_SETHORIZONTALEXTENT", 0x0194}, michael@0: {"LB_SETCOLUMNWIDTH", 0x0195}, michael@0: {"LB_ADDFILE", 0x0196}, michael@0: {"LB_SETTOPINDEX", 0x0197}, michael@0: {"LB_GETITEMRECT", 0x0198}, michael@0: {"LB_GETITEMDATA", 0x0199}, michael@0: {"LB_SETITEMDATA", 0x019A}, michael@0: {"LB_SELITEMRANGE", 0x019B}, michael@0: {"LB_SETANCHORINDEX", 0x019C}, michael@0: {"LB_GETANCHORINDEX", 0x019D}, michael@0: {"LB_SETCARETINDEX", 0x019E}, michael@0: {"LB_GETCARETINDEX", 0x019F}, michael@0: {"LB_SETITEMHEIGHT", 0x01A0}, michael@0: {"LB_GETITEMHEIGHT", 0x01A1}, michael@0: {"LB_FINDSTRINGEXACT", 0x01A2}, michael@0: {"LB_SETLOCALE", 0x01A5}, michael@0: {"LB_GETLOCALE", 0x01A6}, michael@0: {"LB_SETCOUNT", 0x01A7}, michael@0: {"LB_INITSTORAGE", 0x01A8}, michael@0: {"LB_ITEMFROMPOINT", 0x01A9}, michael@0: {"LB_MSGMAX", 0x01B0}, michael@0: {"WM_MOUSEMOVE", 0x0200}, michael@0: {"WM_LBUTTONDOWN", 0x0201}, michael@0: {"WM_LBUTTONUP", 0x0202}, michael@0: {"WM_LBUTTONDBLCLK", 0x0203}, michael@0: {"WM_RBUTTONDOWN", 0x0204}, michael@0: {"WM_RBUTTONUP", 0x0205}, michael@0: {"WM_RBUTTONDBLCLK", 0x0206}, michael@0: {"WM_MBUTTONDOWN", 0x0207}, michael@0: {"WM_MBUTTONUP", 0x0208}, michael@0: {"WM_MBUTTONDBLCLK", 0x0209}, michael@0: {"WM_MOUSEWHEEL", 0x020A}, michael@0: {"WM_MOUSEHWHEEL", 0x020E}, michael@0: {"WM_PARENTNOTIFY", 0x0210}, michael@0: {"WM_ENTERMENULOOP", 0x0211}, michael@0: {"WM_EXITMENULOOP", 0x0212}, michael@0: {"WM_NEXTMENU", 0x0213}, michael@0: {"WM_SIZING", 0x0214}, michael@0: {"WM_CAPTURECHANGED", 0x0215}, michael@0: {"WM_MOVING", 0x0216}, michael@0: {"WM_POWERBROADCAST", 0x0218}, michael@0: {"WM_DEVICECHANGE", 0x0219}, michael@0: {"WM_MDICREATE", 0x0220}, michael@0: {"WM_MDIDESTROY", 0x0221}, michael@0: {"WM_MDIACTIVATE", 0x0222}, michael@0: {"WM_MDIRESTORE", 0x0223}, michael@0: {"WM_MDINEXT", 0x0224}, michael@0: {"WM_MDIMAXIMIZE", 0x0225}, michael@0: {"WM_MDITILE", 0x0226}, michael@0: {"WM_MDICASCADE", 0x0227}, michael@0: {"WM_MDIICONARRANGE", 0x0228}, michael@0: {"WM_MDIGETACTIVE", 0x0229}, michael@0: {"WM_MDISETMENU", 0x0230}, michael@0: {"WM_ENTERSIZEMOVE", 0x0231}, michael@0: {"WM_EXITSIZEMOVE", 0x0232}, michael@0: {"WM_DROPFILES", 0x0233}, michael@0: {"WM_MDIREFRESHMENU", 0x0234}, michael@0: {"WM_IME_SETCONTEXT", 0x0281}, michael@0: {"WM_IME_NOTIFY", 0x0282}, michael@0: {"WM_IME_CONTROL", 0x0283}, michael@0: {"WM_IME_COMPOSITIONFULL", 0x0284}, michael@0: {"WM_IME_SELECT", 0x0285}, michael@0: {"WM_IME_CHAR", 0x0286}, michael@0: {"WM_IME_REQUEST", 0x0288}, michael@0: {"WM_IME_KEYDOWN", 0x0290}, michael@0: {"WM_IME_KEYUP", 0x0291}, michael@0: {"WM_NCMOUSEHOVER", 0x02A0}, michael@0: {"WM_MOUSEHOVER", 0x02A1}, michael@0: {"WM_MOUSELEAVE", 0x02A3}, michael@0: {"WM_CUT", 0x0300}, michael@0: {"WM_COPY", 0x0301}, michael@0: {"WM_PASTE", 0x0302}, michael@0: {"WM_CLEAR", 0x0303}, michael@0: {"WM_UNDO", 0x0304}, michael@0: {"WM_RENDERFORMAT", 0x0305}, michael@0: {"WM_RENDERALLFORMATS", 0x0306}, michael@0: {"WM_DESTROYCLIPBOARD", 0x0307}, michael@0: {"WM_DRAWCLIPBOARD", 0x0308}, michael@0: {"WM_PAINTCLIPBOARD", 0x0309}, michael@0: {"WM_VSCROLLCLIPBOARD", 0x030A}, michael@0: {"WM_SIZECLIPBOARD", 0x030B}, michael@0: {"WM_ASKCBFORMATNAME", 0x030C}, michael@0: {"WM_CHANGECBCHAIN", 0x030D}, michael@0: {"WM_HSCROLLCLIPBOARD", 0x030E}, michael@0: {"WM_QUERYNEWPALETTE", 0x030F}, michael@0: {"WM_PALETTEISCHANGING", 0x0310}, michael@0: {"WM_PALETTECHANGED", 0x0311}, michael@0: {"WM_HOTKEY", 0x0312}, michael@0: {"WM_PRINT", 0x0317}, michael@0: {"WM_PRINTCLIENT", 0x0318}, michael@0: {"WM_THEMECHANGED", 0x031A}, michael@0: {"WM_HANDHELDFIRST", 0x0358}, michael@0: {"WM_HANDHELDLAST", 0x035F}, michael@0: {"WM_AFXFIRST", 0x0360}, michael@0: {"WM_AFXLAST", 0x037F}, michael@0: {"WM_PENWINFIRST", 0x0380}, michael@0: {"WM_PENWINLAST", 0x038F}, michael@0: {"WM_APP", 0x8000}, michael@0: {"WM_DWMCOMPOSITIONCHANGED", 0x031E}, michael@0: {"WM_DWMNCRENDERINGCHANGED", 0x031F}, michael@0: {"WM_DWMCOLORIZATIONCOLORCHANGED", 0x0320}, michael@0: {"WM_DWMWINDOWMAXIMIZEDCHANGE", 0x0321}, michael@0: {"WM_DWMSENDICONICTHUMBNAIL", 0x0323}, michael@0: {"WM_DWMSENDICONICLIVEPREVIEWBITMAP", 0x0326}, michael@0: {"WM_TABLET_QUERYSYSTEMGESTURESTATUS", 0x02CC}, michael@0: {"WM_GESTURE", 0x0119}, michael@0: {"WM_GESTURENOTIFY", 0x011A}, michael@0: {"WM_GETTITLEBARINFOEX", 0x033F}, michael@0: {nullptr, 0x0} michael@0: }; michael@0: michael@0: static long gEventCounter = 0; michael@0: static long gLastEventMsg = 0; michael@0: michael@0: void PrintEvent(UINT msg, bool aShowAllEvents, bool aShowMouseMoves) michael@0: { michael@0: int inx = 0; michael@0: while (gAllEvents[inx].mId != (long)msg && gAllEvents[inx].mStr != nullptr) { michael@0: inx++; michael@0: } michael@0: if (aShowAllEvents || (!aShowAllEvents && gLastEventMsg != (long)msg)) { michael@0: if (aShowMouseMoves || (!aShowMouseMoves && msg != 0x0020 && msg != 0x0200 && msg != 0x0084)) { michael@0: PR_LOG(gWindowsLog, PR_LOG_ALWAYS, michael@0: ("%6d - 0x%04X %s\n", gEventCounter++, msg, michael@0: gAllEvents[inx].mStr ? gAllEvents[inx].mStr : "Unknown")); michael@0: gLastEventMsg = msg; michael@0: } michael@0: } michael@0: } michael@0: michael@0: #endif // defined(POPUP_ROLLUP_DEBUG_OUTPUT) || defined(EVENT_DEBUG_OUTPUT) michael@0: michael@0: #ifdef DEBUG michael@0: void DDError(const char *msg, HRESULT hr) michael@0: { michael@0: /*XXX make nicer */ michael@0: PR_LOG(gWindowsLog, PR_LOG_ERROR, michael@0: ("direct draw error %s: 0x%08lx\n", msg, hr)); michael@0: } michael@0: #endif michael@0: michael@0: #ifdef DEBUG_VK michael@0: bool is_vk_down(int vk) michael@0: { michael@0: SHORT st = GetKeyState(vk); michael@0: #ifdef DEBUG michael@0: PR_LOG(gWindowsLog, PR_LOG_ALWAYS, ("is_vk_down vk=%x st=%x\n",vk, st)); michael@0: #endif michael@0: return (st < 0); michael@0: } michael@0: #endif