2 * Message spying routines
4 * Copyright 1994, Bob Amstadt
13 #include "wine/winuser16.h"
14 #include "wine/winbase16.h"
17 #include "debugtools.h"
21 DEFAULT_DEBUG_CHANNEL(message);
23 #define SPY_MAX_MSGNUM WM_USER
24 #define SPY_INDENT_UNIT 4 /* 4 spaces */
26 static const char * const MessageTypeNames[SPY_MAX_MSGNUM + 1] =
44 "WM_CLOSE", /* 0x10 */
60 "WM_SETCURSOR", /* 0x20 */
76 "WM_SETFONT", /* 0x30 */
88 "wm_otherwindowcreated",
89 "wm_otherwindowdestroyed",
90 "wm_activateshellwindow",
94 "wm_compacting", NULL, NULL,
95 "WM_COMMNOTIFY", NULL,
96 "WM_WINDOWPOSCHANGING", /* 0x0046 */
97 "WM_WINDOWPOSCHANGED", /* 0x0047 */
100 "WM_CANCELJOURNAL", NULL, NULL,
104 "WM_INPUTLANGCHANGEREQUEST",
105 "WM_INPUTLANGCHANGE",
109 "WM_NOTIFYFORMAT", NULL, NULL,
110 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
113 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
114 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
117 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
125 "WM_SETICON", /* 0x0080 */
126 "WM_NCCREATE", /* 0x0081 */
127 "WM_NCDESTROY", /* 0x0082 */
128 "WM_NCCALCSIZE", /* 0x0083 */
129 "WM_NCHITTEST", /* 0x0084 */
130 "WM_NCPAINT", /* 0x0085 */
131 "WM_NCACTIVATE", /* 0x0086 */
132 "WM_GETDLGCODE", /* 0x0087 */
134 "WM_SYNCTASK", NULL, NULL, NULL, NULL, NULL, NULL,
137 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
138 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
141 "WM_NCMOUSEMOVE", /* 0x00A0 */
142 "WM_NCLBUTTONDOWN", /* 0x00A1 */
143 "WM_NCLBUTTONUP", /* 0x00A2 */
144 "WM_NCLBUTTONDBLCLK", /* 0x00A3 */
145 "WM_NCRBUTTONDOWN", /* 0x00A4 */
146 "WM_NCRBUTTONUP", /* 0x00A5 */
147 "WM_NCRBUTTONDBLCLK", /* 0x00A6 */
148 "WM_NCMBUTTONDOWN", /* 0x00A7 */
149 "WM_NCMBUTTONUP", /* 0x00A8 */
150 "WM_NCMBUTTONDBLCLK", /* 0x00A9 */
151 NULL, NULL, NULL, NULL, NULL, NULL,
153 /* 0x00B0 - Win32 Edit controls */
154 "EM_GETSEL32", /* 0x00b0 */
155 "EM_SETSEL32", /* 0x00b1 */
156 "EM_GETRECT32", /* 0x00b2 */
157 "EM_SETRECT32", /* 0x00b3 */
158 "EM_SETRECTNP32", /* 0x00b4 */
159 "EM_SCROLL32", /* 0x00b5 */
160 "EM_LINESCROLL32", /* 0x00b6 */
161 "EM_SCROLLCARET32", /* 0x00b7 */
162 "EM_GETMODIFY32", /* 0x00b8 */
163 "EM_SETMODIFY32", /* 0x00b9 */
164 "EM_GETLINECOUNT32", /* 0x00ba */
165 "EM_LINEINDEX32", /* 0x00bb */
166 "EM_SETHANDLE32", /* 0x00bc */
167 "EM_GETHANDLE32", /* 0x00bd */
168 "EM_GETTHUMB32", /* 0x00be */
172 "EM_LINELENGTH32", /* 0x00c1 */
173 "EM_REPLACESEL32", /* 0x00c2 */
175 "EM_GETLINE32", /* 0x00c4 */
176 "EM_LIMITTEXT32", /* 0x00c5 */
177 "EM_CANUNDO32", /* 0x00c6 */
178 "EM_UNDO32", /* 0x00c7 */
179 "EM_FMTLINES32", /* 0x00c8 */
180 "EM_LINEFROMCHAR32", /* 0x00c9 */
182 "EM_SETTABSTOPS32", /* 0x00cb */
183 "EM_SETPASSWORDCHAR32", /* 0x00cc */
184 "EM_EMPTYUNDOBUFFER32", /* 0x00cd */
185 "EM_GETFIRSTVISIBLELINE32", /* 0x00ce */
186 "EM_SETREADONLY32", /* 0x00cf */
188 "EM_SETWORDBREAKPROC32", /* 0x00d0 */
189 "EM_GETWORDBREAKPROC32", /* 0x00d1 */
190 "EM_GETPASSWORDCHAR32", /* 0x00d2 */
191 "EM_SETMARGINS32", /* 0x00d3 */
192 "EM_GETMARGINS32", /* 0x00d4 */
193 "EM_GETLIMITTEXT32", /* 0x00d5 */
194 "EM_POSFROMCHAR32", /* 0x00d6 */
195 "EM_CHARFROMPOS32", /* 0x00d7 */
196 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
198 /* 0x00E0 - Win32 Scrollbars */
199 "SBM_SETPOS32", /* 0x00e0 */
200 "SBM_GETPOS32", /* 0x00e1 */
201 "SBM_SETRANGE32", /* 0x00e2 */
202 "SBM_GETRANGE32", /* 0x00e3 */
203 "SBM_ENABLE_ARROWS32", /* 0x00e4 */
205 "SBM_SETRANGEREDRAW32", /* 0x00e6 */
207 "SBM_SETSCROLLINFO32", /* 0x00e9 */
208 "SBM_GETSCROLLINFO32", /* 0x00ea */
209 NULL, NULL, NULL, NULL, NULL,
211 /* 0x00F0 - Win32 Buttons */
212 "BM_GETCHECK32", /* 0x00f0 */
213 "BM_SETCHECK32", /* 0x00f1 */
214 "BM_GETSTATE32", /* 0x00f2 */
215 "BM_SETSTATE32", /* 0x00f3 */
216 "BM_SETSTYLE32", /* 0x00f4 */
217 "BM_CLICK32", /* 0x00f5 */
218 "BM_GETIMAGE32", /* 0x00f6 */
219 "BM_SETIMAGE32", /* 0x00f7 */
220 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
222 "WM_KEYDOWN", /* 0x0100 */
223 "WM_KEYUP", /* 0x0101 */
224 "WM_CHAR", /* 0x0102 */
225 "WM_DEADCHAR", /* 0x0103 */
226 "WM_SYSKEYDOWN", /* 0x0104 */
227 "WM_SYSKEYUP", /* 0x0105 */
228 "WM_SYSCHAR", /* 0x0106 */
229 "WM_SYSDEADCHAR", /* 0x0107 */
230 "WM_KEYLAST", /* 0x0108 */
235 "WM_IME_STARTCOMPOSITION", /* 0x010d */
236 "WM_IME_ENDCOMPOSITION", /* 0x010e */
237 "WM_IME_COMPOSITION", /* 0x010f */
239 "WM_INITDIALOG", /* 0x0110 */
240 "WM_COMMAND", /* 0x0111 */
241 "WM_SYSCOMMAND", /* 0x0112 */
242 "WM_TIMER", /* 0x0113 */
243 "WM_HSCROLL", /* 0x0114 */
244 "WM_VSCROLL", /* 0x0115 */
245 "WM_INITMENU", /* 0x0116 */
246 "WM_INITMENUPOPUP", /* 0x0117 */
247 "WM_SYSTIMER", /* 0x0118 */
248 NULL, NULL, NULL, NULL, NULL, NULL,
249 "WM_MENUSELECT", /* 0x011f */
251 "WM_MENUCHAR", /* 0x0120 */
252 "WM_ENTERIDLE", /* 0x0121 */
253 NULL, NULL, NULL, NULL, NULL, NULL,
254 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
258 "WM_LBTRACKPOINT", /* 0x0131 */
259 "WM_CTLCOLORMSGBOX", /* 0x0132 */
260 "WM_CTLCOLOREDIT", /* 0x0133 */
261 "WM_CTLCOLORLISTBOX", /* 0x0134 */
262 "WM_CTLCOLORBTN", /* 0x0135 */
263 "WM_CTLCOLORDLG", /* 0x0136 */
264 "WM_CTLCOLORSCROLLBAR", /* 0x0137 */
265 "WM_CTLCOLORSTATIC", /* 0x0138 */
266 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
268 /* 0x0140 - Win32 Comboboxes */
269 "CB_GETEDITSEL32", /* 0x0140 */
270 "CB_LIMITTEXT32", /* 0x0141 */
271 "CB_SETEDITSEL32", /* 0x0142 */
272 "CB_ADDSTRING32", /* 0x0143 */
273 "CB_DELETESTRING32", /* 0x0144 */
274 "CB_DIR32", /* 0x0145 */
275 "CB_GETCOUNT32", /* 0x0146 */
276 "CB_GETCURSEL32", /* 0x0147 */
277 "CB_GETLBTEXT32", /* 0x0148 */
278 "CB_GETLBTEXTLEN32", /* 0x0149 */
279 "CB_INSERTSTRING32", /* 0x014a */
280 "CB_RESETCONTENT32", /* 0x014b */
281 "CB_FINDSTRING32", /* 0x014c */
282 "CB_SELECTSTRING32", /* 0x014d */
283 "CB_SETCURSEL32", /* 0x014e */
284 "CB_SHOWDROPDOWN32", /* 0x014f */
286 "CB_GETITEMDATA32", /* 0x0150 */
287 "CB_SETITEMDATA32", /* 0x0151 */
288 "CB_GETDROPPEDCONTROLRECT32",/* 0x0152 */
289 "CB_SETITEMHEIGHT32", /* 0x0153 */
290 "CB_GETITEMHEIGHT32", /* 0x0154 */
291 "CB_SETEXTENDEDUI32", /* 0x0155 */
292 "CB_GETEXTENDEDUI32", /* 0x0156 */
293 "CB_GETDROPPEDSTATE32", /* 0x0157 */
294 "CB_FINDSTRINGEXACT32", /* 0x0158 */
295 "CB_SETLOCALE32", /* 0x0159 */
296 "CB_GETLOCALE32", /* 0x015a */
297 "CB_GETTOPINDEX32", /* 0x015b */
298 "CB_SETTOPINDEX32", /* 0x015c */
299 "CB_GETHORIZONTALEXTENT32", /* 0x015d */
300 "CB_SETHORIZONTALEXTENT32", /* 0x015e */
301 "CB_GETDROPPEDWIDTH32", /* 0x015f */
303 "CB_SETDROPPEDWIDTH32", /* 0x0160 */
304 "CB_INITSTORAGE32", /* 0x0161 */
305 NULL, NULL, NULL, NULL, NULL, NULL,
306 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
308 /* 0x0170 - Win32 Static controls */
309 "STM_SETICON32", /* 0x0170 */
310 "STM_GETICON32", /* 0x0171 */
311 "STM_SETIMAGE32", /* 0x0172 */
312 "STM_GETIMAGE32", /* 0x0173 */
313 NULL, NULL, NULL, NULL,
314 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
316 /* 0x0180 - Win32 Listboxes */
317 "LB_ADDSTRING32", /* 0x0180 */
318 "LB_INSERTSTRING32", /* 0x0181 */
319 "LB_DELETESTRING32", /* 0x0182 */
320 "LB_SELITEMRANGEEX32", /* 0x0183 */
321 "LB_RESETCONTENT32", /* 0x0184 */
322 "LB_SETSEL32", /* 0x0185 */
323 "LB_SETCURSEL32", /* 0x0186 */
324 "LB_GETSEL32", /* 0x0187 */
325 "LB_GETCURSEL32", /* 0x0188 */
326 "LB_GETTEXT32", /* 0x0189 */
327 "LB_GETTEXTLEN32", /* 0x018a */
328 "LB_GETCOUNT32", /* 0x018b */
329 "LB_SELECTSTRING32", /* 0x018c */
330 "LB_DIR32", /* 0x018d */
331 "LB_GETTOPINDEX32", /* 0x018e */
332 "LB_FINDSTRING32", /* 0x018f */
334 "LB_GETSELCOUNT32", /* 0x0190 */
335 "LB_GETSELITEMS32", /* 0x0191 */
336 "LB_SETTABSTOPS32", /* 0x0192 */
337 "LB_GETHORIZONTALEXTENT32", /* 0x0193 */
338 "LB_SETHORIZONTALEXTENT32", /* 0x0194 */
339 "LB_SETCOLUMNWIDTH32", /* 0x0195 */
340 "LB_ADDFILE32", /* 0x0196 */
341 "LB_SETTOPINDEX32", /* 0x0197 */
342 "LB_GETITEMRECT32", /* 0x0198 */
343 "LB_GETITEMDATA32", /* 0x0199 */
344 "LB_SETITEMDATA32", /* 0x019a */
345 "LB_SELITEMRANGE32", /* 0x019b */
346 "LB_SETANCHORINDEX32", /* 0x019c */
347 "LB_GETANCHORINDEX32", /* 0x019d */
348 "LB_SETCARETINDEX32", /* 0x019e */
349 "LB_GETCARETINDEX32", /* 0x019f */
351 "LB_SETITEMHEIGHT32", /* 0x01a0 */
352 "LB_GETITEMHEIGHT32", /* 0x01a1 */
353 "LB_FINDSTRINGEXACT32", /* 0x01a2 */
354 "LB_CARETON32", /* 0x01a3 */
355 "LB_CARETOFF32", /* 0x01a4 */
356 "LB_SETLOCALE32", /* 0x01a5 */
357 "LB_GETLOCALE32", /* 0x01a6 */
358 "LB_SETCOUNT32", /* 0x01a7 */
359 "LB_INITSTORAGE32", /* 0x01a8 */
360 "LB_ITEMFROMPOINT32", /* 0x01a9 */
361 NULL, NULL, NULL, NULL, NULL, NULL,
364 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
365 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
368 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
369 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
372 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
373 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
376 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
377 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
380 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
381 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
383 "WM_MOUSEMOVE", /* 0x0200 */
384 "WM_LBUTTONDOWN", /* 0x0201 */
385 "WM_LBUTTONUP", /* 0x0202 */
386 "WM_LBUTTONDBLCLK", /* 0x0203 */
387 "WM_RBUTTONDOWN", /* 0x0204 */
388 "WM_RBUTTONUP", /* 0x0205 */
389 "WM_RBUTTONDBLCLK", /* 0x0206 */
390 "WM_MBUTTONDOWN", /* 0x0207 */
391 "WM_MBUTTONUP", /* 0x0208 */
392 "WM_MBUTTONDBLCLK", /* 0x0209 */
393 "WM_MOUSEWHEEL", /* 0x020A */
394 NULL, NULL, NULL, NULL, NULL,
396 "WM_PARENTNOTIFY", /* 0x0210 */
397 "WM_ENTERMENULOOP", /* 0x0211 */
398 "WM_EXITMENULOOP", /* 0x0212 */
399 "WM_NEXTMENU", /* 0x0213 */
404 "WM_DEVICECHANGE", NULL, NULL, NULL, NULL, NULL, NULL,
406 "WM_MDICREATE", /* 0x0220 */
407 "WM_MDIDESTROY", /* 0x0221 */
408 "WM_MDIACTIVATE", /* 0x0222 */
409 "WM_MDIRESTORE", /* 0x0223 */
410 "WM_MDINEXT", /* 0x0224 */
411 "WM_MDIMAXIMIZE", /* 0x0225 */
412 "WM_MDITILE", /* 0x0226 */
413 "WM_MDICASCADE", /* 0x0227 */
414 "WM_MDIICONARRANGE", /* 0x0228 */
415 "WM_MDIGETACTIVE", /* 0x0229 */
418 "WM_QUERYDROPOBJECT",
425 "WM_MDISETMENU", /* 0x0230 */
426 "WM_ENTERSIZEMOVE", /* 0x0231 */
427 "WM_EXITSIZEMOVE", /* 0x0232 */
428 "WM_DROPFILES", /* 0x0233 */
429 "WM_MDIREFRESHMENU", NULL, NULL, NULL,
431 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
434 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
435 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
438 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
439 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
442 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
443 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
444 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
445 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
448 NULL, "WM_IME_SETCONTEXT", "WM_IME_NOTIFY", "WM_IME_CONTROL", "WM_IME_COMPOSITIONFULL", "WM_IME_SELECT", "WM_IME_CHAR", NULL,
449 "WM_IME_REQUEST", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
450 "WM_IME_KEYDOWN", "WM_IME_KEYUP", NULL, NULL, NULL, NULL, NULL, NULL,
451 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
454 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
455 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
456 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
457 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
460 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
461 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
462 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
463 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
465 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
466 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
467 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
468 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
470 "WM_CUT", /* 0x0300 */
476 "WM_RENDERALLFORMATS",
477 "WM_DESTROYCLIPBOARD",
480 "WM_VSCROLLCLIPBOARD",
482 "WM_ASKCBFORMATNAME",
484 "WM_HSCROLLCLIPBOARD",
485 "WM_QUERYNEWPALETTE", /* 0x030f*/
487 "WM_PALETTEISCHANGING",
489 "WM_HOTKEY", /* 0x0312 */
490 NULL, NULL, NULL, NULL,
493 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
495 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
496 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
497 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
498 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
501 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
502 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
503 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
504 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
506 "WM_QUERYAFXWNDPROC", /* 0x0360 */
507 "WM_SIZEPARENT", /* 0x0361 */
508 "WM_SETMESSAGESTRING", /* 0x0362 */
509 "WM_IDLEUPDATECMDUI", /* 0x0363 */
510 "WM_INITIALUPDATE", /* 0x0364 */
511 "WM_COMMANDHELP", /* 0x0365 */
512 "WM_HELPHITTEST", /* 0x0366 */
513 "WM_EXITHELPMODE", /* 0x0367 */
514 "WM_RECALCPARENT", /* 0x0368 */
515 "WM_SIZECHILD", /* 0x0369 */
516 "WM_KICKIDLE", /* 0x036A */
517 "WM_QUERYCENTERWND", /* 0x036B */
518 "WM_DISABLEMODAL", /* 0x036C */
519 "WM_FLOATSTATUS", /* 0x036D */
520 "WM_ACTIVATETOPLEVEL", /* 0x036E */
521 "WM_QUERY3DCONTROLS", /* 0x036F */
523 "WM_SOCKET_NOTIFY", /* 0x0373 */
524 "WM_SOCKET_DEAD", /* 0x0374 */
525 "WM_POPMESSAGESTRING", /* 0x0375 */
526 "WM_OCC_LOADFROMSTREAM", /* 0x0376 */
527 "WM_OCC_LOADFROMSTORAGE", /* 0x0377 */
528 "WM_OCC_INITNEW", /* 0x0378 */
529 "WM_QUEUE_SENTINEL", /* 0x0379 */
530 "WM_OCC_LOADFROMSTREAM_EX", /* 0x037A */
531 "WM_OCC_LOADFROMSTORAGE_EX", /* 0x037B */
543 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
546 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
547 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
555 NULL, NULL, NULL, NULL,
556 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
559 NULL, NULL, NULL, NULL, NULL,
583 NULL, NULL, NULL, NULL, NULL, NULL,
584 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
585 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
588 "WM_DDE_INITIATE", /* 0x3E0 */
589 "WM_DDE_TERMINATE", /* 0x3E1 */
590 "WM_DDE_ADVISE", /* 0x3E2 */
591 "WM_DDE_UNADVISE", /* 0x3E3 */
592 "WM_DDE_ACK", /* 0x3E4 */
593 "WM_DDE_DATA", /* 0x3E5 */
594 "WM_DDE_REQUEST", /* 0x3E6 */
595 "WM_DDE_POKE", /* 0x3E7 */
596 "WM_DDE_EXECUTE", /* 0x3E8 */
597 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
601 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
602 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
608 #define SPY_MAX_LVMMSGNUM 140
609 static const char * const LVMMessageTypeNames[SPY_MAX_LVMMSGNUM + 1] =
611 "LVM_GETBKCOLOR", /* 1000 */
620 "LVM_DELETEALLITEMS",
621 "LVM_GETCALLBACKMASK",
622 "LVM_SETCALLBACKMASK",
626 "LVM_SETITEMPOSITION",
627 "LVM_GETITEMPOSITION",
628 "LVM_GETSTRINGWIDTHA",
635 "LVM_GETEDITCONTROL",
640 "LVM_GETCOLUMNWIDTH",
641 "LVM_SETCOLUMNWIDTH",
644 "LVM_CREATEDRAGIMAGE",
648 "LVM_GETTEXTBKCOLOR",
649 "LVM_SETTEXTBKCOLOR",
651 "LVM_GETCOUNTPERPAGE",
660 "LVM_SETITEMPOSITION32",
661 "LVM_GETSELECTEDCOUNT",
662 "LVM_GETITEMSPACING",
663 "LVM_GETISEARCHSTRINGA",
664 "LVM_SETICONSPACING",
665 "LVM_SETEXTENDEDLISTVIEWSTYLE",
666 "LVM_GETEXTENDEDLISTVIEWSTYLE",
667 "LVM_GETSUBITEMRECT",
668 "LVM_SUBITEMHITTEST",
669 "LVM_SETCOLUMNORDERARRAY",
670 "LVM_GETCOLUMNORDERARRAY",
675 "LVM_APPROXIMATEVIEWRECT",
677 "LVM_GETSELECTIONMARK",
678 "LVM_SETSELECTIONMARK",
684 "LVM_GETNUMBEROFWORKAREAS",
698 "LVM_GETSTRINGWIDTHW",
728 "LVM_GETISEARCHSTRINGW",
751 "LVM_GETBKIMAGEW" /* 0x108B */
755 #define SPY_MAX_TVMSGNUM 65
756 static const char * const TVMessageTypeNames[SPY_MAX_TVMSGNUM + 1] =
758 "TVM_INSERTITEMA", /* 1100 */
773 "TVM_GETEDITCONTROL",
774 "TVM_GETVISIBLECOUNT",
776 "TVM_CREATEDRAGIMAGE",
779 "TVM_SORTCHILDRENCB",
780 "TVM_ENDEDITLABELNOW",
781 "TVM_GETISEARCHSTRINGA",
795 "TVM_SETINSERTMARKCOLOR",
796 "TVM_GETINSERTMARKCOLOR",
822 "TVM_GETISEARCHSTRINGW",
827 #define SPY_MAX_HDMMSGNUM 19
828 static const char * const HDMMessageTypeNames[SPY_MAX_HDMMSGNUM + 1] =
830 "HDM_GETITEMCOUNT", /* 1200 */
846 "HDM_CREATEDRAGIMAGE",
847 "GETORDERARRAYINDEX",
848 "SETORDERARRAYINDEX",
853 #define SPY_MAX_TCMMSGNUM 62
854 static const char * const TCMMessageTypeNames[SPY_MAX_TCMMSGNUM + 1] =
865 "TCM_DELETEALLITEMS",
905 "TCM_SETMINTABWIDTH",
908 "TCM_SETEXTENDEDSTYLE",
909 "TCM_GETEXTENDEDSTYLE",
921 #define SPY_MAX_PGMMSGNUM 13
922 static const char * const PGMMessageTypeNames[SPY_MAX_PGMMSGNUM + 1] =
936 "PGM_GETBUTTONSTATE",
941 #define SPY_MAX_CCMMSGNUM 6
942 static const char * const CCMMessageTypeNames[SPY_MAX_CCMMSGNUM + 1] =
946 "CCM_SETCOLORSCHEME",
947 "CCM_GETCOLORSCHEME",
949 "CCM_SETUNICODEFORMAT",
950 "CCM_GETUNICODEFORMAT"
953 /* Virtual key names */
954 #define SPY_MAX_VKKEYSNUM 255
955 static const char * const VK_KeyNames[SPY_MAX_VKKEYSNUM + 1] =
958 "VK_LBUTTON", /* 0x01 */
959 "VK_RBUTTON", /* 0x02 */
960 "VK_CANCEL", /* 0x03 */
961 "VK_MBUTTON", /* 0x04 */
965 "VK_BACK", /* 0x08 */
969 "VK_CLEAR", /* 0x0C */
970 "VK_RETURN", /* 0x0D */
973 "VK_SHIFT", /* 0x10 */
974 "VK_CONTROL", /* 0x11 */
975 "VK_MENU", /* 0x12 */
976 "VK_PAUSE", /* 0x13 */
977 "VK_CAPITAL", /* 0x14 */
984 "VK_ESCAPE", /* 0x1B */
989 "VK_SPACE", /* 0x20 */
990 "VK_PRIOR", /* 0x21 */
991 "VK_NEXT", /* 0x22 */
993 "VK_HOME", /* 0x24 */
994 "VK_LEFT", /* 0x25 */
996 "VK_RIGHT", /* 0x27 */
997 "VK_DOWN", /* 0x28 */
998 "VK_SELECT", /* 0x29 */
999 "VK_PRINT", /* 0x2A */
1000 "VK_EXECUTE", /* 0x2B */
1001 "VK_SNAPSHOT", /* 0x2C */
1002 "VK_INSERT", /* 0x2D */
1003 "VK_DELETE", /* 0x2E */
1004 "VK_HELP", /* 0x2F */
1048 "VK_LWIN", /* 0x5B */
1049 "VK_RWIN", /* 0x5C */
1050 "VK_APPS", /* 0x5D */
1053 "VK_NUMPAD0", /* 0x60 */
1054 "VK_NUMPAD1", /* 0x61 */
1055 "VK_NUMPAD2", /* 0x62 */
1056 "VK_NUMPAD3", /* 0x63 */
1057 "VK_NUMPAD4", /* 0x64 */
1058 "VK_NUMPAD5", /* 0x65 */
1059 "VK_NUMPAD6", /* 0x66 */
1060 "VK_NUMPAD7", /* 0x67 */
1061 "VK_NUMPAD8", /* 0x68 */
1062 "VK_NUMPAD9", /* 0x69 */
1063 "VK_MULTIPLY", /* 0x6A */
1064 "VK_ADD", /* 0x6B */
1065 "VK_SEPARATOR", /* 0x6C */
1066 "VK_SUBTRACT", /* 0x6D */
1067 "VK_DECIMAL", /* 0x6E */
1068 "VK_DIVIDE", /* 0x6F */
1078 "VK_F10", /* 0x79 */
1079 "VK_F11", /* 0x7A */
1080 "VK_F12", /* 0x7B */
1081 "VK_F13", /* 0x7C */
1082 "VK_F14", /* 0x7D */
1083 "VK_F15", /* 0x7E */
1084 "VK_F16", /* 0x7F */
1085 "VK_F17", /* 0x80 */
1086 "VK_F18", /* 0x81 */
1087 "VK_F19", /* 0x82 */
1088 "VK_F20", /* 0x83 */
1089 "VK_F21", /* 0x84 */
1090 "VK_F22", /* 0x85 */
1091 "VK_F23", /* 0x86 */
1092 "VK_F24", /* 0x87 */
1101 "VK_NUMLOCK", /* 0x90 */
1102 "VK_SCROLL", /* 0x91 */
1117 "VK_LSHIFT", /* 0xA0 */
1118 "VK_RSHIFT", /* 0xA1 */
1119 "VK_LCONTROL", /* 0xA2 */
1120 "VK_RCONTROL", /* 0xA3 */
1121 "VK_LMENU", /* 0xA4 */
1122 "VK_RMENU", /* 0xA5 */
1143 "VK_OEM_1", /* 0xBA */
1144 "VK_OEM_PLUS", /* 0xBB */
1145 "VK_OEM_COMMA", /* 0xBC */
1146 "VK_OEM_MINUS", /* 0xBD */
1147 "VK_OEM_PERIOD", /* 0xBE */
1148 "VK_OEM_2", /* 0xBF */
1149 "VK_OEM_3", /* 0xC0 */
1176 "VK_OEM_4", /* 0xDB */
1177 "VK_OEM_5", /* 0xDC */
1178 "VK_OEM_6", /* 0xDD */
1179 "VK_OEM_7", /* 0xDE */
1180 "VK_OEM_8", /* 0xDF */
1182 "VK_OEM_AX", /* 0xE1 */
1183 "VK_OEM_102", /* 0xE2 */
1184 "VK_ICO_HELP", /* 0xE3 */
1185 "VK_ICO_00", /* 0xE4 */
1186 "VK_PROCESSKEY", /* 0xE5 */
1203 "VK_ATTN", /* 0xF6 */
1204 "VK_CRSEL", /* 0xF7 */
1205 "VK_EXSEL", /* 0xF8 */
1206 "VK_EREOF", /* 0xF9 */
1207 "VK_PLAY", /* 0xFA */
1208 "VK_ZOOM", /* 0xFB */
1209 "VK_NONAME", /* 0xFC */
1210 "VK_PA1", /* 0xFD */
1211 "VK_OEM_CLEAR", /* 0xFE */
1216 /* WM_NOTIFY function codes display */
1220 const char *name; /* name of notify message */
1221 UINT value; /* notify code value */
1222 UINT len; /* length of extra space to dump */
1225 #define SPNFY(a,b) { #a ,a,sizeof(b)-sizeof(NMHDR)}
1227 /* Array MUST be in descending order by the 'value' field */
1228 /* (since value is UNSIGNED, 0xffffffff is largest and */
1229 /* 0xfffffffe is smaller). A binary search is used to */
1230 /* locate the correct 'value'. */
1231 static const SPY_NOTIFY spnfy_array[] = {
1232 /* common 0U to 0U-99U */
1233 SPNFY(NM_OUTOFMEMORY, NMHDR),
1234 SPNFY(NM_CLICK, NMHDR),
1235 SPNFY(NM_DBLCLK, NMHDR),
1236 SPNFY(NM_RETURN, NMHDR),
1237 SPNFY(NM_RCLICK, NMHDR),
1238 SPNFY(NM_RDBLCLK, NMHDR),
1239 SPNFY(NM_SETFOCUS, NMHDR),
1240 SPNFY(NM_KILLFOCUS, NMHDR),
1241 SPNFY(NM_CUSTOMDRAW, NMCUSTOMDRAW),
1242 SPNFY(NM_HOVER, NMHDR),
1243 SPNFY(NM_NCHITTEST, NMHDR),
1244 SPNFY(NM_KEYDOWN, NMKEY),
1245 SPNFY(NM_RELEASEDCAPTURE, NMHDR),
1246 SPNFY(NM_SETCURSOR, NMMOUSE),
1247 SPNFY(NM_CHAR, NMCHAR),
1248 SPNFY(NM_TOOLTIPSCREATED, NMTOOLTIPSCREATED),
1249 /* Listview 0U-100U to 0U-199U */
1250 SPNFY(LVN_ITEMCHANGING, NMHDR),
1251 SPNFY(LVN_ITEMCHANGED, NMHDR),
1252 SPNFY(LVN_INSERTITEM, NMHDR),
1253 SPNFY(LVN_DELETEITEM, NMHDR),
1254 SPNFY(LVN_DELETEALLITEMS, NMHDR),
1255 SPNFY(LVN_BEGINLABELEDITA, NMHDR),
1256 SPNFY(LVN_ENDLABELEDITA, NMHDR),
1257 SPNFY(LVN_COLUMNCLICK, NMHDR),
1258 SPNFY(LVN_BEGINDRAG, NMHDR),
1259 SPNFY(LVN_BEGINRDRAG, NMHDR),
1260 SPNFY(LVN_ODCACHEHINT, NMHDR),
1261 SPNFY(LVN_ITEMACTIVATE, NMHDR),
1262 SPNFY(LVN_ODSTATECHANGED, NMHDR),
1263 SPNFY(LVN_HOTTRACK, NMHDR),
1264 SPNFY(LVN_GETDISPINFOA, NMHDR),
1265 SPNFY(LVN_SETDISPINFOA, NMHDR),
1266 SPNFY(LVN_KEYDOWN, NMHDR),
1267 SPNFY(LVN_MARQUEEBEGIN, NMHDR),
1268 SPNFY(LVN_GETINFOTIPA, NMHDR),
1269 SPNFY(LVN_GETINFOTIPW, NMHDR),
1270 SPNFY(LVN_BEGINLABELEDITW, NMHDR),
1271 SPNFY(LVN_ENDLABELEDITW, NMHDR),
1272 SPNFY(LVN_GETDISPINFOW, NMHDR),
1273 SPNFY(LVN_SETDISPINFOW, NMHDR),
1274 SPNFY(LVN_ODFINDITEMW, NMHDR),
1275 /* Header 0U-300U to 0U-399U */
1276 SPNFY(HDN_ITEMCHANGINGA, NMHDR),
1277 SPNFY(HDN_ITEMCHANGEDA, NMHDR),
1278 SPNFY(HDN_ITEMCLICKA, NMHDR),
1279 SPNFY(HDN_ITEMDBLCLICKA, NMHDR),
1280 SPNFY(HDN_DIVIDERDBLCLICKA, NMHDR),
1281 SPNFY(HDN_BEGINTRACKA, NMHDR),
1282 SPNFY(HDN_ENDTRACKA, NMHDR),
1283 SPNFY(HDN_GETDISPINFOA, NMHDR),
1284 SPNFY(HDN_BEGINDRAG, NMHDR),
1285 SPNFY(HDN_ENDDRAG, NMHDR),
1286 SPNFY(HDN_ITEMCHANGINGW, NMHDR),
1287 SPNFY(HDN_ITEMCHANGEDW, NMHDR),
1288 SPNFY(HDN_ITEMCLICKW, NMHDR),
1289 SPNFY(HDN_ITEMDBLCLICKW, NMHDR),
1290 SPNFY(HDN_DIVIDERDBLCLICKW, NMHDR),
1291 SPNFY(HDN_BEGINTRACKW, NMHDR),
1292 SPNFY(HDN_ENDTRACKW, NMHDR),
1293 SPNFY(HDN_GETDISPINFOW, NMHDR),
1294 /* Treeview 0U-400U to 0U-499U */
1295 SPNFY(TVN_SELCHANGINGA, NMHDR),
1296 SPNFY(TVN_SELCHANGEDA, NMHDR),
1297 SPNFY(TVN_GETDISPINFOA, NMHDR),
1298 SPNFY(TVN_SETDISPINFOA, NMHDR),
1299 SPNFY(TVN_ITEMEXPANDINGA, NMHDR),
1300 SPNFY(TVN_ITEMEXPANDEDA, NMHDR),
1301 SPNFY(TVN_BEGINDRAGA, NMHDR),
1302 SPNFY(TVN_BEGINRDRAGA, NMHDR),
1303 SPNFY(TVN_DELETEITEMA, NMHDR),
1304 SPNFY(TVN_BEGINLABELEDITA, NMHDR),
1305 SPNFY(TVN_ENDLABELEDITA, NMHDR),
1306 SPNFY(TVN_KEYDOWN, NMHDR),
1307 SPNFY(TVN_SELCHANGINGW, NMHDR),
1308 SPNFY(TVN_SELCHANGEDW, NMHDR),
1309 SPNFY(TVN_GETDISPINFOW, NMHDR),
1310 SPNFY(TVN_SETDISPINFOW, NMHDR),
1311 SPNFY(TVN_ITEMEXPANDINGW, NMHDR),
1312 SPNFY(TVN_ITEMEXPANDEDW, NMHDR),
1313 SPNFY(TVN_BEGINDRAGW, NMHDR),
1314 SPNFY(TVN_BEGINRDRAGW, NMHDR),
1315 SPNFY(TVN_DELETEITEMW, NMHDR),
1316 SPNFY(TVN_BEGINLABELEDITW, NMHDR),
1317 SPNFY(TVN_ENDLABELEDITW, NMHDR),
1318 /* Tooltips 0U-520U to 0U-549U */
1319 /* Tab 0U-550U to 0U-580U */
1320 SPNFY(TCN_KEYDOWN, NMHDR),
1321 SPNFY(TCN_SELCHANGE, NMHDR),
1322 SPNFY(TCN_SELCHANGING, NMHDR),
1323 SPNFY(TCN_GETOBJECT, NMHDR),
1324 /* Common Dialog 0U-601U to 0U-699U */
1325 /* Toolbar 0U-700U to 0U-720U */
1326 SPNFY(TBN_GETBUTTONINFOA, NMTOOLBARA),
1327 SPNFY(TBN_BEGINDRAG, NMTOOLBARA),
1328 SPNFY(TBN_ENDDRAG, NMTOOLBARA),
1329 SPNFY(TBN_BEGINADJUST, NMHDR),
1330 SPNFY(TBN_ENDADJUST, NMHDR),
1331 SPNFY(TBN_RESET, NMHDR),
1332 SPNFY(TBN_QUERYINSERT, NMTOOLBARA),
1333 SPNFY(TBN_QUERYDELETE, NMTOOLBARA),
1334 SPNFY(TBN_TOOLBARCHANGE, NMHDR),
1335 SPNFY(TBN_CUSTHELP, NMHDR),
1336 SPNFY(TBN_DROPDOWN, NMTOOLBARA),
1337 SPNFY(TBN_GETOBJECT, NMOBJECTNOTIFY),
1338 SPNFY(TBN_HOTITEMCHANGE, NMHDR), /* NMTBHOTITEM), */
1339 SPNFY(TBN_DRAGOUT, NMTOOLBARA),
1340 SPNFY(TBN_DELETINGBUTTON, NMTOOLBARA),
1341 SPNFY(TBN_GETDISPINFOA, NMHDR), /* NMTBDISPINFO), */
1342 SPNFY(TBN_GETDISPINFOW, NMHDR), /* NMTBDISPINFO), */
1343 SPNFY(TBN_GETINFOTIPA, NMTBGETINFOTIPA),
1344 SPNFY(TBN_GETINFOTIPW, NMTBGETINFOTIPW),
1345 SPNFY(TBN_GETBUTTONINFOW, NMTOOLBARW),
1346 /* Up/Down 0U-721U to 0U-740U */
1347 /* Month Calendar 0U-750U to 0U-759U */
1348 /* Date/Time 0U-760U to 0U-799U */
1349 /* ComboBoxEx 0U-800U to 0U-830U */
1350 SPNFY(CBEN_GETDISPINFOA, NMHDR), /* NMCOMBOBOXEX), */
1351 SPNFY(CBEN_INSERTITEM, NMHDR), /* NMCOMBOBOXEX), */
1352 SPNFY(CBEN_DELETEITEM, NMHDR), /* NMCOMBOBOXEX), */
1353 SPNFY(CBEN_BEGINEDIT, NMHDR),
1354 SPNFY(CBEN_ENDEDITA, NMCBEENDEDITA),
1355 SPNFY(CBEN_ENDEDITW, NMCBEENDEDITW),
1356 SPNFY(CBEN_GETDISPINFOW, NMHDR), /* NMCOMBOBOXEXW), */
1357 SPNFY(CBEN_DRAGBEGINA, NMHDR), /* NMCBEDRAGBEGINA), */
1358 SPNFY(CBEN_DRAGBEGINW, NMHDR), /* NMCBEDRAGBEGINW), */
1359 /* Rebar 0U-831U to 0U-859U */
1360 SPNFY(RBN_HEIGHTCHANGE, NMHDR),
1361 SPNFY(RBN_GETOBJECT, NMOBJECTNOTIFY),
1362 SPNFY(RBN_LAYOUTCHANGED, NMHDR),
1363 SPNFY(RBN_AUTOSIZE, NMRBAUTOSIZE),
1364 SPNFY(RBN_BEGINDRAG, NMREBAR),
1365 SPNFY(RBN_ENDDRAG, NMREBAR),
1366 SPNFY(RBN_DELETINGBAND, NMREBAR),
1367 SPNFY(RBN_DELETEDBAND, NMREBAR),
1368 SPNFY(RBN_CHILDSIZE, NMREBARCHILDSIZE),
1369 /* IP Adderss 0U-860U to 0U-879U */
1370 /* Status bar 0U-880U to 0U-899U */
1371 /* Pager 0U-900U to 0U-950U */
1373 static const SPY_NOTIFY *end_spnfy_array; /* ptr to last good entry in array */
1377 static BOOL16 SPY_Exclude[SPY_MAX_MSGNUM+1];
1378 static BOOL16 SPY_ExcludeDWP = 0;
1379 static int SPY_IndentLevel = 0;
1381 #define SPY_EXCLUDE(msg) \
1382 (SPY_Exclude[(msg) > SPY_MAX_MSGNUM ? SPY_MAX_MSGNUM : (msg)])
1384 /***********************************************************************
1387 const char *SPY_GetMsgName( UINT msg )
1389 static char msg_buffer[20];
1391 if (msg <= SPY_MAX_MSGNUM)
1393 if (!MessageTypeNames[msg]) return "???";
1394 return MessageTypeNames[msg];
1397 if (msg >= LVM_FIRST && msg <= LVM_FIRST + SPY_MAX_LVMMSGNUM)
1399 if (!LVMMessageTypeNames[msg-LVM_FIRST]) return "LVM_?";
1400 return LVMMessageTypeNames[msg-LVM_FIRST];
1403 if (msg >= TV_FIRST && msg <= TV_FIRST + SPY_MAX_TVMSGNUM)
1405 if (!TVMessageTypeNames[msg-TV_FIRST]) return "TV_?";
1406 return TVMessageTypeNames[msg-TV_FIRST];
1409 if (msg >= HDM_FIRST && msg <= HDM_FIRST + SPY_MAX_HDMMSGNUM)
1411 if (!HDMMessageTypeNames[msg-HDM_FIRST]) return "HDM_?";
1412 return HDMMessageTypeNames[msg-HDM_FIRST];
1415 if (msg >= TCM_FIRST && msg <= TCM_FIRST + SPY_MAX_TCMMSGNUM)
1417 if (!TCMMessageTypeNames[msg-TCM_FIRST]) return "TCM_?";
1418 return TCMMessageTypeNames[msg-TCM_FIRST];
1421 if (msg >= PGM_FIRST && msg <= PGM_FIRST + SPY_MAX_PGMMSGNUM)
1423 if (!PGMMessageTypeNames[msg-PGM_FIRST]) return "PGM_?";
1424 return PGMMessageTypeNames[msg-PGM_FIRST];
1427 if (msg >= CCM_FIRST && msg <= CCM_FIRST + SPY_MAX_CCMMSGNUM)
1429 if (!CCMMessageTypeNames[msg-CCM_FIRST]) return "???";
1430 return CCMMessageTypeNames[msg-CCM_FIRST];
1433 sprintf( msg_buffer, "WM_USER+%04x", msg - WM_USER );
1437 /***********************************************************************
1440 const char *SPY_GetWndName( HWND hwnd )
1442 static char wnd_buffer[16];
1444 WND* pWnd = WIN_FindWndPtr( hwnd );
1447 LPSTR p = wnd_buffer;
1450 if( pWnd->text && pWnd->text[0] != '\0' )
1452 LPWSTR src = pWnd->text;
1453 int n=sizeof(wnd_buffer)-2;
1454 *(p++) = postfix = '\"';
1455 while ((n-- > 0) && *src) *p++ = *src++;
1457 else /* get class name */
1460 p+=GlobalGetAtomNameA((ATOM) GetClassWord(pWnd->hwndSelf, GCW_ATOM), p, sizeof(wnd_buffer)-1);
1463 if( p-wnd_buffer == sizeof(wnd_buffer)-1 ) {
1464 p=wnd_buffer+sizeof(wnd_buffer)-5;
1471 WIN_ReleaseWndPtr(pWnd);
1474 else strcpy( wnd_buffer, "\"NULL\"" );
1478 /***********************************************************************
1481 const char *SPY_GetVKeyName(WPARAM wParam)
1483 const char *vk_key_name;
1485 if(wParam <= SPY_MAX_VKKEYSNUM && VK_KeyNames[wParam])
1486 vk_key_name = VK_KeyNames[wParam];
1488 vk_key_name = "VK_???";
1493 /***********************************************************************
1494 * SPY_Bsearch_Notify
1496 const SPY_NOTIFY *SPY_Bsearch_Notify( const SPY_NOTIFY *first, const SPY_NOTIFY *last, UINT code)
1499 const SPY_NOTIFY *test;
1501 while (last >= first) {
1502 count = 1 + last - first;
1504 /* TRACE("code=%d, f-value=%d, f-name=%s, l-value=%d, l-name=%s, l-len=%d,\n",
1505 code, first->value, first->name, last->value, last->name, last->len); */
1506 if (first->value == code) return first;
1507 if (last->value == code) return last;
1511 test = first + count;
1512 /* TRACE("first=%p, last=%p, test=%p, t-value=%d, code=%d, count=%d\n",
1513 first, last, test, test->value, code, count); */
1514 if (test->value == code) return test;
1515 if (test->value < code)
1523 /***********************************************************************
1526 void SPY_DumpStructure (UINT msg, BOOL enter, LPARAM structure)
1533 DRAWITEMSTRUCT *lpdis = (DRAWITEMSTRUCT*) structure;
1534 TRACE("DRAWITEMSTRUCT: CtlType=0x%08x CtlID=0x%08x\n",
1535 lpdis->CtlType, lpdis->CtlID);
1536 TRACE("itemID=0x%08x itemAction=0x%08x itemState=0x%08x\n",
1537 lpdis->itemID, lpdis->itemAction, lpdis->itemState);
1538 TRACE("hWnd=0x%04x hDC=0x%04x (%d,%d)-(%d,%d) itemData=0x%08lx\n",
1539 lpdis->hwndItem, lpdis->hDC, lpdis->rcItem.left,
1540 lpdis->rcItem.top, lpdis->rcItem.right,
1541 lpdis->rcItem.bottom, lpdis->itemData);
1544 case WM_MEASUREITEM:
1546 MEASUREITEMSTRUCT *lpmis = (MEASUREITEMSTRUCT*) structure;
1547 TRACE("MEASUREITEMSTRUCT: CtlType=0x%08x CtlID=0x%08x\n",
1548 lpmis->CtlType, lpmis->CtlID);
1549 TRACE("itemID=0x%08x itemWidth=0x%08x itemHeight=0x%08x\n",
1550 lpmis->itemID, lpmis->itemWidth, lpmis->itemHeight);
1551 TRACE("itemData=0x%08lx\n", lpmis->itemData);
1554 case WM_WINDOWPOSCHANGED:
1556 case WM_WINDOWPOSCHANGING:
1558 WINDOWPOS *lpwp = (WINDOWPOS *)structure;
1559 TRACE("WINDOWPOS hwnd=0x%04x, after=0x%04x, at (%d,%d) w=%d h=%d, flags=0x%08x\n",
1560 lpwp->hwnd, lpwp->hwndInsertAfter, lpwp->x, lpwp->y,
1561 lpwp->cx, lpwp->cy, lpwp->flags);
1564 case WM_STYLECHANGED:
1566 case WM_STYLECHANGING:
1568 LPSTYLESTRUCT ss = (LPSTYLESTRUCT) structure;
1569 TRACE("STYLESTRUCT: StyleOld=0x%08lx, StyleNew=0x%08lx\n",
1570 ss->styleOld, ss->styleNew);
1576 NMHDR * pnmh = (NMHDR*) structure;
1578 const SPY_NOTIFY *p;
1580 p = SPY_Bsearch_Notify (&spnfy_array[0], end_spnfy_array,
1583 TRACE("NMHDR hwndFrom=0x%08x idFrom=0x%08x code=%s<0x%08x>, extra=0x%x\n",
1584 pnmh->hwndFrom, pnmh->idFrom, p->name, pnmh->code, p->len);
1587 q = (UINT *)(pnmh + 1);
1588 for(i=0; i<((INT)p->len)-12; i+=16) {
1589 TRACE("NM extra [%04x] %08x %08x %08x %08x\n",
1590 i, *q, *(q+1), *(q+2), *(q+3));
1593 switch (p->len - i) {
1595 TRACE("NM extra [%04x] %08x %08x %08x\n",
1596 i, *q, *(q+1), *(q+2));
1599 TRACE("NM extra [%04x] %08x %08x\n",
1603 TRACE("NM extra [%04x] %08x\n",
1612 TRACE("NMHDR hwndFrom=0x%08x idFrom=0x%08x code=0x%08x\n",
1613 pnmh->hwndFrom, pnmh->idFrom, pnmh->code);
1620 /***********************************************************************
1623 void SPY_EnterMessage( INT iFlag, HWND hWnd, UINT msg,
1624 WPARAM wParam, LPARAM lParam )
1628 if (!TRACE_ON(message) || SPY_EXCLUDE(msg)) return;
1630 /* each SPY_SENDMESSAGE must be complemented by call to SPY_ExitMessage */
1633 case SPY_DISPATCHMESSAGE16:
1634 pname = SPY_GetWndName(hWnd);
1635 TRACE("%*s(%04x) %-16s message [%04x] %s dispatched wp=%04x lp=%08lx\n",
1636 SPY_IndentLevel, "", hWnd, pname, msg, SPY_GetMsgName( msg ),
1640 case SPY_DISPATCHMESSAGE:
1641 pname = SPY_GetWndName(hWnd);
1642 TRACE("%*s(%08x) %-16s message [%04x] %s dispatched wp=%08x lp=%08lx\n",
1643 SPY_IndentLevel, "", hWnd, pname, msg, SPY_GetMsgName( msg ),
1647 case SPY_SENDMESSAGE16:
1648 case SPY_SENDMESSAGE:
1651 HTASK16 hTask = GetWindowTask16(hWnd);
1653 if (hTask == GetCurrentTask()) strcpy( taskName, "self" );
1654 else if (!hTask) strcpy( taskName, "Wine" );
1657 sprintf( taskName, "task %04x ???", hTask );
1658 GetModuleName16( hTask, taskName + 10, sizeof(taskName) - 10 );
1660 pname = SPY_GetWndName(hWnd);
1662 if (iFlag == SPY_SENDMESSAGE16)
1663 TRACE("%*s(%04x) %-16s message [%04x] %s sent from %s wp=%04x lp=%08lx\n",
1664 SPY_IndentLevel, "", hWnd, pname, msg, SPY_GetMsgName( msg ),
1665 taskName, wParam, lParam );
1667 { TRACE("%*s(%08x) %-16s message [%04x] %s sent from %s wp=%08x lp=%08lx\n",
1668 SPY_IndentLevel, "", hWnd, pname, msg, SPY_GetMsgName( msg ),
1669 taskName, wParam, lParam );
1670 SPY_DumpStructure(msg, TRUE, lParam);
1675 case SPY_DEFWNDPROC16:
1676 if( SPY_ExcludeDWP ) return;
1677 TRACE("%*s(%04x) DefWindowProc16: %s [%04x] wp=%04x lp=%08lx\n",
1678 SPY_IndentLevel, "", hWnd, SPY_GetMsgName( msg ),
1679 msg, wParam, lParam );
1682 case SPY_DEFWNDPROC:
1683 if( SPY_ExcludeDWP ) return;
1684 TRACE("%*s(%08x) DefWindowProc32: %s [%04x] wp=%08x lp=%08lx\n",
1685 SPY_IndentLevel, "", hWnd, SPY_GetMsgName( msg ),
1686 msg, wParam, lParam );
1689 SPY_IndentLevel += SPY_INDENT_UNIT;
1693 /***********************************************************************
1696 void SPY_ExitMessage( INT iFlag, HWND hWnd, UINT msg, LRESULT lReturn,
1697 WPARAM wParam, LPARAM lParam )
1701 if (!TRACE_ON(message) || SPY_EXCLUDE(msg) ||
1702 (SPY_ExcludeDWP && (iFlag == SPY_RESULT_DEFWND16 || iFlag == SPY_RESULT_DEFWND)) )
1705 if (SPY_IndentLevel) SPY_IndentLevel -= SPY_INDENT_UNIT;
1709 case SPY_RESULT_DEFWND16:
1710 TRACE(" %*s(%04x) DefWindowProc16: %s [%04x] returned %08lx\n",
1711 SPY_IndentLevel, "", hWnd, SPY_GetMsgName( msg ), msg, lReturn );
1714 case SPY_RESULT_DEFWND:
1715 TRACE(" %*s(%08x) DefWindowProc32: %s [%04x] returned %08lx\n",
1716 SPY_IndentLevel, "", hWnd, SPY_GetMsgName( msg ), msg, lReturn );
1719 case SPY_RESULT_OK16:
1720 pname = SPY_GetWndName(hWnd);
1721 TRACE(" %*s(%04x) %-16s message [%04x] %s returned %08lx\n",
1722 SPY_IndentLevel, "", hWnd, pname, msg,
1723 SPY_GetMsgName( msg ), lReturn );
1727 pname = SPY_GetWndName(hWnd);
1728 TRACE(" %*s(%08x) %-16s message [%04x] %s returned %08lx\n",
1729 SPY_IndentLevel, "", hWnd, pname, msg,
1730 SPY_GetMsgName( msg ), lReturn );
1731 SPY_DumpStructure(msg, FALSE, lParam);
1734 case SPY_RESULT_INVALIDHWND16:
1735 pname = SPY_GetWndName(hWnd);
1736 WARN(" %*s(%04x) %-16s message [%04x] %s HAS INVALID HWND\n",
1737 SPY_IndentLevel, "", hWnd, pname, msg,
1738 SPY_GetMsgName( msg ) );
1741 case SPY_RESULT_INVALIDHWND:
1742 pname = SPY_GetWndName(hWnd);
1743 WARN(" %*s(%08x) %-16s message [%04x] %s HAS INVALID HWND\n",
1744 SPY_IndentLevel, "", hWnd, pname, msg,
1745 SPY_GetMsgName( msg ) );
1751 /***********************************************************************
1758 const SPY_NOTIFY *p;
1760 if (!TRACE_ON(message)) return TRUE;
1762 PROFILE_GetWineIniString( "Spy", "Include", "", buffer, sizeof(buffer) );
1763 if (buffer[0] && strcmp( buffer, "INCLUDEALL" ))
1765 TRACE("Include=%s\n", buffer );
1766 for (i = 0; i <= SPY_MAX_MSGNUM; i++)
1767 SPY_Exclude[i] = (MessageTypeNames[i] && !strstr(buffer,MessageTypeNames[i]));
1770 PROFILE_GetWineIniString( "Spy", "Exclude", "", buffer, sizeof(buffer) );
1773 TRACE("Exclude=%s\n", buffer );
1774 if (!strcmp( buffer, "EXCLUDEALL" ))
1775 for (i = 0; i <= SPY_MAX_MSGNUM; i++) SPY_Exclude[i] = TRUE;
1777 for (i = 0; i <= SPY_MAX_MSGNUM; i++)
1778 SPY_Exclude[i] = (MessageTypeNames[i] && strstr(buffer,MessageTypeNames[i]));
1781 SPY_ExcludeDWP = PROFILE_GetWineIniInt( "Spy", "ExcludeDWP", 0 );
1783 /* find last good entry in spy notify array and save addr for b-search */
1784 p = &spnfy_array[0];
1785 while (p->name) p++;
1787 end_spnfy_array = p;