|
|
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.