|
|
1.1 ! root 1: ! 2: /******************************************************************************\ ! 3: * This is a part of the Microsoft Source Code Samples. ! 4: * Copyright (C) 1993 Microsoft Corporation. ! 5: * All rights reserved. ! 6: * This source code is only intended as a supplement to ! 7: * Microsoft Development Tools and/or WinHelp documentation. ! 8: * See these sources for detailed information regarding the ! 9: * Microsoft samples programs. ! 10: \******************************************************************************/ ! 11: ! 12: /*****************************************************************************\ ! 13: * ! 14: * Module: wm.c ! 15: * ! 16: * Contains functions that lookup and format messages received by the ! 17: * Windows debugging Spy SDK applet. ! 18: * ! 19: * Functions: ! 20: * ! 21: * CalculatePrintfTabs() ! 22: * PrintMsg() ! 23: * DecodeGeneric() ! 24: * MsgCmp() ! 25: * mprintf() ! 26: * ! 27: * Comments: ! 28: * ! 29: \*****************************************************************************/ ! 30: ! 31: #include "spy.h" ! 32: #include <stdlib.h> ! 33: #include <dde.h> ! 34: ! 35: ! 36: PRIVATE CHAR szFormatName[] = "%08X\t%s\t%08X\t%08X"; ! 37: PRIVATE CHAR szFormatUSER[] = "%08X\tWM_USER+%d\t%08X\t%08X"; ! 38: PRIVATE CHAR szFormatUnknown[] = "%08X\tWM_%04X\t%08X\t%08X"; ! 39: ! 40: ! 41: VOID DecodeGeneric(HWND hwnd, UINT msg, PSPYMSGDATA psmd) {} ! 42: ! 43: ! 44: // ! 45: // Message description table. Describes each message that can be spied on. ! 46: // This table must be kept in sorted order. ! 47: // ! 48: MSGDESC gaMsgs[] = ! 49: { ! 50: { "WM_NULL", WM_NULL, // 0x0000 ! 51: 0, DecodeGeneric }, ! 52: { "WM_CREATE", WM_CREATE, // 0x0001 ! 53: 0, DecodeGeneric }, ! 54: { "WM_DESTROY", WM_DESTROY, // 0x0002 ! 55: 0, DecodeGeneric }, ! 56: { "WM_MOVE", WM_MOVE, // 0x0003 ! 57: 0, DecodeGeneric }, ! 58: { "WM_SIZE", WM_SIZE, // 0x0005 ! 59: 0, DecodeGeneric }, ! 60: { "WM_ACTIVATE", WM_ACTIVATE, // 0x0006 ! 61: 0, DecodeGeneric }, ! 62: { "WM_SETFOCUS", WM_SETFOCUS, // 0x0007 ! 63: 0, DecodeGeneric }, ! 64: { "WM_KILLFOCUS", WM_KILLFOCUS, // 0x0008 ! 65: 0, DecodeGeneric }, ! 66: { "WM_ENABLE", WM_ENABLE, // 0x000A ! 67: 0, DecodeGeneric }, ! 68: { "WM_SETREDRAW", WM_SETREDRAW, // 0x000B ! 69: 0, DecodeGeneric }, ! 70: { "WM_SETTEXT", WM_SETTEXT, // 0x000C ! 71: 0, DecodeGeneric }, ! 72: { "WM_GETTEXT", WM_GETTEXT, // 0x000D ! 73: 0, DecodeGeneric }, ! 74: { "WM_GETTEXTLENGTH", WM_GETTEXTLENGTH, // 0x000E ! 75: 0, DecodeGeneric }, ! 76: { "WM_PAINT", WM_PAINT, // 0x000F ! 77: 0, DecodeGeneric }, ! 78: { "WM_CLOSE", WM_CLOSE, // 0x0010 ! 79: 0, DecodeGeneric }, ! 80: { "WM_QUERYENDSESSION", WM_QUERYENDSESSION, // 0x0011 ! 81: 0, DecodeGeneric }, ! 82: { "WM_QUIT", WM_QUIT, // 0x0012 ! 83: 0, DecodeGeneric }, ! 84: { "WM_QUERYOPEN", WM_QUERYOPEN, // 0x0013 ! 85: 0, DecodeGeneric }, ! 86: { "WM_ERASEBKGND", WM_ERASEBKGND, // 0x0014 ! 87: 0, DecodeGeneric }, ! 88: { "WM_SYSCOLORCHANGE", WM_SYSCOLORCHANGE, // 0x0015 ! 89: 0, DecodeGeneric }, ! 90: { "WM_ENDSESSION", WM_ENDSESSION, // 0x0016 ! 91: 0, DecodeGeneric }, ! 92: { "WM_SHOWWINDOW", WM_SHOWWINDOW, // 0x0018 ! 93: 0, DecodeGeneric }, ! 94: { "WM_WININICHANGE", WM_WININICHANGE, // 0x001A ! 95: 0, DecodeGeneric }, ! 96: { "WM_DEVMODECHANGE", WM_DEVMODECHANGE, // 0x001B ! 97: 0, DecodeGeneric }, ! 98: { "WM_ACTIVATEAPP", WM_ACTIVATEAPP, // 0x001C ! 99: 0, DecodeGeneric }, ! 100: { "WM_FONTCHANGE", WM_FONTCHANGE, // 0x001D ! 101: 0, DecodeGeneric }, ! 102: { "WM_TIMECHANGE", WM_TIMECHANGE, // 0x001E ! 103: 0, DecodeGeneric }, ! 104: { "WM_CANCELMODE", WM_CANCELMODE, // 0x001F ! 105: 0, DecodeGeneric }, ! 106: { "WM_SETCURSOR", WM_SETCURSOR, // 0x0020 ! 107: MTF_TYPE_MOUSE, DecodeGeneric }, ! 108: { "WM_MOUSEACTIVATE", WM_MOUSEACTIVATE, // 0x0021 ! 109: MTF_TYPE_MOUSE, DecodeGeneric }, ! 110: { "WM_CHILDACTIVATE", WM_CHILDACTIVATE, // 0x0022 ! 111: 0, DecodeGeneric }, ! 112: { "WM_QUEUESYNC", WM_QUEUESYNC, // 0x0023 ! 113: 0, DecodeGeneric }, ! 114: { "WM_GETMINMAXINFO", WM_GETMINMAXINFO, // 0x0024 ! 115: 0, DecodeGeneric }, ! 116: { "WM_PAINTICON", WM_PAINTICON, // 0x0026 ! 117: 0, DecodeGeneric }, ! 118: { "WM_ICONERASEBKGND", WM_ICONERASEBKGND, // 0x0027 ! 119: 0, DecodeGeneric }, ! 120: { "WM_NEXTDLGCTL", WM_NEXTDLGCTL, // 0x0028 ! 121: 0, DecodeGeneric }, ! 122: { "WM_SPOOLERSTATUS", WM_SPOOLERSTATUS, // 0x002A ! 123: 0, DecodeGeneric }, ! 124: { "WM_DRAWITEM", WM_DRAWITEM, // 0x002B ! 125: 0, DecodeGeneric }, ! 126: { "WM_MEASUREITEM", WM_MEASUREITEM, // 0x002C ! 127: 0, DecodeGeneric }, ! 128: { "WM_DELETEITEM", WM_DELETEITEM, // 0x002D ! 129: 0, DecodeGeneric }, ! 130: { "WM_VKEYTOITEM", WM_VKEYTOITEM, // 0x002E ! 131: MTF_TYPE_KEYBD, DecodeGeneric }, ! 132: { "WM_CHARTOITEM", WM_CHARTOITEM, // 0x002F ! 133: MTF_TYPE_KEYBD, DecodeGeneric }, ! 134: { "WM_SETFONT", WM_SETFONT, // 0x0030 ! 135: 0, DecodeGeneric }, ! 136: { "WM_GETFONT", WM_GETFONT, // 0x0031 ! 137: 0, DecodeGeneric }, ! 138: { "WM_SETHOTKEY", WM_SETHOTKEY, // 0x0032 ! 139: MTF_TYPE_KEYBD, DecodeGeneric }, ! 140: { "WM_GETHOTKEY", WM_GETHOTKEY, // 0x0033 ! 141: MTF_TYPE_KEYBD, DecodeGeneric }, ! 142: { "WM_QUERYDRAGICON", WM_QUERYDRAGICON, // 0x0037 ! 143: 0, DecodeGeneric }, ! 144: { "WM_COMPAREITEM", WM_COMPAREITEM, // 0x0039 ! 145: 0, DecodeGeneric }, ! 146: { "WM_COMPACTING", WM_COMPACTING, // 0x0041 ! 147: 0, DecodeGeneric }, ! 148: // { "WM_HOTKEYEVENT", WM_HOTKEYEVENT, // 0x0045 ! 149: // 0, DecodeGeneric }, ! 150: { "WM_WINDOWPOSCHANGING", WM_WINDOWPOSCHANGING, // 0x0046 ! 151: 0, DecodeGeneric }, ! 152: { "WM_WINDOWPOSCHANGED", WM_WINDOWPOSCHANGED, // 0x0047 ! 153: 0, DecodeGeneric }, ! 154: { "WM_POWER", WM_POWER, // 0x0048 ! 155: 0, DecodeGeneric }, ! 156: { "WM_COPYDATA", WM_COPYDATA, // 0x004A ! 157: 0, DecodeGeneric }, ! 158: { "WM_NCCREATE", WM_NCCREATE, // 0x0081 ! 159: MTF_TYPE_NC, DecodeGeneric }, ! 160: { "WM_NCDESTROY", WM_NCDESTROY, // 0x0082 ! 161: MTF_TYPE_NC, DecodeGeneric }, ! 162: { "WM_NCCALCSIZE", WM_NCCALCSIZE, // 0x0083 ! 163: MTF_TYPE_NC, DecodeGeneric }, ! 164: { "WM_NCHITTEST", WM_NCHITTEST, // 0x0084 ! 165: MTF_TYPE_NC | MTF_TYPE_MOUSE, DecodeGeneric }, ! 166: { "WM_NCPAINT", WM_NCPAINT, // 0x0085 ! 167: MTF_TYPE_NC, DecodeGeneric }, ! 168: { "WM_NCACTIVATE", WM_NCACTIVATE, // 0x0086 ! 169: MTF_TYPE_NC, DecodeGeneric }, ! 170: { "WM_GETDLGCODE", WM_GETDLGCODE, // 0x0087 ! 171: 0, DecodeGeneric }, ! 172: { "WM_NCMOUSEMOVE", WM_NCMOUSEMOVE, // 0x00A0 ! 173: MTF_TYPE_NC | MTF_TYPE_MOUSE, DecodeGeneric }, ! 174: { "WM_NCLBUTTONDOWN", WM_NCLBUTTONDOWN, // 0x00A1 ! 175: MTF_TYPE_NC | MTF_TYPE_MOUSE, DecodeGeneric }, ! 176: { "WM_NCLBUTTONUP", WM_NCLBUTTONUP, // 0x00A2 ! 177: MTF_TYPE_NC | MTF_TYPE_MOUSE, DecodeGeneric }, ! 178: { "WM_NCLBUTTONDBLCLK", WM_NCLBUTTONDBLCLK, // 0x00A3 ! 179: MTF_TYPE_NC | MTF_TYPE_MOUSE, DecodeGeneric }, ! 180: { "WM_NCRBUTTONDOWN", WM_NCRBUTTONDOWN, // 0x00A4 ! 181: MTF_TYPE_NC | MTF_TYPE_MOUSE, DecodeGeneric }, ! 182: { "WM_NCRBUTTONUP", WM_NCRBUTTONUP, // 0x00A5 ! 183: MTF_TYPE_NC | MTF_TYPE_MOUSE, DecodeGeneric }, ! 184: { "WM_NCRBUTTONDBLCLK", WM_NCRBUTTONDBLCLK, // 0x00A6 ! 185: MTF_TYPE_NC | MTF_TYPE_MOUSE, DecodeGeneric }, ! 186: { "WM_NCMBUTTONDOWN", WM_NCMBUTTONDOWN, // 0x00A7 ! 187: MTF_TYPE_NC | MTF_TYPE_MOUSE, DecodeGeneric }, ! 188: { "WM_NCMBUTTONUP", WM_NCMBUTTONUP, // 0x00A8 ! 189: MTF_TYPE_NC | MTF_TYPE_MOUSE, DecodeGeneric }, ! 190: { "WM_NCMBUTTONDBLCLK", WM_NCMBUTTONDBLCLK, // 0x00A9 ! 191: MTF_TYPE_NC | MTF_TYPE_MOUSE, DecodeGeneric }, ! 192: { "EM_GETSEL", EM_GETSEL, // 0x00B0 ! 193: MTF_TYPE_EM, DecodeGeneric }, ! 194: { "EM_SETSEL", EM_SETSEL, // 0x00B1 ! 195: MTF_TYPE_EM, DecodeGeneric }, ! 196: { "EM_GETRECT", EM_GETRECT, // 0x00B2 ! 197: MTF_TYPE_EM, DecodeGeneric }, ! 198: { "EM_SETRECT", EM_SETRECT, // 0x00B3 ! 199: MTF_TYPE_EM, DecodeGeneric }, ! 200: { "EM_SETRECTNP", EM_SETRECTNP, // 0x00B4 ! 201: MTF_TYPE_EM, DecodeGeneric }, ! 202: { "EM_SCROLL", EM_SCROLL, // 0x00B5 ! 203: MTF_TYPE_EM, DecodeGeneric }, ! 204: { "EM_LINESCROLL", EM_LINESCROLL, // 0x00B6 ! 205: MTF_TYPE_EM, DecodeGeneric }, ! 206: { "EM_GETMODIFY", EM_GETMODIFY, // 0x00B8 ! 207: MTF_TYPE_EM, DecodeGeneric }, ! 208: { "EM_SETMODIFY", EM_SETMODIFY, // 0x00B9 ! 209: MTF_TYPE_EM, DecodeGeneric }, ! 210: { "EM_GETLINECOUNT", EM_GETLINECOUNT, // 0x00BA ! 211: MTF_TYPE_EM, DecodeGeneric }, ! 212: { "EM_LINEINDEX", EM_LINEINDEX, // 0x00BB ! 213: MTF_TYPE_EM, DecodeGeneric }, ! 214: { "EM_SETHANDLE", EM_SETHANDLE, // 0x00BC ! 215: MTF_TYPE_EM, DecodeGeneric }, ! 216: { "EM_GETHANDLE", EM_GETHANDLE, // 0x00BD ! 217: MTF_TYPE_EM, DecodeGeneric }, ! 218: { "EM_LINELENGTH", EM_LINELENGTH, // 0x00C1 ! 219: MTF_TYPE_EM, DecodeGeneric }, ! 220: { "EM_REPLACESEL", EM_REPLACESEL, // 0x00C2 ! 221: MTF_TYPE_EM, DecodeGeneric }, ! 222: { "EM_GETLINE", EM_GETLINE, // 0x00C4 ! 223: MTF_TYPE_EM, DecodeGeneric }, ! 224: { "EM_LIMITTEXT", EM_LIMITTEXT, // 0x00C5 ! 225: MTF_TYPE_EM, DecodeGeneric }, ! 226: { "EM_CANUNDO", EM_CANUNDO, // 0x00C6 ! 227: MTF_TYPE_EM, DecodeGeneric }, ! 228: { "EM_UNDO", EM_UNDO, // 0x00C7 ! 229: MTF_TYPE_EM, DecodeGeneric }, ! 230: { "EM_FMTLINES", EM_FMTLINES, // 0x00C8 ! 231: MTF_TYPE_EM, DecodeGeneric }, ! 232: { "EM_LINEFROMCHAR", EM_LINEFROMCHAR, // 0x00C9 ! 233: MTF_TYPE_EM, DecodeGeneric }, ! 234: { "EM_SETTABSTOPS", EM_SETTABSTOPS, // 0x00CB ! 235: MTF_TYPE_EM, DecodeGeneric }, ! 236: { "EM_SETPASSWORDCHAR", EM_SETPASSWORDCHAR, // 0x00CC ! 237: MTF_TYPE_EM, DecodeGeneric }, ! 238: { "EM_EMPTYUNDOBUFFER", EM_EMPTYUNDOBUFFER, // 0x00CD ! 239: MTF_TYPE_EM, DecodeGeneric }, ! 240: { "EM_GETFIRSTVISIBLELINE", EM_GETFIRSTVISIBLELINE, // 0x00CE ! 241: MTF_TYPE_EM, DecodeGeneric }, ! 242: { "EM_SETREADONLY", EM_SETREADONLY, // 0x00CF ! 243: MTF_TYPE_EM, DecodeGeneric }, ! 244: { "EM_SETWORDBREAKPROC", EM_SETWORDBREAKPROC, // 0x00D0 ! 245: MTF_TYPE_EM, DecodeGeneric }, ! 246: { "EM_GETWORDBREAKPROC", EM_GETWORDBREAKPROC, // 0x00D1 ! 247: MTF_TYPE_EM, DecodeGeneric }, ! 248: { "EM_GETPASSWORDCHAR", EM_GETPASSWORDCHAR, // 0x00D2 ! 249: MTF_TYPE_EM, DecodeGeneric }, ! 250: { "BM_GETCHECK", BM_GETCHECK, // 0x00F0 ! 251: MTF_TYPE_BM, DecodeGeneric }, ! 252: { "BM_SETCHECK", BM_SETCHECK, // 0x00F1 ! 253: MTF_TYPE_BM, DecodeGeneric }, ! 254: { "BM_GETSTATE", BM_GETSTATE, // 0x00F2 ! 255: MTF_TYPE_BM, DecodeGeneric }, ! 256: { "BM_SETSTATE", BM_SETSTATE, // 0x00F3 ! 257: MTF_TYPE_BM, DecodeGeneric }, ! 258: { "BM_SETSTYLE", BM_SETSTYLE, // 0x00F4 ! 259: MTF_TYPE_BM, DecodeGeneric }, ! 260: { "WM_KEYDOWN", WM_KEYDOWN, // 0x0100 ! 261: MTF_TYPE_KEYBD, DecodeGeneric }, ! 262: { "WM_KEYUP", WM_KEYUP, // 0x0101 ! 263: MTF_TYPE_KEYBD, DecodeGeneric }, ! 264: { "WM_CHAR", WM_CHAR, // 0x0102 ! 265: MTF_TYPE_KEYBD, DecodeGeneric }, ! 266: { "WM_DEADCHAR", WM_DEADCHAR, // 0x0103 ! 267: MTF_TYPE_KEYBD, DecodeGeneric }, ! 268: { "WM_SYSKEYDOWN", WM_SYSKEYDOWN, // 0x0104 ! 269: MTF_TYPE_KEYBD, DecodeGeneric }, ! 270: { "WM_SYSKEYUP", WM_SYSKEYUP, // 0x0105 ! 271: MTF_TYPE_KEYBD, DecodeGeneric }, ! 272: { "WM_SYSCHAR", WM_SYSCHAR, // 0x0106 ! 273: MTF_TYPE_KEYBD, DecodeGeneric }, ! 274: { "WM_SYSDEADCHAR", WM_SYSDEADCHAR, // 0x0107 ! 275: MTF_TYPE_KEYBD, DecodeGeneric }, ! 276: { "WM_INITDIALOG", WM_INITDIALOG, // 0x0110 ! 277: 0, DecodeGeneric }, ! 278: { "WM_COMMAND", WM_COMMAND, // 0x0111 ! 279: 0, DecodeGeneric }, ! 280: { "WM_SYSCOMMAND", WM_SYSCOMMAND, // 0x0112 ! 281: 0, DecodeGeneric }, ! 282: { "WM_TIMER", WM_TIMER, // 0x0113 ! 283: 0, DecodeGeneric }, ! 284: { "WM_HSCROLL", WM_HSCROLL, // 0x0114 ! 285: 0, DecodeGeneric }, ! 286: { "WM_VSCROLL", WM_VSCROLL, // 0x0115 ! 287: 0, DecodeGeneric }, ! 288: { "WM_INITMENU", WM_INITMENU, // 0x0116 ! 289: 0, DecodeGeneric }, ! 290: { "WM_INITMENUPOPUP", WM_INITMENUPOPUP, // 0x0117 ! 291: 0, DecodeGeneric }, ! 292: { "WM_MENUSELECT", WM_MENUSELECT, // 0x011F ! 293: 0, DecodeGeneric }, ! 294: { "WM_MENUCHAR", WM_MENUCHAR, // 0x0120 ! 295: 0, DecodeGeneric }, ! 296: { "WM_ENTERIDLE", WM_ENTERIDLE, // 0x0121 ! 297: 0, DecodeGeneric }, ! 298: { "WM_CTLCOLORMSGBOX", WM_CTLCOLORMSGBOX, // 0x0132 ! 299: 0, DecodeGeneric }, ! 300: { "WM_CTLCOLOREDIT", WM_CTLCOLOREDIT, // 0x0133 ! 301: 0, DecodeGeneric }, ! 302: { "WM_CTLCOLORLISTBOX", WM_CTLCOLORLISTBOX, // 0x0134 ! 303: 0, DecodeGeneric }, ! 304: { "WM_CTLCOLORBTN", WM_CTLCOLORBTN, // 0x0135 ! 305: 0, DecodeGeneric }, ! 306: { "WM_CTLCOLORDLG", WM_CTLCOLORDLG, // 0x0136 ! 307: 0, DecodeGeneric }, ! 308: { "WM_CTLCOLORSCROLLBAR", WM_CTLCOLORSCROLLBAR, // 0x0137 ! 309: 0, DecodeGeneric }, ! 310: { "WM_CTLCOLORSTATIC", WM_CTLCOLORSTATIC, // 0x0138 ! 311: 0, DecodeGeneric }, ! 312: { "CB_GETEDITSEL", CB_GETEDITSEL, // 0x0140 ! 313: MTF_TYPE_CB, DecodeGeneric }, ! 314: { "CB_LIMITTEXT", CB_LIMITTEXT, // 0x0141 ! 315: MTF_TYPE_CB, DecodeGeneric }, ! 316: { "CB_SETEDITSEL", CB_SETEDITSEL, // 0x0142 ! 317: MTF_TYPE_CB, DecodeGeneric }, ! 318: { "CB_ADDSTRING", CB_ADDSTRING, // 0x0143 ! 319: MTF_TYPE_CB, DecodeGeneric }, ! 320: { "CB_DELETESTRING", CB_DELETESTRING, // 0x0144 ! 321: MTF_TYPE_CB, DecodeGeneric }, ! 322: { "CB_DIR", CB_DIR, // 0x0145 ! 323: MTF_TYPE_CB, DecodeGeneric }, ! 324: { "CB_GETCOUNT", CB_GETCOUNT, // 0x0146 ! 325: MTF_TYPE_CB, DecodeGeneric }, ! 326: { "CB_GETCURSEL", CB_GETCURSEL, // 0x0147 ! 327: MTF_TYPE_CB, DecodeGeneric }, ! 328: { "CB_GETLBTEXT", CB_GETLBTEXT, // 0x0148 ! 329: MTF_TYPE_CB, DecodeGeneric }, ! 330: { "CB_GETLBTEXTLEN", CB_GETLBTEXTLEN, // 0x0149 ! 331: MTF_TYPE_CB, DecodeGeneric }, ! 332: { "CB_INSERTSTRING", CB_INSERTSTRING, // 0x014A ! 333: MTF_TYPE_CB, DecodeGeneric }, ! 334: { "CB_RESETCONTENT", CB_RESETCONTENT, // 0x014B ! 335: MTF_TYPE_CB, DecodeGeneric }, ! 336: { "CB_FINDSTRING", CB_FINDSTRING, // 0x014C ! 337: MTF_TYPE_CB, DecodeGeneric }, ! 338: { "CB_SELECTSTRING", CB_SELECTSTRING, // 0x014D ! 339: MTF_TYPE_CB, DecodeGeneric }, ! 340: { "CB_SETCURSEL", CB_SETCURSEL, // 0x014E ! 341: MTF_TYPE_CB, DecodeGeneric }, ! 342: { "CB_SHOWDROPDOWN", CB_SHOWDROPDOWN, // 0x014F ! 343: MTF_TYPE_CB, DecodeGeneric }, ! 344: { "CB_GETITEMDATA", CB_GETITEMDATA, // 0x0150 ! 345: MTF_TYPE_CB, DecodeGeneric }, ! 346: { "CB_SETITEMDATA", CB_SETITEMDATA, // 0x0151 ! 347: MTF_TYPE_CB, DecodeGeneric }, ! 348: { "CB_GETDROPPEDCONTROLRECT", CB_GETDROPPEDCONTROLRECT, // 0x0152 ! 349: MTF_TYPE_CB, DecodeGeneric }, ! 350: { "CB_SETITEMHEIGHT", CB_SETITEMHEIGHT, // 0x0153 ! 351: MTF_TYPE_CB, DecodeGeneric }, ! 352: { "CB_GETITEMHEIGHT", CB_GETITEMHEIGHT, // 0x0154 ! 353: MTF_TYPE_CB, DecodeGeneric }, ! 354: { "CB_SETEXTENDEDUI", CB_SETEXTENDEDUI, // 0x0155 ! 355: MTF_TYPE_CB, DecodeGeneric }, ! 356: { "CB_GETEXTENDEDUI", CB_GETEXTENDEDUI, // 0x0156 ! 357: MTF_TYPE_CB, DecodeGeneric }, ! 358: { "CB_GETDROPPEDSTATE", CB_GETDROPPEDSTATE, // 0x0157 ! 359: MTF_TYPE_CB, DecodeGeneric }, ! 360: { "CB_FINDSTRINGEXACT", CB_FINDSTRINGEXACT, // 0x0158 ! 361: MTF_TYPE_CB, DecodeGeneric }, ! 362: { "CB_SETLOCALE", CB_SETLOCALE, // 0x0159 ! 363: MTF_TYPE_CB, DecodeGeneric }, ! 364: { "CB_GETLOCALE", CB_GETLOCALE, // 0x015A ! 365: MTF_TYPE_CB, DecodeGeneric }, ! 366: { "STM_SETICON", STM_SETICON, // 0x0170 ! 367: MTF_TYPE_STM, DecodeGeneric }, ! 368: { "STM_GETICON", STM_GETICON, // 0x0171 ! 369: MTF_TYPE_STM, DecodeGeneric }, ! 370: { "LB_ADDSTRING", LB_ADDSTRING, // 0x0180 ! 371: MTF_TYPE_LB, DecodeGeneric }, ! 372: { "LB_INSERTSTRING", LB_INSERTSTRING, // 0x0181 ! 373: MTF_TYPE_LB, DecodeGeneric }, ! 374: { "LB_DELETESTRING", LB_DELETESTRING, // 0x0182 ! 375: MTF_TYPE_LB, DecodeGeneric }, ! 376: { "LB_SELITEMRANGEEX", LB_SELITEMRANGEEX, // 0x0183 ! 377: MTF_TYPE_LB, DecodeGeneric }, ! 378: { "LB_RESETCONTENT", LB_RESETCONTENT, // 0x0184 ! 379: MTF_TYPE_LB, DecodeGeneric }, ! 380: { "LB_SETSEL", LB_SETSEL, // 0x0185 ! 381: MTF_TYPE_LB, DecodeGeneric }, ! 382: { "LB_SETCURSEL", LB_SETCURSEL, // 0x0186 ! 383: MTF_TYPE_LB, DecodeGeneric }, ! 384: { "LB_GETSEL", LB_GETSEL, // 0x0187 ! 385: MTF_TYPE_LB, DecodeGeneric }, ! 386: { "LB_GETCURSEL", LB_GETCURSEL, // 0x0188 ! 387: MTF_TYPE_LB, DecodeGeneric }, ! 388: { "LB_GETTEXT", LB_GETTEXT, // 0x0189 ! 389: MTF_TYPE_LB, DecodeGeneric }, ! 390: { "LB_GETTEXTLEN", LB_GETTEXTLEN, // 0x018A ! 391: MTF_TYPE_LB, DecodeGeneric }, ! 392: { "LB_GETCOUNT", LB_GETCOUNT, // 0x018B ! 393: MTF_TYPE_LB, DecodeGeneric }, ! 394: { "LB_SELECTSTRING", LB_SELECTSTRING, // 0x018C ! 395: MTF_TYPE_LB, DecodeGeneric }, ! 396: { "LB_DIR", LB_DIR, // 0x018D ! 397: MTF_TYPE_LB, DecodeGeneric }, ! 398: { "LB_GETTOPINDEX", LB_GETTOPINDEX, // 0x018E ! 399: MTF_TYPE_LB, DecodeGeneric }, ! 400: { "LB_FINDSTRING", LB_FINDSTRING, // 0x018F ! 401: MTF_TYPE_LB, DecodeGeneric }, ! 402: { "LB_GETSELCOUNT", LB_GETSELCOUNT, // 0x0190 ! 403: MTF_TYPE_LB, DecodeGeneric }, ! 404: { "LB_GETSELITEMS", LB_GETSELITEMS, // 0x0191 ! 405: MTF_TYPE_LB, DecodeGeneric }, ! 406: { "LB_SETTABSTOPS", LB_SETTABSTOPS, // 0x0192 ! 407: MTF_TYPE_LB, DecodeGeneric }, ! 408: { "LB_GETHORIZONTALEXTENT", LB_GETHORIZONTALEXTENT, // 0x0193 ! 409: MTF_TYPE_LB, DecodeGeneric }, ! 410: { "LB_SETHORIZONTALEXTENT", LB_SETHORIZONTALEXTENT, // 0x0194 ! 411: MTF_TYPE_LB, DecodeGeneric }, ! 412: { "LB_SETCOLUMNWIDTH", LB_SETCOLUMNWIDTH, // 0x0195 ! 413: MTF_TYPE_LB, DecodeGeneric }, ! 414: { "LB_ADDFILE", LB_ADDFILE, // 0x0196 ! 415: MTF_TYPE_LB, DecodeGeneric }, ! 416: { "LB_SETTOPINDEX", LB_SETTOPINDEX, // 0x0197 ! 417: MTF_TYPE_LB, DecodeGeneric }, ! 418: { "LB_GETITEMRECT", LB_GETITEMRECT, // 0x0198 ! 419: MTF_TYPE_LB, DecodeGeneric }, ! 420: { "LB_GETITEMDATA", LB_GETITEMDATA, // 0x0199 ! 421: MTF_TYPE_LB, DecodeGeneric }, ! 422: { "LB_SETITEMDATA", LB_SETITEMDATA, // 0x019A ! 423: MTF_TYPE_LB, DecodeGeneric }, ! 424: { "LB_SELITEMRANGE", LB_SELITEMRANGE, // 0x019B ! 425: MTF_TYPE_LB, DecodeGeneric }, ! 426: { "LB_SETANCHORINDEX", LB_SETANCHORINDEX, // 0x019C ! 427: MTF_TYPE_LB, DecodeGeneric }, ! 428: { "LB_GETANCHORINDEX", LB_GETANCHORINDEX, // 0x019D ! 429: MTF_TYPE_LB, DecodeGeneric }, ! 430: { "LB_SETCARETINDEX", LB_SETCARETINDEX, // 0x019E ! 431: MTF_TYPE_LB, DecodeGeneric }, ! 432: { "LB_GETCARETINDEX", LB_GETCARETINDEX, // 0x019F ! 433: MTF_TYPE_LB, DecodeGeneric }, ! 434: { "LB_SETITEMHEIGHT", LB_SETITEMHEIGHT, // 0x01A0 ! 435: MTF_TYPE_LB, DecodeGeneric }, ! 436: { "LB_GETITEMHEIGHT", LB_GETITEMHEIGHT, // 0x01A1 ! 437: MTF_TYPE_LB, DecodeGeneric }, ! 438: { "LB_FINDSTRINGEXACT", LB_FINDSTRINGEXACT, // 0x01A2 ! 439: MTF_TYPE_LB, DecodeGeneric }, ! 440: { "LB_SETLOCALE", LB_SETLOCALE, // 0x01A5 ! 441: MTF_TYPE_LB, DecodeGeneric }, ! 442: { "LB_GETLOCALE", LB_GETLOCALE, // 0x01A6 ! 443: MTF_TYPE_LB, DecodeGeneric }, ! 444: { "LB_SETCOUNT", LB_SETCOUNT, // 0x01A7 ! 445: MTF_TYPE_LB, DecodeGeneric }, ! 446: { "WM_MOUSEMOVE", WM_MOUSEMOVE, // 0x0200 ! 447: MTF_TYPE_MOUSE, DecodeGeneric }, ! 448: { "WM_LBUTTONDOWN", WM_LBUTTONDOWN, // 0x0201 ! 449: MTF_TYPE_MOUSE, DecodeGeneric }, ! 450: { "WM_LBUTTONUP", WM_LBUTTONUP, // 0x0202 ! 451: MTF_TYPE_MOUSE, DecodeGeneric }, ! 452: { "WM_LBUTTONDBLCLK", WM_LBUTTONDBLCLK, // 0x0203 ! 453: MTF_TYPE_MOUSE, DecodeGeneric }, ! 454: { "WM_RBUTTONDOWN", WM_RBUTTONDOWN, // 0x0204 ! 455: MTF_TYPE_MOUSE, DecodeGeneric }, ! 456: { "WM_RBUTTONUP", WM_RBUTTONUP, // 0x0205 ! 457: MTF_TYPE_MOUSE, DecodeGeneric }, ! 458: { "WM_RBUTTONDBLCLK", WM_RBUTTONDBLCLK, // 0x0206 ! 459: MTF_TYPE_MOUSE, DecodeGeneric }, ! 460: { "WM_MBUTTONDOWN", WM_MBUTTONDOWN, // 0x0207 ! 461: MTF_TYPE_MOUSE, DecodeGeneric }, ! 462: { "WM_MBUTTONUP", WM_MBUTTONUP, // 0x0208 ! 463: MTF_TYPE_MOUSE, DecodeGeneric }, ! 464: { "WM_MBUTTONDBLCLK", WM_MBUTTONDBLCLK, // 0x0209 ! 465: MTF_TYPE_MOUSE, DecodeGeneric }, ! 466: { "WM_PARENTNOTIFY", WM_PARENTNOTIFY, // 0x0210 ! 467: MTF_TYPE_MOUSE, DecodeGeneric }, ! 468: { "WM_MDICREATE", WM_MDICREATE, // 0x0220 ! 469: 0, DecodeGeneric }, ! 470: { "WM_MDIDESTROY", WM_MDIDESTROY, // 0x0221 ! 471: 0, DecodeGeneric }, ! 472: { "WM_MDIACTIVATE", WM_MDIACTIVATE, // 0x0222 ! 473: 0, DecodeGeneric }, ! 474: { "WM_MDIRESTORE", WM_MDIRESTORE, // 0x0223 ! 475: 0, DecodeGeneric }, ! 476: { "WM_MDINEXT", WM_MDINEXT, // 0x0224 ! 477: 0, DecodeGeneric }, ! 478: { "WM_MDIMAXIMIZE", WM_MDIMAXIMIZE, // 0x0225 ! 479: 0, DecodeGeneric }, ! 480: { "WM_MDITILE", WM_MDITILE, // 0x0226 ! 481: 0, DecodeGeneric }, ! 482: { "WM_MDICASCADE", WM_MDICASCADE, // 0x0227 ! 483: 0, DecodeGeneric }, ! 484: { "WM_MDIICONARRANGE", WM_MDIICONARRANGE, // 0x0228 ! 485: 0, DecodeGeneric }, ! 486: { "WM_MDIGETACTIVE", WM_MDIGETACTIVE, // 0x0229 ! 487: 0, DecodeGeneric }, ! 488: { "WM_MDISETMENU", WM_MDISETMENU, // 0x0230 ! 489: 0, DecodeGeneric }, ! 490: { "WM_DROPFILES", WM_DROPFILES, // 0x0233 ! 491: 0, DecodeGeneric }, ! 492: { "WM_MDIREFRESHMENU", WM_MDIREFRESHMENU, // 0x0234 ! 493: 0, DecodeGeneric }, ! 494: { "WM_CUT", WM_CUT, // 0x0300 ! 495: MTF_TYPE_CLIP, DecodeGeneric }, ! 496: { "WM_COPY", WM_COPY, // 0x0301 ! 497: MTF_TYPE_CLIP, DecodeGeneric }, ! 498: { "WM_PASTE", WM_PASTE, // 0x0302 ! 499: MTF_TYPE_CLIP, DecodeGeneric }, ! 500: { "WM_CLEAR", WM_CLEAR, // 0x0303 ! 501: MTF_TYPE_CLIP, DecodeGeneric }, ! 502: { "WM_UNDO", WM_UNDO, // 0x0304 ! 503: MTF_TYPE_CLIP, DecodeGeneric }, ! 504: { "WM_RENDERFORMAT", WM_RENDERFORMAT, // 0x0305 ! 505: MTF_TYPE_CLIP, DecodeGeneric }, ! 506: { "WM_RENDERALLFORMATS", WM_RENDERALLFORMATS, // 0x0306 ! 507: MTF_TYPE_CLIP, DecodeGeneric }, ! 508: { "WM_DESTROYCLIPBOARD", WM_DESTROYCLIPBOARD, // 0x0307 ! 509: MTF_TYPE_CLIP, DecodeGeneric }, ! 510: { "WM_DRAWCLIPBOARD", WM_DRAWCLIPBOARD, // 0x0308 ! 511: MTF_TYPE_CLIP, DecodeGeneric }, ! 512: { "WM_PAINTCLIPBOARD", WM_PAINTCLIPBOARD, // 0x0309 ! 513: MTF_TYPE_CLIP, DecodeGeneric }, ! 514: { "WM_VSCROLLCLIPBOARD", WM_VSCROLLCLIPBOARD, // 0x030A ! 515: MTF_TYPE_CLIP, DecodeGeneric }, ! 516: { "WM_SIZECLIPBOARD", WM_SIZECLIPBOARD, // 0x030B ! 517: MTF_TYPE_CLIP, DecodeGeneric }, ! 518: { "WM_ASKCBFORMATNAME", WM_ASKCBFORMATNAME, // 0x030C ! 519: MTF_TYPE_CLIP, DecodeGeneric }, ! 520: { "WM_CHANGECBCHAIN", WM_CHANGECBCHAIN, // 0x030D ! 521: MTF_TYPE_CLIP, DecodeGeneric }, ! 522: { "WM_HSCROLLCLIPBOARD", WM_HSCROLLCLIPBOARD, // 0x030E ! 523: MTF_TYPE_CLIP, DecodeGeneric }, ! 524: { "WM_QUERYNEWPALETTE", WM_QUERYNEWPALETTE, // 0x030F ! 525: 0, DecodeGeneric }, ! 526: { "WM_PALETTEISCHANGING", WM_PALETTEISCHANGING, // 0x0310 ! 527: 0, DecodeGeneric }, ! 528: { "WM_PALETTECHANGED", WM_PALETTECHANGED, // 0x0311 ! 529: 0, DecodeGeneric }, ! 530: { "WM_HOTKEY", WM_HOTKEY, // 0x0312 ! 531: MTF_TYPE_KEYBD, DecodeGeneric }, ! 532: { "WM_DDE_INITIATE", WM_DDE_INITIATE, // 0x03E0 ! 533: MTF_TYPE_DDE, DecodeGeneric }, ! 534: { "WM_DDE_TERMINATE", WM_DDE_TERMINATE, // 0x03E1 ! 535: MTF_TYPE_DDE, DecodeGeneric }, ! 536: { "WM_DDE_ADVISE", WM_DDE_ADVISE, // 0x03E2 ! 537: MTF_TYPE_DDE, DecodeGeneric }, ! 538: { "WM_DDE_UNADVISE", WM_DDE_UNADVISE, // 0x03E3 ! 539: MTF_TYPE_DDE, DecodeGeneric }, ! 540: { "WM_DDE_ACK", WM_DDE_ACK, // 0x03E4 ! 541: MTF_TYPE_DDE, DecodeGeneric }, ! 542: { "WM_DDE_DATA", WM_DDE_DATA, // 0x03E5 ! 543: MTF_TYPE_DDE, DecodeGeneric }, ! 544: { "WM_DDE_REQUEST", WM_DDE_REQUEST, // 0x03E6 ! 545: MTF_TYPE_DDE, DecodeGeneric }, ! 546: { "WM_DDE_POKE", WM_DDE_POKE, // 0x03E7 ! 547: MTF_TYPE_DDE, DecodeGeneric }, ! 548: { "WM_DDE_EXECUTE", WM_DDE_EXECUTE, // 0x03E8 ! 549: MTF_TYPE_DDE, DecodeGeneric } ! 550: }; ! 551: ! 552: INT gcMessages = sizeof(gaMsgs) / sizeof(MSGDESC); ! 553: ! 554: // ! 555: // Arrays of integers large enough to hold the indexes of all ! 556: // the messages in the message table. This is used when ! 557: // selecting messages with the Messages dialog. ! 558: // ! 559: INT gaiSelected[sizeof(gaMsgs) / sizeof(MSGDESC)]; ! 560: INT gaiSelected2[sizeof(gaMsgs) / sizeof(MSGDESC)]; ! 561: ! 562: MSGGROUP gaMsgGroup[] = ! 563: { ! 564: { DID_MSGSDDE, MTF_TYPE_DDE, 0, 0 }, ! 565: { DID_MSGSCLIP, MTF_TYPE_CLIP, 0, 0 }, ! 566: { DID_MSGSMOUSE, MTF_TYPE_MOUSE, 0, 0 }, ! 567: { DID_MSGSNC, MTF_TYPE_NC, 0, 0 }, ! 568: { DID_MSGSKEYBD, MTF_TYPE_KEYBD, 0, 0 }, ! 569: { DID_MSGSBM, MTF_TYPE_BM, 0, 0 }, ! 570: { DID_MSGSCB, MTF_TYPE_CB, 0, 0 }, ! 571: { DID_MSGSEM, MTF_TYPE_EM, 0, 0 }, ! 572: { DID_MSGSLB, MTF_TYPE_LB, 0, 0 }, ! 573: { DID_MSGSSTM, MTF_TYPE_STM, 0, 0 } ! 574: }; ! 575: ! 576: INT gcMsgGroups = sizeof(gaMsgGroup) / sizeof(MSGGROUP); ! 577: ! 578: ! 579: INT __cdecl MsgCmp(const void *p1, const void *p2); ! 580: PRIVATE VOID mprintf(LPSTR format, ...); ! 581: ! 582: ! 583: ! 584: /*****************************************************************************\ ! 585: * MsgCmp ! 586: * ! 587: * Callback function for qsort that sorts messages. ! 588: * ! 589: * Arguments: ! 590: * void *p1 - pointer to first item ! 591: * void *p2 - pointer to second item ! 592: * ! 593: * Returns: ! 594: * -1 if first input less than second input ! 595: * 1 if second input is less than first input ! 596: * 0 if inputs are equal ! 597: * ! 598: \*****************************************************************************/ ! 599: ! 600: INT __cdecl ! 601: MsgCmp( ! 602: const void *p1, ! 603: const void *p2 ! 604: ) ! 605: { ! 606: MSGDESC *pmd1 = (PMSGDESC)p1; ! 607: MSGDESC *pmd2 = (PMSGDESC)p2; ! 608: ! 609: return pmd1->msg < pmd2->msg ? -1 : (pmd1->msg > pmd2->msg ? 1 : 0); ! 610: } ! 611: ! 612: ! 613: ! 614: /*****************************************************************************\ ! 615: * CalculatePrintfTabs ! 616: * ! 617: * Calculates the tabs needed for each field in the printf window. This ! 618: * is based on the largest string in the message table and the specified ! 619: * font. ! 620: * ! 621: * Arguments: ! 622: * HFONT hfont - Font to use in the calculations. ! 623: * ! 624: * Returns: ! 625: * VOID ! 626: \*****************************************************************************/ ! 627: ! 628: VOID ! 629: CalculatePrintfTabs( ! 630: HFONT hfont ! 631: ) ! 632: { ! 633: MSGDESC *pmd; ! 634: HDC hdc; ! 635: INT dxMsg; ! 636: INT dxSpace; ! 637: INT dxHwnd; ! 638: INT tabs[3]; ! 639: SIZE siz; ! 640: HFONT hfontOld; ! 641: INT i; ! 642: ! 643: hdc = GetDC(NULL); ! 644: hfontOld = SelectObject(hdc, hfont); ! 645: dxMsg = 0; ! 646: for (pmd = gaMsgs, i = 0; i < gcMessages; pmd++, i++) ! 647: { ! 648: GetTextExtentPoint(hdc, pmd->pszMsg, lstrlen(pmd->pszMsg), &siz); ! 649: dxMsg = max(dxMsg, siz.cx); ! 650: } ! 651: ! 652: // ! 653: // Calculate the widest possible hwnd value. It is assumed that the ! 654: // font will have the same width for all digits (or that '0' would ! 655: // be the widest). ! 656: // ! 657: GetTextExtentPoint(hdc, "00000000", 8, &siz); ! 658: dxHwnd = siz.cx; ! 659: GetTextExtentPoint(hdc, "AAAAAAAA", 8, &siz); ! 660: dxHwnd = max(dxHwnd, siz.cx); ! 661: GetTextExtentPoint(hdc, "BBBBBBBB", 8, &siz); ! 662: dxHwnd = max(dxHwnd, siz.cx); ! 663: GetTextExtentPoint(hdc, "CCCCCCCC", 8, &siz); ! 664: dxHwnd = max(dxHwnd, siz.cx); ! 665: GetTextExtentPoint(hdc, "DDDDDDDD", 8, &siz); ! 666: dxHwnd = max(dxHwnd, siz.cx); ! 667: GetTextExtentPoint(hdc, "EEEEEEEE", 8, &siz); ! 668: dxHwnd = max(dxHwnd, siz.cx); ! 669: GetTextExtentPoint(hdc, "FFFFFFFF", 8, &siz); ! 670: dxHwnd = max(dxHwnd, siz.cx); ! 671: ! 672: GetTextExtentPoint(hdc, " ", 1, &siz); ! 673: dxSpace = siz.cx; ! 674: ! 675: SelectObject(hdc, hfontOld); ! 676: ReleaseDC(NULL, hdc); ! 677: ! 678: tabs[0] = dxHwnd + dxSpace; ! 679: tabs[1] = tabs[0] + dxMsg + dxSpace; ! 680: tabs[2] = tabs[1] + dxHwnd + dxSpace; ! 681: ! 682: SetPrintfTabs(3, tabs); ! 683: } ! 684: ! 685: ! 686: ! 687: /*****************************************************************************\ ! 688: * PrintMsg ! 689: * ! 690: * Writes out a specified message. ! 691: * ! 692: * Arguments: ! 693: * LPMSG lpMsg - message to print out ! 694: * ! 695: * Returns: ! 696: * VOID ! 697: \*****************************************************************************/ ! 698: ! 699: VOID ! 700: PrintMsg( ! 701: LPMSG lpMsg ! 702: ) ! 703: { ! 704: static MSGDESC md; ! 705: PMSGDESC pmd; ! 706: ! 707: md.msg = lpMsg->message; ! 708: pmd = (PMSGDESC)bsearch(&md, gaMsgs, gcMessages, sizeof(MSGDESC), MsgCmp); ! 709: ! 710: if (pmd) ! 711: { ! 712: if (pmd->Flags & MTF_SELECTED) ! 713: { ! 714: mprintf(szFormatName, lpMsg->hwnd, pmd->pszMsg, lpMsg->wParam, ! 715: lpMsg->lParam); ! 716: } ! 717: } ! 718: else ! 719: { ! 720: if (lpMsg->message >= WM_USER) ! 721: { ! 722: if (gfMsgsUser) ! 723: { ! 724: mprintf(szFormatUSER, lpMsg->hwnd, lpMsg->message - WM_USER, ! 725: lpMsg->wParam, lpMsg->lParam); ! 726: } ! 727: } ! 728: else ! 729: { ! 730: if (gfMsgsUnknown) ! 731: { ! 732: mprintf(szFormatUnknown, lpMsg->hwnd, lpMsg->message, ! 733: lpMsg->wParam, lpMsg->lParam); ! 734: } ! 735: } ! 736: } ! 737: } ! 738: ! 739: ! 740: ! 741: /*****************************************************************************\ ! 742: * mprintf ! 743: * ! 744: * Writes out a message to the specified device. Currently output to COM1 ! 745: * if commented out due to a bug. ! 746: * ! 747: * Arguments: ! 748: * LPSTR format - Format string. ! 749: * ... - Optional arguments. ! 750: * ! 751: * Returns: ! 752: * VOID ! 753: * ! 754: \*****************************************************************************/ ! 755: ! 756: PRIVATE VOID ! 757: mprintf( ! 758: LPSTR format, ! 759: ... ! 760: ) ! 761: { ! 762: va_list marker; ! 763: CHAR szTemp[MAXSTRING]; ! 764: INT iLen; ! 765: ! 766: va_start(marker, format); ! 767: ! 768: if (gfOutputWin) ! 769: { ! 770: vwprintf(ghwndPrintf, format, marker); ! 771: vwprintf(ghwndPrintf, "\n", marker); ! 772: } ! 773: ! 774: #if 0 ! 775: if (gfOutputCom1) ! 776: { ! 777: iLen = wvsprintf(szTemp, format, marker); ! 778: M_lwrite(INT2HFILE(FH_COM1), szTemp, iLen); ! 779: M_lwrite(INT2HFILE(FH_COM1), "\r\n", 2); ! 780: } ! 781: #endif //BUG this doesn't work under NT. The com device needs to be explicitly opened. ! 782: ! 783: if (gfOutputFile && gfhFile) ! 784: { ! 785: iLen = wvsprintf(szTemp, format, marker); ! 786: _lwrite(gfhFile, szTemp, iLen); ! 787: _lwrite(gfhFile, "\r\n", 2); ! 788: //BUG _lclose(DUPHFILE(gfhFile)); /* flush the file buffer */ ! 789: } ! 790: ! 791: va_end(marker); ! 792: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.