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 139
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",
643 "LVM_CREATEDRAGIMAGE",
647 "LVM_GETTEXTBKCOLOR",
648 "LVM_SETTEXTBKCOLOR",
650 "LVM_GETCOUNTPERPAGE",
659 "LVM_SETITEMPOSITION32",
660 "LVM_GETSELECTEDCOUNT",
661 "LVM_GETITEMSPACING",
662 "LVM_GETISEARCHSTRINGA",
663 "LVM_SETICONSPACING",
664 "LVM_SETEXTENDEDLISTVIEWSTYLE",
665 "LVM_GETEXTENDEDLISTVIEWSTYLE",
666 "LVM_GETSUBITEMRECT",
667 "LVM_SUBITEMHITTEST",
668 "LVM_SETCOLUMNORDERARRAY",
669 "LVM_GETCOLUMNORDERARRAY",
674 "LVM_APPROXIMATEVIEWRECT",
676 "LVM_GETSELECTIONMARK",
677 "LVM_SETSELECTIONMARK",
683 "LVM_GETNUMBEROFWORKAREAS",
697 "LVM_GETSTRINGWIDTHW",
727 "LVM_GETISEARCHSTRINGW",
750 "LVM_GETBKIMAGEW" /* 0x108B */
753 #define SPY_MAX_CCMMSGNUM 6
754 static const char * const CCMMessageTypeNames[SPY_MAX_CCMMSGNUM + 1] =
758 "CCM_SETCOLORSCHEME",
759 "CCM_GETCOLORSCHEME",
761 "CCM_SETUNICODEFORMAT",
762 "CCM_GETUNICODEFORMAT"
765 /* Virtual key names */
766 #define SPY_MAX_VKKEYSNUM 255
767 static const char * const VK_KeyNames[SPY_MAX_VKKEYSNUM + 1] =
770 "VK_LBUTTON", /* 0x01 */
771 "VK_RBUTTON", /* 0x02 */
772 "VK_CANCEL", /* 0x03 */
773 "VK_MBUTTON", /* 0x04 */
777 "VK_BACK", /* 0x08 */
781 "VK_CLEAR", /* 0x0C */
782 "VK_RETURN", /* 0x0D */
785 "VK_SHIFT", /* 0x10 */
786 "VK_CONTROL", /* 0x11 */
787 "VK_MENU", /* 0x12 */
788 "VK_PAUSE", /* 0x13 */
789 "VK_CAPITAL", /* 0x14 */
796 "VK_ESCAPE", /* 0x1B */
801 "VK_SPACE", /* 0x20 */
802 "VK_PRIOR", /* 0x21 */
803 "VK_NEXT", /* 0x22 */
805 "VK_HOME", /* 0x24 */
806 "VK_LEFT", /* 0x25 */
808 "VK_RIGHT", /* 0x27 */
809 "VK_DOWN", /* 0x28 */
810 "VK_SELECT", /* 0x29 */
811 "VK_PRINT", /* 0x2A */
812 "VK_EXECUTE", /* 0x2B */
813 "VK_SNAPSHOT", /* 0x2C */
814 "VK_INSERT", /* 0x2D */
815 "VK_DELETE", /* 0x2E */
816 "VK_HELP", /* 0x2F */
860 "VK_LWIN", /* 0x5B */
861 "VK_RWIN", /* 0x5C */
862 "VK_APPS", /* 0x5D */
865 "VK_NUMPAD0", /* 0x60 */
866 "VK_NUMPAD1", /* 0x61 */
867 "VK_NUMPAD2", /* 0x62 */
868 "VK_NUMPAD3", /* 0x63 */
869 "VK_NUMPAD4", /* 0x64 */
870 "VK_NUMPAD5", /* 0x65 */
871 "VK_NUMPAD6", /* 0x66 */
872 "VK_NUMPAD7", /* 0x67 */
873 "VK_NUMPAD8", /* 0x68 */
874 "VK_NUMPAD9", /* 0x69 */
875 "VK_MULTIPLY", /* 0x6A */
877 "VK_SEPARATOR", /* 0x6C */
878 "VK_SUBTRACT", /* 0x6D */
879 "VK_DECIMAL", /* 0x6E */
880 "VK_DIVIDE", /* 0x6F */
913 "VK_NUMLOCK", /* 0x90 */
914 "VK_SCROLL", /* 0x91 */
929 "VK_LSHIFT", /* 0xA0 */
930 "VK_RSHIFT", /* 0xA1 */
931 "VK_LCONTROL", /* 0xA2 */
932 "VK_RCONTROL", /* 0xA3 */
933 "VK_LMENU", /* 0xA4 */
934 "VK_RMENU", /* 0xA5 */
955 "VK_OEM_1", /* 0xBA */
956 "VK_OEM_PLUS", /* 0xBB */
957 "VK_OEM_COMMA", /* 0xBC */
958 "VK_OEM_MINUS", /* 0xBD */
959 "VK_OEM_PERIOD", /* 0xBE */
960 "VK_OEM_2", /* 0xBF */
961 "VK_OEM_3", /* 0xC0 */
988 "VK_OEM_4", /* 0xDB */
989 "VK_OEM_5", /* 0xDC */
990 "VK_OEM_6", /* 0xDD */
991 "VK_OEM_7", /* 0xDE */
992 "VK_OEM_8", /* 0xDF */
994 "VK_OEM_AX", /* 0xE1 */
995 "VK_OEM_102", /* 0xE2 */
996 "VK_ICO_HELP", /* 0xE3 */
997 "VK_ICO_00", /* 0xE4 */
998 "VK_PROCESSKEY", /* 0xE5 */
1015 "VK_ATTN", /* 0xF6 */
1016 "VK_CRSEL", /* 0xF7 */
1017 "VK_EXSEL", /* 0xF8 */
1018 "VK_EREOF", /* 0xF9 */
1019 "VK_PLAY", /* 0xFA */
1020 "VK_ZOOM", /* 0xFB */
1021 "VK_NONAME", /* 0xFC */
1022 "VK_PA1", /* 0xFD */
1023 "VK_OEM_CLEAR", /* 0xFE */
1027 static BOOL16 SPY_Exclude[SPY_MAX_MSGNUM+1];
1028 static BOOL16 SPY_ExcludeDWP = 0;
1029 static int SPY_IndentLevel = 0;
1031 #define SPY_EXCLUDE(msg) \
1032 (SPY_Exclude[(msg) > SPY_MAX_MSGNUM ? SPY_MAX_MSGNUM : (msg)])
1034 /***********************************************************************
1037 const char *SPY_GetMsgName( UINT msg )
1039 static char msg_buffer[20];
1041 if (msg <= SPY_MAX_MSGNUM)
1043 if (!MessageTypeNames[msg]) return "???";
1044 return MessageTypeNames[msg];
1047 if (msg >= LVM_FIRST && msg <= LVM_FIRST + SPY_MAX_LVMMSGNUM)
1049 if (!LVMMessageTypeNames[msg-LVM_FIRST]) return "LVM_?";
1050 return LVMMessageTypeNames[msg-LVM_FIRST];
1053 if (msg >= CCM_FIRST && msg <= CCM_FIRST + SPY_MAX_CCMMSGNUM)
1055 if (!CCMMessageTypeNames[msg-CCM_FIRST]) return "???";
1056 return CCMMessageTypeNames[msg-CCM_FIRST];
1059 sprintf( msg_buffer, "WM_USER+%04x", msg - WM_USER );
1063 /***********************************************************************
1066 const char *SPY_GetWndName( HWND hwnd )
1068 static char wnd_buffer[16];
1070 WND* pWnd = WIN_FindWndPtr( hwnd );
1073 INT n = sizeof(wnd_buffer) - 6;
1074 LPSTR p = wnd_buffer;
1077 if( pWnd->text && pWnd->text[0] != '\0' )
1079 LPWSTR src = pWnd->text;
1080 *(p++) = postfix = '\"';
1081 while ((n-- > 1) && *src) *p++ = *src++;
1082 if( *src ) for( n = 0; n < 3; n++ ) *(p++)='.';
1084 else /* get class name */
1087 GlobalGetAtomNameA((ATOM) GetClassWord(pWnd->hwndSelf, GCW_ATOM), p, n + 1);
1093 WIN_ReleaseWndPtr(pWnd);
1096 else strcpy( wnd_buffer, "\"NULL\"" );
1100 /***********************************************************************
1103 const char *SPY_GetVKeyName(WPARAM wParam)
1105 const char *vk_key_name;
1107 if(wParam <= SPY_MAX_VKKEYSNUM && VK_KeyNames[wParam])
1108 vk_key_name = VK_KeyNames[wParam];
1110 vk_key_name = "VK_???";
1115 /***********************************************************************
1118 void SPY_DumpStructure (UINT msg, BOOL enter, LPARAM structure)
1124 { DRAWITEMSTRUCT *lpdis = (DRAWITEMSTRUCT*) structure;
1125 TRACE("DRAWITEMSTRUCT: CtlType=0x%08x CtlID=0x%08x\n", lpdis->CtlType, lpdis->CtlID);
1126 TRACE("itemID=0x%08x itemAction=0x%08x itemState=0x%08x\n", lpdis->itemID, lpdis->itemAction, lpdis->itemState);
1127 TRACE("hWnd=0x%04x hDC=0x%04x (%d,%d)-(%d,%d) itemData=0x%08lx\n",
1128 lpdis->hwndItem, lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top, lpdis->rcItem.right, lpdis->rcItem.bottom, lpdis->itemData);
1131 case WM_MEASUREITEM:
1132 { MEASUREITEMSTRUCT *lpmis = (MEASUREITEMSTRUCT*) structure;
1133 TRACE("MEASUREITEMSTRUCT: CtlType=0x%08x CtlID=0x%08x\n", lpmis->CtlType, lpmis->CtlID);
1134 TRACE("itemID=0x%08x itemWidth=0x%08x itemHeight=0x%08x\n", lpmis->itemID, lpmis->itemWidth, lpmis->itemHeight);
1135 TRACE("itemData=0x%08lx\n", lpmis->itemData);
1138 case WM_STYLECHANGED:
1140 case WM_STYLECHANGING:
1141 { LPSTYLESTRUCT ss = (LPSTYLESTRUCT) structure;
1142 TRACE("STYLESTRUCT: StyleOld=0x%08lx, StyleNew=0x%08lx\n",
1143 ss->styleOld, ss->styleNew);
1148 { NMHDR * pnmh = (NMHDR*) structure;
1149 TRACE("NMHDR hwndFrom=0x%08x idFrom=0x%08x code=0x%08x\n", pnmh->hwndFrom, pnmh->idFrom, pnmh->code);
1156 /***********************************************************************
1159 void SPY_EnterMessage( INT iFlag, HWND hWnd, UINT msg,
1160 WPARAM wParam, LPARAM lParam )
1164 if (!TRACE_ON(message) || SPY_EXCLUDE(msg)) return;
1166 /* each SPY_SENDMESSAGE must be complemented by call to SPY_ExitMessage */
1169 case SPY_DISPATCHMESSAGE16:
1170 pname = SPY_GetWndName(hWnd);
1171 TRACE("%*s(%04x) %-16s message [%04x] %s dispatched wp=%04x lp=%08lx\n",
1172 SPY_IndentLevel, "", hWnd, pname, msg, SPY_GetMsgName( msg ),
1176 case SPY_DISPATCHMESSAGE:
1177 pname = SPY_GetWndName(hWnd);
1178 TRACE("%*s(%08x) %-16s message [%04x] %s dispatched wp=%08x lp=%08lx\n",
1179 SPY_IndentLevel, "", hWnd, pname, msg, SPY_GetMsgName( msg ),
1183 case SPY_SENDMESSAGE16:
1184 case SPY_SENDMESSAGE:
1187 HTASK16 hTask = GetWindowTask16(hWnd);
1189 if (hTask == GetCurrentTask()) strcpy( taskName, "self" );
1190 else if (!hTask) strcpy( taskName, "Wine" );
1193 sprintf( taskName, "task %04x ???", hTask );
1194 GetModuleName16( hTask, taskName + 10, sizeof(taskName) - 10 );
1196 pname = SPY_GetWndName(hWnd);
1198 if (iFlag == SPY_SENDMESSAGE16)
1199 TRACE("%*s(%04x) %-16s message [%04x] %s sent from %s wp=%04x lp=%08lx\n",
1200 SPY_IndentLevel, "", hWnd, pname, msg, SPY_GetMsgName( msg ),
1201 taskName, wParam, lParam );
1203 { TRACE("%*s(%08x) %-16s message [%04x] %s sent from %s wp=%08x lp=%08lx\n",
1204 SPY_IndentLevel, "", hWnd, pname, msg, SPY_GetMsgName( msg ),
1205 taskName, wParam, lParam );
1206 SPY_DumpStructure(msg, TRUE, lParam);
1211 case SPY_DEFWNDPROC16:
1212 if( SPY_ExcludeDWP ) return;
1213 TRACE("%*s(%04x) DefWindowProc16: %s [%04x] wp=%04x lp=%08lx\n",
1214 SPY_IndentLevel, "", hWnd, SPY_GetMsgName( msg ),
1215 msg, wParam, lParam );
1218 case SPY_DEFWNDPROC:
1219 if( SPY_ExcludeDWP ) return;
1220 TRACE("%*s(%08x) DefWindowProc32: %s [%04x] wp=%08x lp=%08lx\n",
1221 SPY_IndentLevel, "", hWnd, SPY_GetMsgName( msg ),
1222 msg, wParam, lParam );
1225 SPY_IndentLevel += SPY_INDENT_UNIT;
1229 /***********************************************************************
1232 void SPY_ExitMessage( INT iFlag, HWND hWnd, UINT msg, LRESULT lReturn,
1233 WPARAM wParam, LPARAM lParam )
1237 if (!TRACE_ON(message) || SPY_EXCLUDE(msg) ||
1238 (SPY_ExcludeDWP && (iFlag == SPY_RESULT_DEFWND16 || iFlag == SPY_RESULT_DEFWND)) )
1241 if (SPY_IndentLevel) SPY_IndentLevel -= SPY_INDENT_UNIT;
1245 case SPY_RESULT_DEFWND16:
1246 TRACE(" %*s(%04x) DefWindowProc16: %s [%04x] returned %08lx\n",
1247 SPY_IndentLevel, "", hWnd, SPY_GetMsgName( msg ), msg, lReturn );
1250 case SPY_RESULT_DEFWND:
1251 TRACE(" %*s(%08x) DefWindowProc32: %s [%04x] returned %08lx\n",
1252 SPY_IndentLevel, "", hWnd, SPY_GetMsgName( msg ), msg, lReturn );
1255 case SPY_RESULT_OK16:
1256 pname = SPY_GetWndName(hWnd);
1257 TRACE(" %*s(%04x) %-16s message [%04x] %s returned %08lx\n",
1258 SPY_IndentLevel, "", hWnd, pname, msg,
1259 SPY_GetMsgName( msg ), lReturn );
1263 pname = SPY_GetWndName(hWnd);
1264 TRACE(" %*s(%08x) %-16s message [%04x] %s returned %08lx\n",
1265 SPY_IndentLevel, "", hWnd, pname, msg,
1266 SPY_GetMsgName( msg ), lReturn );
1267 SPY_DumpStructure(msg, FALSE, lParam);
1270 case SPY_RESULT_INVALIDHWND16:
1271 pname = SPY_GetWndName(hWnd);
1272 WARN(" %*s(%04x) %-16s message [%04x] %s HAS INVALID HWND\n",
1273 SPY_IndentLevel, "", hWnd, pname, msg,
1274 SPY_GetMsgName( msg ) );
1277 case SPY_RESULT_INVALIDHWND:
1278 pname = SPY_GetWndName(hWnd);
1279 WARN(" %*s(%08x) %-16s message [%04x] %s HAS INVALID HWND\n",
1280 SPY_IndentLevel, "", hWnd, pname, msg,
1281 SPY_GetMsgName( msg ) );
1287 /***********************************************************************
1295 if (!TRACE_ON(message)) return TRUE;
1297 PROFILE_GetWineIniString( "Spy", "Include", "", buffer, sizeof(buffer) );
1298 if (buffer[0] && strcmp( buffer, "INCLUDEALL" ))
1300 TRACE("Include=%s\n", buffer );
1301 for (i = 0; i <= SPY_MAX_MSGNUM; i++)
1302 SPY_Exclude[i] = (MessageTypeNames[i] && !strstr(buffer,MessageTypeNames[i]));
1305 PROFILE_GetWineIniString( "Spy", "Exclude", "", buffer, sizeof(buffer) );
1308 TRACE("Exclude=%s\n", buffer );
1309 if (!strcmp( buffer, "EXCLUDEALL" ))
1310 for (i = 0; i <= SPY_MAX_MSGNUM; i++) SPY_Exclude[i] = TRUE;
1312 for (i = 0; i <= SPY_MAX_MSGNUM; i++)
1313 SPY_Exclude[i] = (MessageTypeNames[i] && strstr(buffer,MessageTypeNames[i]));
1316 SPY_ExcludeDWP = PROFILE_GetWineIniInt( "Spy", "ExcludeDWP", 0 );