2 * Message spying routines
4 * Copyright 1994, Bob Amstadt
13 #include "wine/winuser16.h"
14 #include "wine/winbase16.h"
18 #include "debugtools.h"
22 DEFAULT_DEBUG_CHANNEL(message)
24 #define SPY_MAX_MSGNUM WM_USER
25 #define SPY_INDENT_UNIT 4 /* 4 spaces */
27 static const char * const MessageTypeNames[SPY_MAX_MSGNUM + 1] =
45 "WM_CLOSE", /* 0x10 */
61 "WM_SETCURSOR", /* 0x20 */
77 "WM_SETFONT", /* 0x30 */
89 "wm_otherwindowcreated",
90 "wm_otherwindowdestroyed",
91 "wm_activateshellwindow",
95 "wm_compacting", NULL, NULL,
96 "WM_COMMNOTIFY", NULL,
97 "WM_WINDOWPOSCHANGING", /* 0x0046 */
98 "WM_WINDOWPOSCHANGED", /* 0x0047 */
101 "WM_CANCELJOURNAL", NULL, NULL,
105 "WM_INPUTLANGCHANGEREQUEST",
106 "WM_INPUTLANGCHANGE",
110 "WM_NOTIFYFORMAT", NULL, NULL,
111 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
114 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
115 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
118 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
126 "WM_SETICON", /* 0x0080 */
127 "WM_NCCREATE", /* 0x0081 */
128 "WM_NCDESTROY", /* 0x0082 */
129 "WM_NCCALCSIZE", /* 0x0083 */
130 "WM_NCHITTEST", /* 0x0084 */
131 "WM_NCPAINT", /* 0x0085 */
132 "WM_NCACTIVATE", /* 0x0086 */
133 "WM_GETDLGCODE", /* 0x0087 */
135 "WM_SYNCTASK", NULL, NULL, NULL, NULL, NULL, NULL,
138 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
139 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
142 "WM_NCMOUSEMOVE", /* 0x00A0 */
143 "WM_NCLBUTTONDOWN", /* 0x00A1 */
144 "WM_NCLBUTTONUP", /* 0x00A2 */
145 "WM_NCLBUTTONDBLCLK", /* 0x00A3 */
146 "WM_NCRBUTTONDOWN", /* 0x00A4 */
147 "WM_NCRBUTTONUP", /* 0x00A5 */
148 "WM_NCRBUTTONDBLCLK", /* 0x00A6 */
149 "WM_NCMBUTTONDOWN", /* 0x00A7 */
150 "WM_NCMBUTTONUP", /* 0x00A8 */
151 "WM_NCMBUTTONDBLCLK", /* 0x00A9 */
152 NULL, NULL, NULL, NULL, NULL, NULL,
154 /* 0x00B0 - Win32 Edit controls */
155 "EM_GETSEL32", /* 0x00b0 */
156 "EM_SETSEL32", /* 0x00b1 */
157 "EM_GETRECT32", /* 0x00b2 */
158 "EM_SETRECT32", /* 0x00b3 */
159 "EM_SETRECTNP32", /* 0x00b4 */
160 "EM_SCROLL32", /* 0x00b5 */
161 "EM_LINESCROLL32", /* 0x00b6 */
162 "EM_SCROLLCARET32", /* 0x00b7 */
163 "EM_GETMODIFY32", /* 0x00b8 */
164 "EM_SETMODIFY32", /* 0x00b9 */
165 "EM_GETLINECOUNT32", /* 0x00ba */
166 "EM_LINEINDEX32", /* 0x00bb */
167 "EM_SETHANDLE32", /* 0x00bc */
168 "EM_GETHANDLE32", /* 0x00bd */
169 "EM_GETTHUMB32", /* 0x00be */
173 "EM_LINELENGTH32", /* 0x00c1 */
174 "EM_REPLACESEL32", /* 0x00c2 */
176 "EM_GETLINE32", /* 0x00c4 */
177 "EM_LIMITTEXT32", /* 0x00c5 */
178 "EM_CANUNDO32", /* 0x00c6 */
179 "EM_UNDO32", /* 0x00c7 */
180 "EM_FMTLINES32", /* 0x00c8 */
181 "EM_LINEFROMCHAR32", /* 0x00c9 */
183 "EM_SETTABSTOPS32", /* 0x00cb */
184 "EM_SETPASSWORDCHAR32", /* 0x00cc */
185 "EM_EMPTYUNDOBUFFER32", /* 0x00cd */
186 "EM_GETFIRSTVISIBLELINE32", /* 0x00ce */
187 "EM_SETREADONLY32", /* 0x00cf */
189 "EM_SETWORDBREAKPROC32", /* 0x00d0 */
190 "EM_GETWORDBREAKPROC32", /* 0x00d1 */
191 "EM_GETPASSWORDCHAR32", /* 0x00d2 */
192 "EM_SETMARGINS32", /* 0x00d3 */
193 "EM_GETMARGINS32", /* 0x00d4 */
194 "EM_GETLIMITTEXT32", /* 0x00d5 */
195 "EM_POSFROMCHAR32", /* 0x00d6 */
196 "EM_CHARFROMPOS32", /* 0x00d7 */
197 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
199 /* 0x00E0 - Win32 Scrollbars */
200 "SBM_SETPOS32", /* 0x00e0 */
201 "SBM_GETPOS32", /* 0x00e1 */
202 "SBM_SETRANGE32", /* 0x00e2 */
203 "SBM_GETRANGE32", /* 0x00e3 */
204 "SBM_ENABLE_ARROWS32", /* 0x00e4 */
206 "SBM_SETRANGEREDRAW32", /* 0x00e6 */
208 "SBM_SETSCROLLINFO32", /* 0x00e9 */
209 "SBM_GETSCROLLINFO32", /* 0x00ea */
210 NULL, NULL, NULL, NULL, NULL,
212 /* 0x00F0 - Win32 Buttons */
213 "BM_GETCHECK32", /* 0x00f0 */
214 "BM_SETCHECK32", /* 0x00f1 */
215 "BM_GETSTATE32", /* 0x00f2 */
216 "BM_SETSTATE32", /* 0x00f3 */
217 "BM_SETSTYLE32", /* 0x00f4 */
218 "BM_CLICK32", /* 0x00f5 */
219 "BM_GETIMAGE32", /* 0x00f6 */
220 "BM_SETIMAGE32", /* 0x00f7 */
221 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
223 "WM_KEYDOWN", /* 0x0100 */
224 "WM_KEYUP", /* 0x0101 */
225 "WM_CHAR", /* 0x0102 */
226 "WM_DEADCHAR", /* 0x0103 */
227 "WM_SYSKEYDOWN", /* 0x0104 */
228 "WM_SYSKEYUP", /* 0x0105 */
229 "WM_SYSCHAR", /* 0x0106 */
230 "WM_SYSDEADCHAR", /* 0x0107 */
231 "WM_KEYLAST", /* 0x0108 */
235 "WM_INTERIM", NULL, NULL, NULL,
237 "WM_INITDIALOG", /* 0x0110 */
238 "WM_COMMAND", /* 0x0111 */
239 "WM_SYSCOMMAND", /* 0x0112 */
240 "WM_TIMER", /* 0x0113 */
241 "WM_HSCROLL", /* 0x0114 */
242 "WM_VSCROLL", /* 0x0115 */
243 "WM_INITMENU", /* 0x0116 */
244 "WM_INITMENUPOPUP", /* 0x0117 */
245 "WM_SYSTIMER", /* 0x0118 */
246 NULL, NULL, NULL, NULL, NULL, NULL,
247 "WM_MENUSELECT", /* 0x011f */
249 "WM_MENUCHAR", /* 0x0120 */
250 "WM_ENTERIDLE", /* 0x0121 */
251 NULL, NULL, NULL, NULL, NULL, NULL,
252 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
256 "WM_LBTRACKPOINT", /* 0x0131 */
257 "WM_CTLCOLORMSGBOX", /* 0x0132 */
258 "WM_CTLCOLOREDIT", /* 0x0133 */
259 "WM_CTLCOLORLISTBOX", /* 0x0134 */
260 "WM_CTLCOLORBTN", /* 0x0135 */
261 "WM_CTLCOLORDLG", /* 0x0136 */
262 "WM_CTLCOLORSCROLLBAR", /* 0x0137 */
263 "WM_CTLCOLORSTATIC", /* 0x0138 */
264 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
266 /* 0x0140 - Win32 Comboboxes */
267 "CB_GETEDITSEL32", /* 0x0140 */
268 "CB_LIMITTEXT32", /* 0x0141 */
269 "CB_SETEDITSEL32", /* 0x0142 */
270 "CB_ADDSTRING32", /* 0x0143 */
271 "CB_DELETESTRING32", /* 0x0144 */
272 "CB_DIR32", /* 0x0145 */
273 "CB_GETCOUNT32", /* 0x0146 */
274 "CB_GETCURSEL32", /* 0x0147 */
275 "CB_GETLBTEXT32", /* 0x0148 */
276 "CB_GETLBTEXTLEN32", /* 0x0149 */
277 "CB_INSERTSTRING32", /* 0x014a */
278 "CB_RESETCONTENT32", /* 0x014b */
279 "CB_FINDSTRING32", /* 0x014c */
280 "CB_SELECTSTRING32", /* 0x014d */
281 "CB_SETCURSEL32", /* 0x014e */
282 "CB_SHOWDROPDOWN32", /* 0x014f */
284 "CB_GETITEMDATA32", /* 0x0150 */
285 "CB_SETITEMDATA32", /* 0x0151 */
286 "CB_GETDROPPEDCONTROLRECT32",/* 0x0152 */
287 "CB_SETITEMHEIGHT32", /* 0x0153 */
288 "CB_GETITEMHEIGHT32", /* 0x0154 */
289 "CB_SETEXTENDEDUI32", /* 0x0155 */
290 "CB_GETEXTENDEDUI32", /* 0x0156 */
291 "CB_GETDROPPEDSTATE32", /* 0x0157 */
292 "CB_FINDSTRINGEXACT32", /* 0x0158 */
293 "CB_SETLOCALE32", /* 0x0159 */
294 "CB_GETLOCALE32", /* 0x015a */
295 "CB_GETTOPINDEX32", /* 0x015b */
296 "CB_SETTOPINDEX32", /* 0x015c */
297 "CB_GETHORIZONTALEXTENT32", /* 0x015d */
298 "CB_SETHORIZONTALEXTENT32", /* 0x015e */
299 "CB_GETDROPPEDWIDTH32", /* 0x015f */
301 "CB_SETDROPPEDWIDTH32", /* 0x0160 */
302 "CB_INITSTORAGE32", /* 0x0161 */
303 NULL, NULL, NULL, NULL, NULL, NULL,
304 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
306 /* 0x0170 - Win32 Static controls */
307 "STM_SETICON32", /* 0x0170 */
308 "STM_GETICON32", /* 0x0171 */
309 "STM_SETIMAGE32", /* 0x0172 */
310 "STM_GETIMAGE32", /* 0x0173 */
311 NULL, NULL, NULL, NULL,
312 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
314 /* 0x0180 - Win32 Listboxes */
315 "LB_ADDSTRING32", /* 0x0180 */
316 "LB_INSERTSTRING32", /* 0x0181 */
317 "LB_DELETESTRING32", /* 0x0182 */
318 "LB_SELITEMRANGEEX32", /* 0x0183 */
319 "LB_RESETCONTENT32", /* 0x0184 */
320 "LB_SETSEL32", /* 0x0185 */
321 "LB_SETCURSEL32", /* 0x0186 */
322 "LB_GETSEL32", /* 0x0187 */
323 "LB_GETCURSEL32", /* 0x0188 */
324 "LB_GETTEXT32", /* 0x0189 */
325 "LB_GETTEXTLEN32", /* 0x018a */
326 "LB_GETCOUNT32", /* 0x018b */
327 "LB_SELECTSTRING32", /* 0x018c */
328 "LB_DIR32", /* 0x018d */
329 "LB_GETTOPINDEX32", /* 0x018e */
330 "LB_FINDSTRING32", /* 0x018f */
332 "LB_GETSELCOUNT32", /* 0x0190 */
333 "LB_GETSELITEMS32", /* 0x0191 */
334 "LB_SETTABSTOPS32", /* 0x0192 */
335 "LB_GETHORIZONTALEXTENT32", /* 0x0193 */
336 "LB_SETHORIZONTALEXTENT32", /* 0x0194 */
337 "LB_SETCOLUMNWIDTH32", /* 0x0195 */
338 "LB_ADDFILE32", /* 0x0196 */
339 "LB_SETTOPINDEX32", /* 0x0197 */
340 "LB_GETITEMRECT32", /* 0x0198 */
341 "LB_GETITEMDATA32", /* 0x0199 */
342 "LB_SETITEMDATA32", /* 0x019a */
343 "LB_SELITEMRANGE32", /* 0x019b */
344 "LB_SETANCHORINDEX32", /* 0x019c */
345 "LB_GETANCHORINDEX32", /* 0x019d */
346 "LB_SETCARETINDEX32", /* 0x019e */
347 "LB_GETCARETINDEX32", /* 0x019f */
349 "LB_SETITEMHEIGHT32", /* 0x01a0 */
350 "LB_GETITEMHEIGHT32", /* 0x01a1 */
351 "LB_FINDSTRINGEXACT32", /* 0x01a2 */
352 "LB_CARETON32", /* 0x01a3 */
353 "LB_CARETOFF32", /* 0x01a4 */
354 "LB_SETLOCALE32", /* 0x01a5 */
355 "LB_GETLOCALE32", /* 0x01a6 */
356 "LB_SETCOUNT32", /* 0x01a7 */
357 "LB_INITSTORAGE32", /* 0x01a8 */
358 "LB_ITEMFROMPOINT32", /* 0x01a9 */
359 NULL, NULL, NULL, NULL, NULL, NULL,
362 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
363 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
366 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
367 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
370 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
371 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
374 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
375 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
378 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
379 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
381 "WM_MOUSEMOVE", /* 0x0200 */
382 "WM_LBUTTONDOWN", /* 0x0201 */
383 "WM_LBUTTONUP", /* 0x0202 */
384 "WM_LBUTTONDBLCLK", /* 0x0203 */
385 "WM_RBUTTONDOWN", /* 0x0204 */
386 "WM_RBUTTONUP", /* 0x0205 */
387 "WM_RBUTTONDBLCLK", /* 0x0206 */
388 "WM_MBUTTONDOWN", /* 0x0207 */
389 "WM_MBUTTONUP", /* 0x0208 */
390 "WM_MBUTTONDBLCLK", /* 0x0209 */
391 NULL, NULL, NULL, NULL, NULL, NULL,
393 "WM_PARENTNOTIFY", /* 0x0210 */
394 "WM_ENTERMENULOOP", /* 0x0211 */
395 "WM_EXITMENULOOP", /* 0x0212 */
396 "WM_NEXTMENU", /* 0x0213 */
401 "WM_DEVICECHANGE", NULL, NULL, NULL, NULL, NULL, NULL,
403 "WM_MDICREATE", /* 0x0220 */
404 "WM_MDIDESTROY", /* 0x0221 */
405 "WM_MDIACTIVATE", /* 0x0222 */
406 "WM_MDIRESTORE", /* 0x0223 */
407 "WM_MDINEXT", /* 0x0224 */
408 "WM_MDIMAXIMIZE", /* 0x0225 */
409 "WM_MDITILE", /* 0x0226 */
410 "WM_MDICASCADE", /* 0x0227 */
411 "WM_MDIICONARRANGE", /* 0x0228 */
412 "WM_MDIGETACTIVE", /* 0x0229 */
415 "WM_QUERYDROPOBJECT",
422 "WM_MDISETMENU", /* 0x0230 */
423 "WM_ENTERSIZEMOVE", /* 0x0231 */
424 "WM_EXITSIZEMOVE", /* 0x0232 */
425 "WM_DROPFILES", /* 0x0233 */
426 "WM_MDIREFRESHMENU", NULL, NULL, NULL,
428 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
431 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
432 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
435 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
436 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
439 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
440 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
441 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
442 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
445 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
446 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
447 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
448 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
450 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
451 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
452 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
453 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,
458 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
459 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,
464 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
466 "WM_CUT", /* 0x0300 */
472 "WM_RENDERALLFORMATS",
473 "WM_DESTROYCLIPBOARD",
476 "WM_VSCROLLCLIPBOARD",
478 "WM_ASKCBFORMATNAME",
480 "WM_HSCROLLCLIPBOARD",
481 "WM_QUERYNEWPALETTE", /* 0x030f*/
483 "WM_PALETTEISCHANGING",
485 "WM_HOTKEY", /* 0x0312 */
486 NULL, NULL, NULL, NULL,
489 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
491 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
492 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
493 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
494 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,
499 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
500 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
502 "WM_QUERYAFXWNDPROC", /* 0x0360 */
503 "WM_SIZEPARENT", /* 0x0361 */
504 "WM_SETMESSAGESTRING", /* 0x0362 */
505 "WM_IDLEUPDATECMDUI", /* 0x0363 */
506 "WM_INITIALUPDATE", /* 0x0364 */
507 "WM_COMMANDHELP", /* 0x0365 */
508 "WM_HELPHITTEST", /* 0x0366 */
509 "WM_EXITHELPMODE", /* 0x0367 */
510 "WM_RECALCPARENT", /* 0x0368 */
511 "WM_SIZECHILD", /* 0x0369 */
512 "WM_KICKIDLE", /* 0x036A */
513 "WM_QUERYCENTERWND", /* 0x036B */
514 "WM_DISABLEMODAL", /* 0x036C */
515 "WM_FLOATSTATUS", /* 0x036D */
516 "WM_ACTIVATETOPLEVEL", /* 0x036E */
517 "WM_QUERY3DCONTROLS", /* 0x036F */
519 "WM_SOCKET_NOTIFY", /* 0x0373 */
520 "WM_SOCKET_DEAD", /* 0x0374 */
521 "WM_POPMESSAGESTRING", /* 0x0375 */
522 "WM_OCC_LOADFROMSTREAM", /* 0x0376 */
523 "WM_OCC_LOADFROMSTORAGE", /* 0x0377 */
524 "WM_OCC_INITNEW", /* 0x0378 */
525 "WM_QUEUE_SENTINEL", /* 0x0379 */
526 "WM_OCC_LOADFROMSTREAM_EX", /* 0x037A */
527 "WM_OCC_LOADFROMSTORAGE_EX", /* 0x037B */
539 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
542 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
543 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
551 NULL, NULL, NULL, NULL,
552 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
555 NULL, NULL, NULL, NULL, NULL,
579 NULL, NULL, NULL, NULL, NULL, NULL,
580 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
581 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
584 "WM_DDE_INITIATE", /* 0x3E0 */
585 "WM_DDE_TERMINATE", /* 0x3E1 */
586 "WM_DDE_ADVISE", /* 0x3E2 */
587 "WM_DDE_UNADVISE", /* 0x3E3 */
588 "WM_DDE_ACK", /* 0x3E4 */
589 "WM_DDE_DATA", /* 0x3E5 */
590 "WM_DDE_REQUEST", /* 0x3E6 */
591 "WM_DDE_POKE", /* 0x3E7 */
592 "WM_DDE_EXECUTE", /* 0x3E8 */
593 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
597 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
598 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
604 #define SPY_MAX_LVMMSGNUM 139
605 static const char * const LVMMessageTypeNames[SPY_MAX_LVMMSGNUM + 1] =
607 "LVM_GETBKCOLOR", /* 1000 */
616 "LVM_DELETEALLITEMS",
617 "LVM_GETCALLBACKMASK",
618 "LVM_SETCALLBACKMASK",
622 "LVM_SETITEMPOSITION",
623 "LVM_GETITEMPOSITION",
624 "LVM_GETSTRINGWIDTHA",
631 "LVM_GETEDITCONTROL",
636 "LVM_GETCOLUMNWIDTH",
637 "LVM_SETCOLUMNWIDTH",
639 "LVM_CREATEDRAGIMAGE",
643 "LVM_GETTEXTBKCOLOR",
644 "LVM_SETTEXTBKCOLOR",
646 "LVM_GETCOUNTPERPAGE",
655 "LVM_SETITEMPOSITION32",
656 "LVM_GETSELECTEDCOUNT",
657 "LVM_GETITEMSPACING",
658 "LVM_GETISEARCHSTRINGA",
659 "LVM_SETICONSPACING",
660 "LVM_SETEXTENDEDLISTVIEWSTYLE",
661 "LVM_GETEXTENDEDLISTVIEWSTYLE",
662 "LVM_GETSUBITEMRECT",
663 "LVM_SUBITEMHITTEST",
664 "LVM_SETCOLUMNORDERARRAY",
665 "LVM_GETCOLUMNORDERARRAY",
670 "LVM_APPROXIMATEVIEWRECT",
672 "LVM_GETSELECTIONMARK",
673 "LVM_SETSELECTIONMARK",
679 "LVM_GETNUMBEROFWORKAREAS",
693 "LVM_GETSTRINGWIDTHW",
723 "LVM_GETISEARCHSTRINGW",
746 "LVM_GETBKIMAGEW" /* 0x108B */
749 #define SPY_MAX_CCMMSGNUM 6
750 static const char * const CCMMessageTypeNames[SPY_MAX_CCMMSGNUM + 1] =
754 "CCM_SETCOLORSCHEME",
755 "CCM_GETCOLORSCHEME",
757 "CCM_SETUNICODEFORMAT",
758 "CCM_GETUNICODEFORMAT"
761 static BOOL16 SPY_Exclude[SPY_MAX_MSGNUM+1];
762 static BOOL16 SPY_ExcludeDWP = 0;
763 static int SPY_IndentLevel = 0;
765 #define SPY_EXCLUDE(msg) \
766 (SPY_Exclude[(msg) > SPY_MAX_MSGNUM ? SPY_MAX_MSGNUM : (msg)])
768 /***********************************************************************
771 const char *SPY_GetMsgName( UINT msg )
773 static char msg_buffer[20];
775 if (msg <= SPY_MAX_MSGNUM)
777 if (!MessageTypeNames[msg]) return "???";
778 return MessageTypeNames[msg];
781 if (msg >= LVM_FIRST && msg <= LVM_FIRST + SPY_MAX_LVMMSGNUM)
783 if (!LVMMessageTypeNames[msg-LVM_FIRST]) return "LVM_?";
784 return LVMMessageTypeNames[msg-LVM_FIRST];
787 if (msg >= CCM_FIRST && msg <= CCM_FIRST + SPY_MAX_CCMMSGNUM)
789 if (!CCMMessageTypeNames[msg-CCM_FIRST]) return "???";
790 return CCMMessageTypeNames[msg-CCM_FIRST];
793 sprintf( msg_buffer, "WM_USER+%04x", msg - WM_USER );
797 /***********************************************************************
800 const char *SPY_GetWndName( HWND hwnd )
802 static char wnd_buffer[16];
804 WND* pWnd = WIN_FindWndPtr( hwnd );
807 INT n = sizeof(wnd_buffer) - 6;
808 LPSTR p = wnd_buffer;
813 if( pWnd->text && pWnd->text[0] != '\0' )
816 *(p++) = postfix = '\"';
817 while ((n-- > 1) && *src) *p++ = *src++;
819 else /* get class name */
824 GlobalGetAtomNameA((ATOM) GetClassWord(pWnd->hwndSelf, GCW_ATOM), p, n + 1);
825 src = p += (len = lstrlenA(p));
826 if( len >= n ) src = wnd_buffer; /* something nonzero */
829 if( *src ) for( n = 0; n < 3; n++ ) *(p++)='.';
832 WIN_ReleaseWndPtr(pWnd);
835 else lstrcpyA( wnd_buffer, "\"NULL\"" );
838 /***********************************************************************
841 void SPY_DumpStructure (UINT msg, LPARAM structure)
846 { DRAWITEMSTRUCT *lpdis = (DRAWITEMSTRUCT*) structure;
847 TRACE("DRAWITEMSTRUCT: CtlType=0x%08x CtlID=0x%08x\n", lpdis->CtlType, lpdis->CtlID);
848 TRACE("itemID=0x%08x itemAction=0x%08x itemState=0x%08x\n", lpdis->itemID, lpdis->itemAction, lpdis->itemState);
849 TRACE("hWnd=0x%04x hDC=0x%04x (%d,%d)-(%d,%d) itemData=0x%08lx\n",
850 lpdis->hwndItem, lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top, lpdis->rcItem.right, lpdis->rcItem.bottom, lpdis->itemData);
854 { MEASUREITEMSTRUCT *lpmis = (MEASUREITEMSTRUCT*) structure;
855 TRACE("MEASUREITEMSTRUCT: CtlType=0x%08x CtlID=0x%08x\n", lpmis->CtlType, lpmis->CtlID);
856 TRACE("itemID=0x%08x itemWidth=0x%08x itemHeight=0x%08x\n", lpmis->itemID, lpmis->itemWidth, lpmis->itemHeight);
857 TRACE("itemData=0x%08lx\n", lpmis->itemData);
861 { NMHDR * pnmh = (NMHDR*) structure;
862 TRACE("NMHDR hwndFrom=0x%08x idFrom=0x%08x code=0x%08x\n", pnmh->hwndFrom, pnmh->idFrom, pnmh->code);
869 /***********************************************************************
872 void SPY_EnterMessage( INT iFlag, HWND hWnd, UINT msg,
873 WPARAM wParam, LPARAM lParam )
877 if (!TRACE_ON(message) || SPY_EXCLUDE(msg)) return;
879 /* each SPY_SENDMESSAGE must be complemented by call to SPY_ExitMessage */
882 case SPY_DISPATCHMESSAGE16:
883 pname = SPY_GetWndName(hWnd);
884 TRACE("%*s(%04x) %-16s message [%04x] %s dispatched wp=%04x lp=%08lx\n",
885 SPY_IndentLevel, "", hWnd, pname, msg, SPY_GetMsgName( msg ),
889 case SPY_DISPATCHMESSAGE:
890 pname = SPY_GetWndName(hWnd);
891 TRACE("%*s(%08x) %-16s message [%04x] %s dispatched wp=%08x lp=%08lx\n",
892 SPY_IndentLevel, "", hWnd, pname, msg, SPY_GetMsgName( msg ),
896 case SPY_SENDMESSAGE16:
897 case SPY_SENDMESSAGE:
900 HTASK16 hTask = GetWindowTask16(hWnd);
902 if (hTask == GetCurrentTask()) strcpy( taskName, "self" );
903 else if (!hTask) strcpy( taskName, "Wine" );
906 sprintf( taskName, "task %04x ???", hTask );
907 GetModuleName16( hTask, taskName + 10, sizeof(taskName) - 10 );
909 pname = SPY_GetWndName(hWnd);
911 if (iFlag == SPY_SENDMESSAGE16)
912 TRACE("%*s(%04x) %-16s message [%04x] %s sent from %s wp=%04x lp=%08lx\n",
913 SPY_IndentLevel, "", hWnd, pname, msg, SPY_GetMsgName( msg ),
914 taskName, wParam, lParam );
916 { TRACE("%*s(%08x) %-16s message [%04x] %s sent from %s wp=%08x lp=%08lx\n",
917 SPY_IndentLevel, "", hWnd, pname, msg, SPY_GetMsgName( msg ),
918 taskName, wParam, lParam );
919 SPY_DumpStructure(msg, lParam);
924 case SPY_DEFWNDPROC16:
925 if( SPY_ExcludeDWP ) return;
926 TRACE("%*s(%04x) DefWindowProc16: %s [%04x] wp=%04x lp=%08lx\n",
927 SPY_IndentLevel, "", hWnd, SPY_GetMsgName( msg ),
928 msg, wParam, lParam );
932 if( SPY_ExcludeDWP ) return;
933 TRACE("%*s(%08x) DefWindowProc32: %s [%04x] wp=%08x lp=%08lx\n",
934 SPY_IndentLevel, "", hWnd, SPY_GetMsgName( msg ),
935 msg, wParam, lParam );
938 SPY_IndentLevel += SPY_INDENT_UNIT;
942 /***********************************************************************
945 void SPY_ExitMessage( INT iFlag, HWND hWnd, UINT msg, LRESULT lReturn )
949 if (!TRACE_ON(message) || SPY_EXCLUDE(msg) ||
950 (SPY_ExcludeDWP && (iFlag == SPY_RESULT_DEFWND16 || iFlag == SPY_RESULT_DEFWND)) )
953 if (SPY_IndentLevel) SPY_IndentLevel -= SPY_INDENT_UNIT;
957 case SPY_RESULT_DEFWND16:
958 TRACE(" %*s(%04x) DefWindowProc16: %s [%04x] returned %08lx\n",
959 SPY_IndentLevel, "", hWnd, SPY_GetMsgName( msg ), msg, lReturn );
962 case SPY_RESULT_DEFWND:
963 TRACE(" %*s(%08x) DefWindowProc32: %s [%04x] returned %08lx\n",
964 SPY_IndentLevel, "", hWnd, SPY_GetMsgName( msg ), msg, lReturn );
967 case SPY_RESULT_OK16:
968 pname = SPY_GetWndName(hWnd);
969 TRACE(" %*s(%04x) %-16s message [%04x] %s returned %08lx\n",
970 SPY_IndentLevel, "", hWnd, pname, msg,
971 SPY_GetMsgName( msg ), lReturn );
975 pname = SPY_GetWndName(hWnd);
976 TRACE(" %*s(%08x) %-16s message [%04x] %s returned %08lx\n",
977 SPY_IndentLevel, "", hWnd, pname, msg,
978 SPY_GetMsgName( msg ), lReturn );
981 case SPY_RESULT_INVALIDHWND16:
982 pname = SPY_GetWndName(hWnd);
983 WARN(" %*s(%04x) %-16s message [%04x] %s HAS INVALID HWND\n",
984 SPY_IndentLevel, "", hWnd, pname, msg,
985 SPY_GetMsgName( msg ) );
988 case SPY_RESULT_INVALIDHWND:
989 pname = SPY_GetWndName(hWnd);
990 WARN(" %*s(%08x) %-16s message [%04x] %s HAS INVALID HWND\n",
991 SPY_IndentLevel, "", hWnd, pname, msg,
992 SPY_GetMsgName( msg ) );
998 /***********************************************************************
1006 if (!TRACE_ON(message)) return TRUE;
1008 PROFILE_GetWineIniString( "Spy", "Include", "", buffer, sizeof(buffer) );
1009 if (buffer[0] && strcmp( buffer, "INCLUDEALL" ))
1011 TRACE("Include=%s\n", buffer );
1012 for (i = 0; i <= SPY_MAX_MSGNUM; i++)
1013 SPY_Exclude[i] = (MessageTypeNames[i] && !strstr(buffer,MessageTypeNames[i]));
1016 PROFILE_GetWineIniString( "Spy", "Exclude", "", buffer, sizeof(buffer) );
1019 TRACE("Exclude=%s\n", buffer );
1020 if (!strcmp( buffer, "EXCLUDEALL" ))
1021 for (i = 0; i <= SPY_MAX_MSGNUM; i++) SPY_Exclude[i] = TRUE;
1023 for (i = 0; i <= SPY_MAX_MSGNUM; i++)
1024 SPY_Exclude[i] = (MessageTypeNames[i] && strstr(buffer,MessageTypeNames[i]));
1027 SPY_ExcludeDWP = PROFILE_GetWineIniInt( "Spy", "ExcludeDWP", 0 );