2 * Message spying routines
4 * Copyright 1994, Bob Amstadt
14 #include "wine/winuser16.h"
15 #include "wine/winbase16.h"
16 #include "wine/unicode.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_GETSEL", /* 0x00b0 */
156 "EM_SETSEL", /* 0x00b1 */
157 "EM_GETRECT", /* 0x00b2 */
158 "EM_SETRECT", /* 0x00b3 */
159 "EM_SETRECTNP", /* 0x00b4 */
160 "EM_SCROLL", /* 0x00b5 */
161 "EM_LINESCROLL", /* 0x00b6 */
162 "EM_SCROLLCARET", /* 0x00b7 */
163 "EM_GETMODIFY", /* 0x00b8 */
164 "EM_SETMODIFY", /* 0x00b9 */
165 "EM_GETLINECOUNT", /* 0x00ba */
166 "EM_LINEINDEX", /* 0x00bb */
167 "EM_SETHANDLE", /* 0x00bc */
168 "EM_GETHANDLE", /* 0x00bd */
169 "EM_GETTHUMB", /* 0x00be */
173 "EM_LINELENGTH", /* 0x00c1 */
174 "EM_REPLACESEL", /* 0x00c2 */
176 "EM_GETLINE", /* 0x00c4 */
177 "EM_LIMITTEXT", /* 0x00c5 */
178 "EM_CANUNDO", /* 0x00c6 */
179 "EM_UNDO", /* 0x00c7 */
180 "EM_FMTLINES", /* 0x00c8 */
181 "EM_LINEFROMCHAR", /* 0x00c9 */
183 "EM_SETTABSTOPS", /* 0x00cb */
184 "EM_SETPASSWORDCHAR", /* 0x00cc */
185 "EM_EMPTYUNDOBUFFER", /* 0x00cd */
186 "EM_GETFIRSTVISIBLELINE", /* 0x00ce */
187 "EM_SETREADONLY", /* 0x00cf */
189 "EM_SETWORDBREAKPROC", /* 0x00d0 */
190 "EM_GETWORDBREAKPROC", /* 0x00d1 */
191 "EM_GETPASSWORDCHAR", /* 0x00d2 */
192 "EM_SETMARGINS", /* 0x00d3 */
193 "EM_GETMARGINS", /* 0x00d4 */
194 "EM_GETLIMITTEXT", /* 0x00d5 */
195 "EM_POSFROMCHAR", /* 0x00d6 */
196 "EM_CHARFROMPOS", /* 0x00d7 */
197 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
199 /* 0x00E0 - Win32 Scrollbars */
200 "SBM_SETPOS", /* 0x00e0 */
201 "SBM_GETPOS", /* 0x00e1 */
202 "SBM_SETRANGE", /* 0x00e2 */
203 "SBM_GETRANGE", /* 0x00e3 */
204 "SBM_ENABLE_ARROWS", /* 0x00e4 */
206 "SBM_SETRANGEREDRAW", /* 0x00e6 */
208 "SBM_SETSCROLLINFO", /* 0x00e9 */
209 "SBM_GETSCROLLINFO", /* 0x00ea */
210 NULL
, NULL
, NULL
, NULL
, NULL
,
212 /* 0x00F0 - Win32 Buttons */
213 "BM_GETCHECK", /* 0x00f0 */
214 "BM_SETCHECK", /* 0x00f1 */
215 "BM_GETSTATE", /* 0x00f2 */
216 "BM_SETSTATE", /* 0x00f3 */
217 "BM_SETSTYLE", /* 0x00f4 */
218 "BM_CLICK", /* 0x00f5 */
219 "BM_GETIMAGE", /* 0x00f6 */
220 "BM_SETIMAGE", /* 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 */
236 "WM_IME_STARTCOMPOSITION", /* 0x010d */
237 "WM_IME_ENDCOMPOSITION", /* 0x010e */
238 "WM_IME_COMPOSITION", /* 0x010f */
240 "WM_INITDIALOG", /* 0x0110 */
241 "WM_COMMAND", /* 0x0111 */
242 "WM_SYSCOMMAND", /* 0x0112 */
243 "WM_TIMER", /* 0x0113 */
244 "WM_HSCROLL", /* 0x0114 */
245 "WM_VSCROLL", /* 0x0115 */
246 "WM_INITMENU", /* 0x0116 */
247 "WM_INITMENUPOPUP", /* 0x0117 */
248 "WM_SYSTIMER", /* 0x0118 */
249 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
250 "WM_MENUSELECT", /* 0x011f */
252 "WM_MENUCHAR", /* 0x0120 */
253 "WM_ENTERIDLE", /* 0x0121 */
255 "WM_MENURBUTTONUP", /* 0x0122 */
256 "WM_MENUDRAG", /* 0x0123 */
257 "WM_MENUGETOBJECT", /* 0x0124 */
258 "WM_UNINITMENUPOPUP", /* 0x0125 */
259 "WM_MENUCOMMAND", /* 0x0126 */
260 "WM_CHANGEUISTATE", /* 0x0127 */
261 "WM_UPDATEUISTATE", /* 0x0128 */
262 "WM_QUERYUISTATE", /* 0x0129 */
264 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
268 "WM_LBTRACKPOINT", /* 0x0131 */
269 "WM_CTLCOLORMSGBOX", /* 0x0132 */
270 "WM_CTLCOLOREDIT", /* 0x0133 */
271 "WM_CTLCOLORLISTBOX", /* 0x0134 */
272 "WM_CTLCOLORBTN", /* 0x0135 */
273 "WM_CTLCOLORDLG", /* 0x0136 */
274 "WM_CTLCOLORSCROLLBAR", /* 0x0137 */
275 "WM_CTLCOLORSTATIC", /* 0x0138 */
276 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
278 /* 0x0140 - Win32 Comboboxes */
279 "CB_GETEDITSEL", /* 0x0140 */
280 "CB_LIMITTEXT", /* 0x0141 */
281 "CB_SETEDITSEL", /* 0x0142 */
282 "CB_ADDSTRING", /* 0x0143 */
283 "CB_DELETESTRING", /* 0x0144 */
284 "CB_DIR", /* 0x0145 */
285 "CB_GETCOUNT", /* 0x0146 */
286 "CB_GETCURSEL", /* 0x0147 */
287 "CB_GETLBTEXT", /* 0x0148 */
288 "CB_GETLBTEXTLEN", /* 0x0149 */
289 "CB_INSERTSTRING", /* 0x014a */
290 "CB_RESETCONTENT", /* 0x014b */
291 "CB_FINDSTRING", /* 0x014c */
292 "CB_SELECTSTRING", /* 0x014d */
293 "CB_SETCURSEL", /* 0x014e */
294 "CB_SHOWDROPDOWN", /* 0x014f */
296 "CB_GETITEMDATA", /* 0x0150 */
297 "CB_SETITEMDATA", /* 0x0151 */
298 "CB_GETDROPPEDCONTROLRECT", /* 0x0152 */
299 "CB_SETITEMHEIGHT", /* 0x0153 */
300 "CB_GETITEMHEIGHT", /* 0x0154 */
301 "CB_SETEXTENDEDUI", /* 0x0155 */
302 "CB_GETEXTENDEDUI", /* 0x0156 */
303 "CB_GETDROPPEDSTATE", /* 0x0157 */
304 "CB_FINDSTRINGEXACT", /* 0x0158 */
305 "CB_SETLOCALE", /* 0x0159 */
306 "CB_GETLOCALE", /* 0x015a */
307 "CB_GETTOPINDEX", /* 0x015b */
308 "CB_SETTOPINDEX", /* 0x015c */
309 "CB_GETHORIZONTALEXTENT", /* 0x015d */
310 "CB_SETHORIZONTALEXTENT", /* 0x015e */
311 "CB_GETDROPPEDWIDTH", /* 0x015f */
313 "CB_SETDROPPEDWIDTH", /* 0x0160 */
314 "CB_INITSTORAGE", /* 0x0161 */
315 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
316 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
318 /* 0x0170 - Win32 Static controls */
319 "STM_SETICON", /* 0x0170 */
320 "STM_GETICON", /* 0x0171 */
321 "STM_SETIMAGE", /* 0x0172 */
322 "STM_GETIMAGE", /* 0x0173 */
323 NULL
, NULL
, NULL
, NULL
,
324 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
326 /* 0x0180 - Win32 Listboxes */
327 "LB_ADDSTRING", /* 0x0180 */
328 "LB_INSERTSTRING", /* 0x0181 */
329 "LB_DELETESTRING", /* 0x0182 */
330 "LB_SELITEMRANGEEX", /* 0x0183 */
331 "LB_RESETCONTENT", /* 0x0184 */
332 "LB_SETSEL", /* 0x0185 */
333 "LB_SETCURSEL", /* 0x0186 */
334 "LB_GETSEL", /* 0x0187 */
335 "LB_GETCURSEL", /* 0x0188 */
336 "LB_GETTEXT", /* 0x0189 */
337 "LB_GETTEXTLEN", /* 0x018a */
338 "LB_GETCOUNT", /* 0x018b */
339 "LB_SELECTSTRING", /* 0x018c */
340 "LB_DIR", /* 0x018d */
341 "LB_GETTOPINDEX", /* 0x018e */
342 "LB_FINDSTRING", /* 0x018f */
344 "LB_GETSELCOUNT", /* 0x0190 */
345 "LB_GETSELITEMS", /* 0x0191 */
346 "LB_SETTABSTOPS", /* 0x0192 */
347 "LB_GETHORIZONTALEXTENT", /* 0x0193 */
348 "LB_SETHORIZONTALEXTENT", /* 0x0194 */
349 "LB_SETCOLUMNWIDTH", /* 0x0195 */
350 "LB_ADDFILE", /* 0x0196 */
351 "LB_SETTOPINDEX", /* 0x0197 */
352 "LB_GETITEMRECT", /* 0x0198 */
353 "LB_GETITEMDATA", /* 0x0199 */
354 "LB_SETITEMDATA", /* 0x019a */
355 "LB_SELITEMRANGE", /* 0x019b */
356 "LB_SETANCHORINDEX", /* 0x019c */
357 "LB_GETANCHORINDEX", /* 0x019d */
358 "LB_SETCARETINDEX", /* 0x019e */
359 "LB_GETCARETINDEX", /* 0x019f */
361 "LB_SETITEMHEIGHT", /* 0x01a0 */
362 "LB_GETITEMHEIGHT", /* 0x01a1 */
363 "LB_FINDSTRINGEXACT", /* 0x01a2 */
364 "LB_CARETON", /* 0x01a3 */
365 "LB_CARETOFF", /* 0x01a4 */
366 "LB_SETLOCALE", /* 0x01a5 */
367 "LB_GETLOCALE", /* 0x01a6 */
368 "LB_SETCOUNT", /* 0x01a7 */
369 "LB_INITSTORAGE", /* 0x01a8 */
370 "LB_ITEMFROMPOINT", /* 0x01a9 */
371 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
,
382 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
383 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
386 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
387 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
390 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
391 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
393 "WM_MOUSEMOVE", /* 0x0200 */
394 "WM_LBUTTONDOWN", /* 0x0201 */
395 "WM_LBUTTONUP", /* 0x0202 */
396 "WM_LBUTTONDBLCLK", /* 0x0203 */
397 "WM_RBUTTONDOWN", /* 0x0204 */
398 "WM_RBUTTONUP", /* 0x0205 */
399 "WM_RBUTTONDBLCLK", /* 0x0206 */
400 "WM_MBUTTONDOWN", /* 0x0207 */
401 "WM_MBUTTONUP", /* 0x0208 */
402 "WM_MBUTTONDBLCLK", /* 0x0209 */
403 "WM_MOUSEWHEEL", /* 0x020A */
404 NULL
, NULL
, NULL
, NULL
, NULL
,
406 "WM_PARENTNOTIFY", /* 0x0210 */
407 "WM_ENTERMENULOOP", /* 0x0211 */
408 "WM_EXITMENULOOP", /* 0x0212 */
409 "WM_NEXTMENU", /* 0x0213 */
414 "WM_DEVICECHANGE", NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
416 "WM_MDICREATE", /* 0x0220 */
417 "WM_MDIDESTROY", /* 0x0221 */
418 "WM_MDIACTIVATE", /* 0x0222 */
419 "WM_MDIRESTORE", /* 0x0223 */
420 "WM_MDINEXT", /* 0x0224 */
421 "WM_MDIMAXIMIZE", /* 0x0225 */
422 "WM_MDITILE", /* 0x0226 */
423 "WM_MDICASCADE", /* 0x0227 */
424 "WM_MDIICONARRANGE", /* 0x0228 */
425 "WM_MDIGETACTIVE", /* 0x0229 */
428 "WM_QUERYDROPOBJECT",
435 "WM_MDISETMENU", /* 0x0230 */
436 "WM_ENTERSIZEMOVE", /* 0x0231 */
437 "WM_EXITSIZEMOVE", /* 0x0232 */
438 "WM_DROPFILES", /* 0x0233 */
439 "WM_MDIREFRESHMENU", NULL
, NULL
, NULL
,
441 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
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
449 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
,
454 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
455 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
458 NULL
, "WM_IME_SETCONTEXT", "WM_IME_NOTIFY", "WM_IME_CONTROL", "WM_IME_COMPOSITIONFULL", "WM_IME_SELECT", "WM_IME_CHAR", NULL
,
459 "WM_IME_REQUEST", NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
460 "WM_IME_KEYDOWN", "WM_IME_KEYUP", NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
461 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
464 NULL
, "WM_MOUSEHOVER", NULL
, "WM_MOUSELEAVE", 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
,
470 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
471 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
472 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
473 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
475 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
476 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
477 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
478 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
480 "WM_CUT", /* 0x0300 */
486 "WM_RENDERALLFORMATS",
487 "WM_DESTROYCLIPBOARD",
490 "WM_VSCROLLCLIPBOARD",
492 "WM_ASKCBFORMATNAME",
494 "WM_HSCROLLCLIPBOARD",
495 "WM_QUERYNEWPALETTE", /* 0x030f*/
497 "WM_PALETTEISCHANGING",
499 "WM_HOTKEY", /* 0x0312 */
500 NULL
, NULL
, NULL
, NULL
,
503 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
505 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
506 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
507 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
508 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
511 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
512 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
513 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
514 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
516 "WM_QUERYAFXWNDPROC", /* 0x0360 */
517 "WM_SIZEPARENT", /* 0x0361 */
518 "WM_SETMESSAGESTRING", /* 0x0362 */
519 "WM_IDLEUPDATECMDUI", /* 0x0363 */
520 "WM_INITIALUPDATE", /* 0x0364 */
521 "WM_COMMANDHELP", /* 0x0365 */
522 "WM_HELPHITTEST", /* 0x0366 */
523 "WM_EXITHELPMODE", /* 0x0367 */
524 "WM_RECALCPARENT", /* 0x0368 */
525 "WM_SIZECHILD", /* 0x0369 */
526 "WM_KICKIDLE", /* 0x036A */
527 "WM_QUERYCENTERWND", /* 0x036B */
528 "WM_DISABLEMODAL", /* 0x036C */
529 "WM_FLOATSTATUS", /* 0x036D */
530 "WM_ACTIVATETOPLEVEL", /* 0x036E */
531 "WM_QUERY3DCONTROLS", /* 0x036F */
533 "WM_SOCKET_NOTIFY", /* 0x0373 */
534 "WM_SOCKET_DEAD", /* 0x0374 */
535 "WM_POPMESSAGESTRING", /* 0x0375 */
536 "WM_OCC_LOADFROMSTREAM", /* 0x0376 */
537 "WM_OCC_LOADFROMSTORAGE", /* 0x0377 */
538 "WM_OCC_INITNEW", /* 0x0378 */
539 "WM_QUEUE_SENTINEL", /* 0x0379 */
540 "WM_OCC_LOADFROMSTREAM_EX", /* 0x037A */
541 "WM_OCC_LOADFROMSTORAGE_EX", /* 0x037B */
545 "WM_PENWINFIRST", /* 0x0380 */
546 "WM_RCRESULT", /* 0x0381 */
547 "WM_HOOKRCRESULT", /* 0x0382 */
548 "WM_GLOBALRCCHANGE", /* 0x0383 */
549 "WM_SKB", /* 0x0384 */
550 "WM_HEDITCTL", /* 0x0385 */
552 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
553 "WM_PENWINLAST", /* 0x038F */
555 "WM_COALESCE_FIRST", /* 0x0390 */
556 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
557 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
558 "WM_COALESCE_LAST", /* 0x039F */
565 NULL
, NULL
, NULL
, NULL
,
566 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
569 NULL
, NULL
, NULL
, NULL
, NULL
,
593 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
594 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
595 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
598 "WM_DDE_INITIATE", /* 0x3E0 */
599 "WM_DDE_TERMINATE", /* 0x3E1 */
600 "WM_DDE_ADVISE", /* 0x3E2 */
601 "WM_DDE_UNADVISE", /* 0x3E3 */
602 "WM_DDE_ACK", /* 0x3E4 */
603 "WM_DDE_DATA", /* 0x3E5 */
604 "WM_DDE_REQUEST", /* 0x3E6 */
605 "WM_DDE_POKE", /* 0x3E7 */
606 "WM_DDE_EXECUTE", /* 0x3E8 */
607 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
611 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
612 NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
, NULL
,
614 "WM_USER" /* 0x0400 */
618 #define SPY_MAX_LVMMSGNUM 140
619 static const char * const LVMMessageTypeNames
[SPY_MAX_LVMMSGNUM
+ 1] =
621 "LVM_GETBKCOLOR", /* 1000 */
630 "LVM_DELETEALLITEMS",
631 "LVM_GETCALLBACKMASK",
632 "LVM_SETCALLBACKMASK",
636 "LVM_SETITEMPOSITION",
637 "LVM_GETITEMPOSITION",
638 "LVM_GETSTRINGWIDTHA",
645 "LVM_GETEDITCONTROL",
650 "LVM_GETCOLUMNWIDTH",
651 "LVM_SETCOLUMNWIDTH",
654 "LVM_CREATEDRAGIMAGE",
658 "LVM_GETTEXTBKCOLOR",
659 "LVM_SETTEXTBKCOLOR",
661 "LVM_GETCOUNTPERPAGE",
670 "LVM_SETITEMPOSITION32",
671 "LVM_GETSELECTEDCOUNT",
672 "LVM_GETITEMSPACING",
673 "LVM_GETISEARCHSTRINGA",
674 "LVM_SETICONSPACING",
675 "LVM_SETEXTENDEDLISTVIEWSTYLE",
676 "LVM_GETEXTENDEDLISTVIEWSTYLE",
677 "LVM_GETSUBITEMRECT",
678 "LVM_SUBITEMHITTEST",
679 "LVM_SETCOLUMNORDERARRAY",
680 "LVM_GETCOLUMNORDERARRAY",
685 "LVM_APPROXIMATEVIEWRECT",
687 "LVM_GETSELECTIONMARK",
688 "LVM_SETSELECTIONMARK",
694 "LVM_GETNUMBEROFWORKAREAS",
708 "LVM_GETSTRINGWIDTHW",
738 "LVM_GETISEARCHSTRINGW",
761 "LVM_GETBKIMAGEW" /* 0x108B */
765 #define SPY_MAX_TVMSGNUM 65
766 static const char * const TVMessageTypeNames
[SPY_MAX_TVMSGNUM
+ 1] =
768 "TVM_INSERTITEMA", /* 1100 */
783 "TVM_GETEDITCONTROL",
784 "TVM_GETVISIBLECOUNT",
786 "TVM_CREATEDRAGIMAGE",
789 "TVM_SORTCHILDRENCB",
790 "TVM_ENDEDITLABELNOW",
791 "TVM_GETISEARCHSTRINGA",
805 "TVM_SETINSERTMARKCOLOR",
806 "TVM_GETINSERTMARKCOLOR",
832 "TVM_GETISEARCHSTRINGW",
837 #define SPY_MAX_HDMMSGNUM 19
838 static const char * const HDMMessageTypeNames
[SPY_MAX_HDMMSGNUM
+ 1] =
840 "HDM_GETITEMCOUNT", /* 1200 */
856 "HDM_CREATEDRAGIMAGE",
857 "GETORDERARRAYINDEX",
858 "SETORDERARRAYINDEX",
863 #define SPY_MAX_TCMMSGNUM 62
864 static const char * const TCMMessageTypeNames
[SPY_MAX_TCMMSGNUM
+ 1] =
875 "TCM_DELETEALLITEMS",
915 "TCM_SETMINTABWIDTH",
918 "TCM_SETEXTENDEDSTYLE",
919 "TCM_GETEXTENDEDSTYLE",
931 #define SPY_MAX_PGMMSGNUM 13
932 static const char * const PGMMessageTypeNames
[SPY_MAX_PGMMSGNUM
+ 1] =
946 "PGM_GETBUTTONSTATE",
951 #define SPY_MAX_CCMMSGNUM 6
952 static const char * const CCMMessageTypeNames
[SPY_MAX_CCMMSGNUM
+ 1] =
956 "CCM_SETCOLORSCHEME",
957 "CCM_GETCOLORSCHEME",
959 "CCM_SETUNICODEFORMAT",
960 "CCM_GETUNICODEFORMAT"
963 #define SPY_MAX_WINEMSGNUM 6
964 static const char * const WINEMessageTypeNames
[SPY_MAX_WINEMSGNUM
+ 1] =
966 "WM_WINE_DESTROYWINDOW",
967 "WM_WINE_SETWINDOWPOS",
968 "WM_WINE_SHOWWINDOW",
970 "WM_WINE_SETWINDOWLONG",
971 "WM_WINE_ENABLEWINDOW"
974 /* Virtual key names */
975 #define SPY_MAX_VKKEYSNUM 255
976 static const char * const VK_KeyNames
[SPY_MAX_VKKEYSNUM
+ 1] =
979 "VK_LBUTTON", /* 0x01 */
980 "VK_RBUTTON", /* 0x02 */
981 "VK_CANCEL", /* 0x03 */
982 "VK_MBUTTON", /* 0x04 */
986 "VK_BACK", /* 0x08 */
990 "VK_CLEAR", /* 0x0C */
991 "VK_RETURN", /* 0x0D */
994 "VK_SHIFT", /* 0x10 */
995 "VK_CONTROL", /* 0x11 */
996 "VK_MENU", /* 0x12 */
997 "VK_PAUSE", /* 0x13 */
998 "VK_CAPITAL", /* 0x14 */
1005 "VK_ESCAPE", /* 0x1B */
1010 "VK_SPACE", /* 0x20 */
1011 "VK_PRIOR", /* 0x21 */
1012 "VK_NEXT", /* 0x22 */
1013 "VK_END", /* 0x23 */
1014 "VK_HOME", /* 0x24 */
1015 "VK_LEFT", /* 0x25 */
1017 "VK_RIGHT", /* 0x27 */
1018 "VK_DOWN", /* 0x28 */
1019 "VK_SELECT", /* 0x29 */
1020 "VK_PRINT", /* 0x2A */
1021 "VK_EXECUTE", /* 0x2B */
1022 "VK_SNAPSHOT", /* 0x2C */
1023 "VK_INSERT", /* 0x2D */
1024 "VK_DELETE", /* 0x2E */
1025 "VK_HELP", /* 0x2F */
1069 "VK_LWIN", /* 0x5B */
1070 "VK_RWIN", /* 0x5C */
1071 "VK_APPS", /* 0x5D */
1074 "VK_NUMPAD0", /* 0x60 */
1075 "VK_NUMPAD1", /* 0x61 */
1076 "VK_NUMPAD2", /* 0x62 */
1077 "VK_NUMPAD3", /* 0x63 */
1078 "VK_NUMPAD4", /* 0x64 */
1079 "VK_NUMPAD5", /* 0x65 */
1080 "VK_NUMPAD6", /* 0x66 */
1081 "VK_NUMPAD7", /* 0x67 */
1082 "VK_NUMPAD8", /* 0x68 */
1083 "VK_NUMPAD9", /* 0x69 */
1084 "VK_MULTIPLY", /* 0x6A */
1085 "VK_ADD", /* 0x6B */
1086 "VK_SEPARATOR", /* 0x6C */
1087 "VK_SUBTRACT", /* 0x6D */
1088 "VK_DECIMAL", /* 0x6E */
1089 "VK_DIVIDE", /* 0x6F */
1099 "VK_F10", /* 0x79 */
1100 "VK_F11", /* 0x7A */
1101 "VK_F12", /* 0x7B */
1102 "VK_F13", /* 0x7C */
1103 "VK_F14", /* 0x7D */
1104 "VK_F15", /* 0x7E */
1105 "VK_F16", /* 0x7F */
1106 "VK_F17", /* 0x80 */
1107 "VK_F18", /* 0x81 */
1108 "VK_F19", /* 0x82 */
1109 "VK_F20", /* 0x83 */
1110 "VK_F21", /* 0x84 */
1111 "VK_F22", /* 0x85 */
1112 "VK_F23", /* 0x86 */
1113 "VK_F24", /* 0x87 */
1122 "VK_NUMLOCK", /* 0x90 */
1123 "VK_SCROLL", /* 0x91 */
1138 "VK_LSHIFT", /* 0xA0 */
1139 "VK_RSHIFT", /* 0xA1 */
1140 "VK_LCONTROL", /* 0xA2 */
1141 "VK_RCONTROL", /* 0xA3 */
1142 "VK_LMENU", /* 0xA4 */
1143 "VK_RMENU", /* 0xA5 */
1164 "VK_OEM_1", /* 0xBA */
1165 "VK_OEM_PLUS", /* 0xBB */
1166 "VK_OEM_COMMA", /* 0xBC */
1167 "VK_OEM_MINUS", /* 0xBD */
1168 "VK_OEM_PERIOD", /* 0xBE */
1169 "VK_OEM_2", /* 0xBF */
1170 "VK_OEM_3", /* 0xC0 */
1197 "VK_OEM_4", /* 0xDB */
1198 "VK_OEM_5", /* 0xDC */
1199 "VK_OEM_6", /* 0xDD */
1200 "VK_OEM_7", /* 0xDE */
1201 "VK_OEM_8", /* 0xDF */
1203 "VK_OEM_AX", /* 0xE1 */
1204 "VK_OEM_102", /* 0xE2 */
1205 "VK_ICO_HELP", /* 0xE3 */
1206 "VK_ICO_00", /* 0xE4 */
1207 "VK_PROCESSKEY", /* 0xE5 */
1224 "VK_ATTN", /* 0xF6 */
1225 "VK_CRSEL", /* 0xF7 */
1226 "VK_EXSEL", /* 0xF8 */
1227 "VK_EREOF", /* 0xF9 */
1228 "VK_PLAY", /* 0xFA */
1229 "VK_ZOOM", /* 0xFB */
1230 "VK_NONAME", /* 0xFC */
1231 "VK_PA1", /* 0xFD */
1232 "VK_OEM_CLEAR", /* 0xFE */
1237 /************************************************************************/
1240 /* WM_USER+n message values for "common controls" */
1244 const char *name
; /* name of control message */
1245 UINT value
; /* message number (0x0401-0x0fff */
1246 UINT len
; /* length of space at lParam to dump */
1252 const WCHAR
*classname
; /* class name to match */
1253 const USER_MSG
*classmsg
; /* pointer to first USER_MSG for class */
1254 USER_MSG
*lastmsg
; /* pointer to last USER_MSG for class */
1257 #define USM(a,b) { #a ,a,b}
1258 #define SZOF(a) sizeof(a)
1260 /* To dump memory at the lParam for any of these messages, */
1261 /* replace the "0" with a "SZOF(structure)", or with a */
1262 /* number. (First method prefered.) */
1264 static const USER_MSG rebar_array
[] = {
1265 USM(RB_INSERTBANDA
, 0),
1266 USM(RB_DELETEBAND
, 0),
1267 USM(RB_GETBARINFO
, 0),
1268 USM(RB_SETBARINFO
, 0),
1269 USM(RB_GETBANDINFO
, 0),
1270 USM(RB_SETBANDINFOA
, 0),
1271 USM(RB_SETPARENT
, 0),
1274 USM(RB_INSERTBANDW
, 0),
1275 USM(RB_SETBANDINFOW
, 0),
1276 USM(RB_GETBANDCOUNT
, 0),
1277 USM(RB_GETROWCOUNT
, 0),
1278 USM(RB_GETROWHEIGHT
, 0),
1279 USM(RB_IDTOINDEX
, 0),
1280 USM(RB_GETTOOLTIPS
, 0),
1281 USM(RB_SETTOOLTIPS
, 0),
1282 USM(RB_SETBKCOLOR
, 0),
1283 USM(RB_GETBKCOLOR
, 0),
1284 USM(RB_SETTEXTCOLOR
, 0),
1285 USM(RB_GETTEXTCOLOR
, 0),
1286 USM(RB_SIZETORECT
, 0),
1287 USM(RB_BEGINDRAG
, 0),
1289 USM(RB_DRAGMOVE
, 0),
1290 USM(RB_GETBARHEIGHT
, 0),
1291 USM(RB_GETBANDINFOW
, 0),
1292 USM(RB_GETBANDINFOA
, 0),
1293 USM(RB_MINIMIZEBAND
, 0),
1294 USM(RB_MAXIMIZEBAND
, 0),
1295 USM(RB_GETBANDBORDERS
, 0),
1296 USM(RB_SHOWBAND
, 0),
1297 USM(RB_SETPALETTE
, 0),
1298 USM(RB_GETPALETTE
, 0),
1299 USM(RB_MOVEBAND
, 0),
1302 static const USER_MSG toolbar_array
[] = {
1303 USM(TB_ENABLEBUTTON
,0),
1304 USM(TB_CHECKBUTTON
,0),
1305 USM(TB_PRESSBUTTON
,0),
1306 USM(TB_HIDEBUTTON
,0),
1307 USM(TB_INDETERMINATE
,0),
1308 USM(TB_MARKBUTTON
,0),
1309 USM(TB_ISBUTTONENABLED
,0),
1310 USM(TB_ISBUTTONCHECKED
,0),
1311 USM(TB_ISBUTTONPRESSED
,0),
1312 USM(TB_ISBUTTONHIDDEN
,0),
1313 USM(TB_ISBUTTONINDETERMINATE
,0),
1314 USM(TB_ISBUTTONHIGHLIGHTED
,0),
1315 USM(TB_SETSTATE
,0),
1316 USM(TB_GETSTATE
,0),
1317 USM(TB_ADDBITMAP
,0),
1318 USM(TB_ADDBUTTONSA
,0),
1319 USM(TB_INSERTBUTTONA
,0),
1320 USM(TB_DELETEBUTTON
,0),
1321 USM(TB_GETBUTTON
,0),
1322 USM(TB_BUTTONCOUNT
,0),
1323 USM(TB_COMMANDTOINDEX
,0),
1324 USM(TB_SAVERESTOREA
,0),
1325 USM(TB_CUSTOMIZE
,0),
1326 USM(TB_ADDSTRINGA
,0),
1327 USM(TB_GETITEMRECT
,0),
1328 USM(TB_BUTTONSTRUCTSIZE
,0),
1329 USM(TB_SETBUTTONSIZE
,0),
1330 USM(TB_SETBITMAPSIZE
,0),
1331 USM(TB_AUTOSIZE
,0),
1332 USM(TB_GETTOOLTIPS
,0),
1333 USM(TB_SETTOOLTIPS
,0),
1334 USM(TB_SETPARENT
,0),
1337 USM(TB_GETBITMAPFLAGS
,0),
1338 USM(TB_SETCMDID
,0),
1339 USM(TB_CHANGEBITMAP
,0),
1340 USM(TB_GETBITMAP
,0),
1341 USM(TB_GETBUTTONTEXTA
,0),
1342 USM(TB_REPLACEBITMAP
,0),
1343 USM(TB_SETINDENT
,0),
1344 USM(TB_SETIMAGELIST
,0),
1345 USM(TB_GETIMAGELIST
,0),
1346 USM(TB_LOADIMAGES
,0),
1348 USM(TB_SETHOTIMAGELIST
,0),
1349 USM(TB_GETHOTIMAGELIST
,0),
1350 USM(TB_SETDISABLEDIMAGELIST
,0),
1351 USM(TB_GETDISABLEDIMAGELIST
,0),
1352 USM(TB_SETSTYLE
,0),
1353 USM(TB_GETSTYLE
,0),
1354 USM(TB_GETBUTTONSIZE
,0),
1355 USM(TB_SETBUTTONWIDTH
,0),
1356 USM(TB_SETMAXTEXTROWS
,0),
1357 USM(TB_GETTEXTROWS
,0),
1358 USM(TB_GETOBJECT
,0),
1359 USM(TB_GETBUTTONINFOW
,0),
1360 USM(TB_SETBUTTONINFOW
,0),
1361 USM(TB_GETBUTTONINFOA
,0),
1362 USM(TB_SETBUTTONINFOA
,0),
1363 USM(TB_INSERTBUTTONW
,0),
1364 USM(TB_ADDBUTTONSW
,0),
1366 USM(TB_SETDRAWTEXTFLAGS
,0),
1367 USM(TB_GETHOTITEM
,0),
1368 USM(TB_SETHOTITEM
,0),
1369 USM(TB_SETANCHORHIGHLIGHT
,0),
1370 USM(TB_GETANCHORHIGHLIGHT
,0),
1371 USM(TB_GETBUTTONTEXTW
,0),
1372 USM(TB_SAVERESTOREW
,0),
1373 USM(TB_ADDSTRINGW
,0),
1374 USM(TB_MAPACCELERATORA
,0),
1375 USM(TB_GETINSERTMARK
,0),
1376 USM(TB_SETINSERTMARK
,0),
1377 USM(TB_INSERTMARKHITTEST
,0),
1378 USM(TB_MOVEBUTTON
,0),
1379 USM(TB_GETMAXSIZE
,0),
1380 USM(TB_SETEXTENDEDSTYLE
,0),
1381 USM(TB_GETEXTENDEDSTYLE
,0),
1382 USM(TB_GETPADDING
,0),
1383 USM(TB_SETPADDING
,0),
1384 USM(TB_SETINSERTMARKCOLOR
,0),
1385 USM(TB_GETINSERTMARKCOLOR
,0),
1386 USM(TB_MAPACCELERATORW
,0),
1389 static const USER_MSG comboex_array
[] = {
1390 USM(CBEM_INSERTITEMA
,0),
1391 USM(CBEM_SETIMAGELIST
,0),
1392 USM(CBEM_GETIMAGELIST
,0),
1393 USM(CBEM_GETITEMA
,0),
1394 USM(CBEM_SETITEMA
,0),
1395 USM(CBEM_GETCOMBOCONTROL
,0),
1396 USM(CBEM_GETEDITCONTROL
,0),
1397 USM(CBEM_SETEXSTYLE
,0),
1398 USM(CBEM_GETEXTENDEDSTYLE
,0),
1399 USM(CBEM_HASEDITCHANGED
,0),
1400 USM(CBEM_INSERTITEMW
,0),
1401 USM(CBEM_SETITEMW
,0),
1402 USM(CBEM_GETITEMW
,0),
1403 USM(CBEM_SETEXTENDEDSTYLE
,0),
1409 static CONTROL_CLASS cc_array
[] = {
1410 {WC_COMBOBOXEXW
, comboex_array
, 0},
1411 {REBARCLASSNAMEW
, rebar_array
, 0},
1412 {TOOLBARCLASSNAMEW
, toolbar_array
, 0},
1416 /************************************************************************/
1419 /* WM_NOTIFY function codes display */
1423 const char *name
; /* name of notify message */
1424 UINT value
; /* notify code value */
1425 UINT len
; /* length of extra space to dump */
1428 #define SPNFY(a,b) { #a ,a,sizeof(b)-sizeof(NMHDR)}
1430 /* Array MUST be in descending order by the 'value' field */
1431 /* (since value is UNSIGNED, 0xffffffff is largest and */
1432 /* 0xfffffffe is smaller). A binary search is used to */
1433 /* locate the correct 'value'. */
1434 static const SPY_NOTIFY spnfy_array
[] = {
1435 /* common 0U to 0U-99U */
1436 SPNFY(NM_OUTOFMEMORY
, NMHDR
),
1437 SPNFY(NM_CLICK
, NMHDR
),
1438 SPNFY(NM_DBLCLK
, NMHDR
),
1439 SPNFY(NM_RETURN
, NMHDR
),
1440 SPNFY(NM_RCLICK
, NMHDR
),
1441 SPNFY(NM_RDBLCLK
, NMHDR
),
1442 SPNFY(NM_SETFOCUS
, NMHDR
),
1443 SPNFY(NM_KILLFOCUS
, NMHDR
),
1444 SPNFY(NM_CUSTOMDRAW
, NMCUSTOMDRAW
),
1445 SPNFY(NM_HOVER
, NMHDR
),
1446 SPNFY(NM_NCHITTEST
, NMMOUSE
),
1447 SPNFY(NM_KEYDOWN
, NMKEY
),
1448 SPNFY(NM_RELEASEDCAPTURE
, NMHDR
),
1449 SPNFY(NM_SETCURSOR
, NMMOUSE
),
1450 SPNFY(NM_CHAR
, NMCHAR
),
1451 SPNFY(NM_TOOLTIPSCREATED
, NMTOOLTIPSCREATED
),
1452 /* Listview 0U-100U to 0U-199U */
1453 SPNFY(LVN_ITEMCHANGING
, NMLISTVIEW
),
1454 SPNFY(LVN_ITEMCHANGED
, NMLISTVIEW
),
1455 SPNFY(LVN_INSERTITEM
, NMLISTVIEW
),
1456 SPNFY(LVN_DELETEITEM
, NMLISTVIEW
),
1457 SPNFY(LVN_DELETEALLITEMS
, NMLISTVIEW
),
1458 SPNFY(LVN_BEGINLABELEDITA
, NMLVDISPINFOA
),
1459 SPNFY(LVN_ENDLABELEDITA
, NMLVDISPINFOA
),
1460 SPNFY(LVN_COLUMNCLICK
, NMLISTVIEW
),
1461 SPNFY(LVN_BEGINDRAG
, NMLISTVIEW
),
1462 SPNFY(LVN_BEGINRDRAG
, NMLISTVIEW
),
1463 SPNFY(LVN_ODCACHEHINT
, NMLVCACHEHINT
),
1464 SPNFY(LVN_ITEMACTIVATE
, NMITEMACTIVATE
),
1465 SPNFY(LVN_ODSTATECHANGED
, NMLVODSTATECHANGE
),
1466 SPNFY(LVN_HOTTRACK
, NMLISTVIEW
),
1467 SPNFY(LVN_GETDISPINFOA
, NMLVDISPINFOA
),
1468 SPNFY(LVN_SETDISPINFOA
, NMLVDISPINFOA
),
1469 SPNFY(LVN_ODFINDITEMA
, NMLVFINDITEM
),
1470 SPNFY(LVN_KEYDOWN
, NMLVKEYDOWN
),
1471 SPNFY(LVN_MARQUEEBEGIN
, NMLISTVIEW
),
1472 SPNFY(LVN_GETINFOTIPA
, NMLVGETINFOTIPA
),
1473 SPNFY(LVN_GETINFOTIPW
, NMLVGETINFOTIPW
),
1474 SPNFY(LVN_BEGINLABELEDITW
, NMLVDISPINFOW
),
1475 SPNFY(LVN_ENDLABELEDITW
, NMLVDISPINFOW
),
1476 SPNFY(LVN_GETDISPINFOW
, NMLVDISPINFOW
),
1477 SPNFY(LVN_SETDISPINFOW
, NMLVDISPINFOW
),
1478 SPNFY(LVN_ODFINDITEMW
, NMLVFINDITEM
),
1479 /* Header 0U-300U to 0U-399U */
1480 SPNFY(HDN_ITEMCHANGINGA
, NMHDR
),
1481 SPNFY(HDN_ITEMCHANGEDA
, NMHDR
),
1482 SPNFY(HDN_ITEMCLICKA
, NMHDR
),
1483 SPNFY(HDN_ITEMDBLCLICKA
, NMHDR
),
1484 SPNFY(HDN_DIVIDERDBLCLICKA
, NMHDR
),
1485 SPNFY(HDN_BEGINTRACKA
, NMHDR
),
1486 SPNFY(HDN_ENDTRACKA
, NMHDR
),
1487 SPNFY(HDN_GETDISPINFOA
, NMHDR
),
1488 SPNFY(HDN_BEGINDRAG
, NMHDR
),
1489 SPNFY(HDN_ENDDRAG
, NMHDR
),
1490 SPNFY(HDN_ITEMCHANGINGW
, NMHDR
),
1491 SPNFY(HDN_ITEMCHANGEDW
, NMHDR
),
1492 SPNFY(HDN_ITEMCLICKW
, NMHDR
),
1493 SPNFY(HDN_ITEMDBLCLICKW
, NMHDR
),
1494 SPNFY(HDN_DIVIDERDBLCLICKW
, NMHDR
),
1495 SPNFY(HDN_BEGINTRACKW
, NMHDR
),
1496 SPNFY(HDN_ENDTRACKW
, NMHDR
),
1497 SPNFY(HDN_GETDISPINFOW
, NMHDR
),
1498 /* Treeview 0U-400U to 0U-499U */
1499 SPNFY(TVN_SELCHANGINGA
, NMHDR
),
1500 SPNFY(TVN_SELCHANGEDA
, NMHDR
),
1501 SPNFY(TVN_GETDISPINFOA
, NMHDR
),
1502 SPNFY(TVN_SETDISPINFOA
, NMHDR
),
1503 SPNFY(TVN_ITEMEXPANDINGA
, NMHDR
),
1504 SPNFY(TVN_ITEMEXPANDEDA
, NMHDR
),
1505 SPNFY(TVN_BEGINDRAGA
, NMHDR
),
1506 SPNFY(TVN_BEGINRDRAGA
, NMHDR
),
1507 SPNFY(TVN_DELETEITEMA
, NMHDR
),
1508 SPNFY(TVN_BEGINLABELEDITA
, NMHDR
),
1509 SPNFY(TVN_ENDLABELEDITA
, NMHDR
),
1510 SPNFY(TVN_KEYDOWN
, NMHDR
),
1511 SPNFY(TVN_SELCHANGINGW
, NMHDR
),
1512 SPNFY(TVN_SELCHANGEDW
, NMHDR
),
1513 SPNFY(TVN_GETDISPINFOW
, NMHDR
),
1514 SPNFY(TVN_SETDISPINFOW
, NMHDR
),
1515 SPNFY(TVN_ITEMEXPANDINGW
, NMHDR
),
1516 SPNFY(TVN_ITEMEXPANDEDW
, NMHDR
),
1517 SPNFY(TVN_BEGINDRAGW
, NMHDR
),
1518 SPNFY(TVN_BEGINRDRAGW
, NMHDR
),
1519 SPNFY(TVN_DELETEITEMW
, NMHDR
),
1520 SPNFY(TVN_BEGINLABELEDITW
, NMHDR
),
1521 SPNFY(TVN_ENDLABELEDITW
, NMHDR
),
1522 /* Tooltips 0U-520U to 0U-549U */
1523 /* Tab 0U-550U to 0U-580U */
1524 SPNFY(TCN_KEYDOWN
, NMHDR
),
1525 SPNFY(TCN_SELCHANGE
, NMHDR
),
1526 SPNFY(TCN_SELCHANGING
, NMHDR
),
1527 SPNFY(TCN_GETOBJECT
, NMHDR
),
1528 /* Common Dialog 0U-601U to 0U-699U */
1529 /* Toolbar 0U-700U to 0U-720U */
1530 SPNFY(TBN_GETBUTTONINFOA
, NMTOOLBARA
),
1531 SPNFY(TBN_BEGINDRAG
, NMTOOLBARA
),
1532 SPNFY(TBN_ENDDRAG
, NMTOOLBARA
),
1533 SPNFY(TBN_BEGINADJUST
, NMHDR
),
1534 SPNFY(TBN_ENDADJUST
, NMHDR
),
1535 SPNFY(TBN_RESET
, NMHDR
),
1536 SPNFY(TBN_QUERYINSERT
, NMTOOLBARA
),
1537 SPNFY(TBN_QUERYDELETE
, NMTOOLBARA
),
1538 SPNFY(TBN_TOOLBARCHANGE
, NMHDR
),
1539 SPNFY(TBN_CUSTHELP
, NMHDR
),
1540 SPNFY(TBN_DROPDOWN
, NMTOOLBARA
),
1541 SPNFY(TBN_GETOBJECT
, NMOBJECTNOTIFY
),
1542 SPNFY(TBN_HOTITEMCHANGE
, NMTBHOTITEM
),
1543 SPNFY(TBN_DRAGOUT
, NMTOOLBARA
),
1544 SPNFY(TBN_DELETINGBUTTON
, NMTOOLBARA
),
1545 SPNFY(TBN_GETDISPINFOA
, NMTBDISPINFOA
),
1546 SPNFY(TBN_GETDISPINFOW
, NMTBDISPINFOW
),
1547 SPNFY(TBN_GETINFOTIPA
, NMTBGETINFOTIPA
),
1548 SPNFY(TBN_GETINFOTIPW
, NMTBGETINFOTIPW
),
1549 SPNFY(TBN_GETBUTTONINFOW
, NMTOOLBARW
),
1550 /* Up/Down 0U-721U to 0U-740U */
1551 /* Month Calendar 0U-750U to 0U-759U */
1552 /* Date/Time 0U-760U to 0U-799U */
1553 /* ComboBoxEx 0U-800U to 0U-830U */
1554 SPNFY(CBEN_GETDISPINFOA
, NMCOMBOBOXEXA
),
1555 SPNFY(CBEN_INSERTITEM
, NMCOMBOBOXEXA
),
1556 SPNFY(CBEN_DELETEITEM
, NMCOMBOBOXEXA
),
1557 SPNFY(CBEN_BEGINEDIT
, NMHDR
),
1558 SPNFY(CBEN_ENDEDITA
, NMCBEENDEDITA
),
1559 SPNFY(CBEN_ENDEDITW
, NMCBEENDEDITW
),
1560 SPNFY(CBEN_GETDISPINFOW
, NMCOMBOBOXEXW
),
1561 SPNFY(CBEN_DRAGBEGINA
, NMCBEDRAGBEGINA
),
1562 SPNFY(CBEN_DRAGBEGINW
, NMCBEDRAGBEGINW
),
1563 /* Rebar 0U-831U to 0U-859U */
1564 SPNFY(RBN_HEIGHTCHANGE
, NMHDR
),
1565 SPNFY(RBN_GETOBJECT
, NMOBJECTNOTIFY
),
1566 SPNFY(RBN_LAYOUTCHANGED
, NMHDR
),
1567 SPNFY(RBN_AUTOSIZE
, NMRBAUTOSIZE
),
1568 SPNFY(RBN_BEGINDRAG
, NMREBAR
),
1569 SPNFY(RBN_ENDDRAG
, NMREBAR
),
1570 SPNFY(RBN_DELETINGBAND
, NMREBAR
),
1571 SPNFY(RBN_DELETEDBAND
, NMREBAR
),
1572 SPNFY(RBN_CHILDSIZE
, NMREBARCHILDSIZE
),
1573 /* IP Adderss 0U-860U to 0U-879U */
1574 /* Status bar 0U-880U to 0U-899U */
1575 /* Pager 0U-900U to 0U-950U */
1576 SPNFY(PGN_SCROLL
, NMPGSCROLL
),
1577 SPNFY(PGN_CALCSIZE
, NMPGCALCSIZE
),
1579 static const SPY_NOTIFY
*end_spnfy_array
; /* ptr to last good entry in array */
1583 static BOOL16 SPY_Exclude
[SPY_MAX_MSGNUM
+1];
1584 static BOOL16 SPY_ExcludeDWP
= 0;
1586 #define SPY_EXCLUDE(msg) \
1587 (SPY_Exclude[(msg) > SPY_MAX_MSGNUM ? SPY_MAX_MSGNUM : (msg)])
1592 UINT msgnum
; /* message number */
1593 HWND msg_hwnd
; /* window handle for message */
1594 WPARAM wParam
; /* message parameter */
1595 LPARAM lParam
; /* message parameter */
1596 INT data_len
; /* length of data to dump */
1597 char msg_name
[60]; /* message name (see SPY_GetMsgName) */
1598 WCHAR wnd_class
[60]; /* window class name (full) */
1599 WCHAR wnd_name
[16]; /* window name for message */
1602 /* This is defined so that the external entry point can return the addr */
1603 static SPY_INSTANCE ext_sp_e
;
1605 static int indent_tls_index
;
1607 /***********************************************************************
1610 inline static int get_indent_level(void)
1612 return (int)TlsGetValue( indent_tls_index
);
1616 /***********************************************************************
1619 inline static void set_indent_level( int level
)
1621 TlsSetValue( indent_tls_index
, (void *)level
);
1625 /***********************************************************************
1626 * SPY_GetMsgInternal
1628 static const char *SPY_GetMsgInternal( UINT msg
)
1630 static char msg_buffer
[20];
1632 if (msg
<= SPY_MAX_MSGNUM
)
1634 if (!MessageTypeNames
[msg
]) return "???";
1635 return MessageTypeNames
[msg
];
1638 if (msg
>= LVM_FIRST
&& msg
<= LVM_FIRST
+ SPY_MAX_LVMMSGNUM
)
1640 if (!LVMMessageTypeNames
[msg
-LVM_FIRST
]) return "LVM_?";
1641 return LVMMessageTypeNames
[msg
-LVM_FIRST
];
1644 if (msg
>= TV_FIRST
&& msg
<= TV_FIRST
+ SPY_MAX_TVMSGNUM
)
1646 if (!TVMessageTypeNames
[msg
-TV_FIRST
]) return "TV_?";
1647 return TVMessageTypeNames
[msg
-TV_FIRST
];
1650 if (msg
>= HDM_FIRST
&& msg
<= HDM_FIRST
+ SPY_MAX_HDMMSGNUM
)
1652 if (!HDMMessageTypeNames
[msg
-HDM_FIRST
]) return "HDM_?";
1653 return HDMMessageTypeNames
[msg
-HDM_FIRST
];
1656 if (msg
>= TCM_FIRST
&& msg
<= TCM_FIRST
+ SPY_MAX_TCMMSGNUM
)
1658 if (!TCMMessageTypeNames
[msg
-TCM_FIRST
]) return "TCM_?";
1659 return TCMMessageTypeNames
[msg
-TCM_FIRST
];
1662 if (msg
>= PGM_FIRST
&& msg
<= PGM_FIRST
+ SPY_MAX_PGMMSGNUM
)
1664 if (!PGMMessageTypeNames
[msg
-PGM_FIRST
]) return "PGM_?";
1665 return PGMMessageTypeNames
[msg
-PGM_FIRST
];
1668 if (msg
>= CCM_FIRST
&& msg
<= CCM_FIRST
+ SPY_MAX_CCMMSGNUM
)
1670 if (!CCMMessageTypeNames
[msg
-CCM_FIRST
]) return "???";
1671 return CCMMessageTypeNames
[msg
-CCM_FIRST
];
1674 if (msg
>= WM_WINE_DESTROYWINDOW
&& msg
<= WM_WINE_DESTROYWINDOW
+ SPY_MAX_WINEMSGNUM
)
1676 if (!WINEMessageTypeNames
[msg
-WM_WINE_DESTROYWINDOW
]) return "???";
1677 return WINEMessageTypeNames
[msg
-WM_WINE_DESTROYWINDOW
];
1680 sprintf( msg_buffer
, "WM_USER+%04x", msg
- WM_USER
);
1684 /***********************************************************************
1687 const USER_MSG
*SPY_Bsearch_Msg( const USER_MSG
*first
, const USER_MSG
*last
, UINT code
)
1690 const USER_MSG
*test
;
1692 while (last
>= first
) {
1693 count
= 1 + last
- first
;
1695 /* TRACE("code=%d, f-value=%d, f-name=%s, l-value=%d, l-name=%s, l-len=%d,\n",
1696 code, first->value, first->name, last->value, last->name, last->len); */
1697 if (first
->value
== code
) return first
;
1698 if (last
->value
== code
) return last
;
1702 test
= first
+ count
;
1703 /* TRACE("first=%p, last=%p, test=%p, t-value=%d, code=%d, count=%d\n",
1704 first, last, test, test->value, code, count); */
1705 if (test
->value
== code
) return test
;
1706 if (test
->value
> code
)
1714 /***********************************************************************
1717 * Get message name and other information for dumping
1719 static void SPY_GetMsgStuff( SPY_INSTANCE
*sp_e
)
1723 sp_e
->msg_name
[sizeof(sp_e
->msg_name
)-1] = 0;
1724 strncpy (sp_e
->msg_name
, SPY_GetMsgInternal( sp_e
->msgnum
),
1725 sizeof(sp_e
->msg_name
)-1);
1728 if (strncmp(sp_e
->msg_name
, "WM_USER+", 8) == 0) {
1731 /* TRACE("looking class %s\n", sp_e->wnd_class); */
1733 while (cc_array
[i
].classname
&&
1734 strcmpW(cc_array
[i
].classname
, sp_e
->wnd_class
) !=0) i
++;
1736 if (!cc_array
[i
].classname
) return;
1737 /* TRACE("process class %s, first %p, last %p\n",
1738 debugstr_w(cc_array[i].classname), cc_array[i].classmsg,
1739 cc_array[i].lastmsg); */
1740 p
= SPY_Bsearch_Msg (cc_array
[i
].classmsg
, cc_array
[i
].lastmsg
,
1743 strncpy (sp_e
->msg_name
, p
->name
, sizeof(sp_e
->msg_name
)-1);
1744 sp_e
->data_len
= p
->len
;
1749 /***********************************************************************
1752 * Sets the value of "wnd_name" and "wnd_class" members of the
1753 * instance structure.
1756 void SPY_GetWndName( SPY_INSTANCE
*sp_e
)
1761 /* save and restore error code over the next call */
1762 save_error
= GetLastError();
1763 GetClassNameW(sp_e
->msg_hwnd
, sp_e
->wnd_class
, sizeof(sp_e
->wnd_class
)/sizeof(WCHAR
));
1764 SetLastError(save_error
);
1766 len
= InternalGetWindowText(sp_e
->msg_hwnd
, sp_e
->wnd_name
, sizeof(sp_e
->wnd_name
)/sizeof(WCHAR
));
1767 if(!len
) /* get class name */
1769 LPWSTR dst
= sp_e
->wnd_name
;
1770 LPWSTR src
= sp_e
->wnd_class
;
1771 int n
= sizeof(sp_e
->wnd_name
)/sizeof(WCHAR
) - 3;
1773 while ((n
-- > 0) && *src
) *dst
++ = *src
++;
1779 /***********************************************************************
1782 * **** External function ****
1786 const char *SPY_GetMsgName( UINT msg
, HWND hWnd
)
1788 ext_sp_e
.msgnum
= msg
;
1789 ext_sp_e
.msg_hwnd
= hWnd
;
1790 ext_sp_e
.lParam
= 0;
1791 ext_sp_e
.wParam
= 0;
1792 SPY_GetWndName(&ext_sp_e
);
1793 SPY_GetMsgStuff(&ext_sp_e
);
1794 return ext_sp_e
.msg_name
;
1797 /***********************************************************************
1800 const char *SPY_GetVKeyName(WPARAM wParam
)
1802 const char *vk_key_name
;
1804 if(wParam
<= SPY_MAX_VKKEYSNUM
&& VK_KeyNames
[wParam
])
1805 vk_key_name
= VK_KeyNames
[wParam
];
1807 vk_key_name
= "VK_???";
1812 /***********************************************************************
1813 * SPY_Bsearch_Notify
1815 const SPY_NOTIFY
*SPY_Bsearch_Notify( const SPY_NOTIFY
*first
, const SPY_NOTIFY
*last
, UINT code
)
1818 const SPY_NOTIFY
*test
;
1820 while (last
>= first
) {
1821 count
= 1 + last
- first
;
1823 /* TRACE("code=%d, f-value=%d, f-name=%s, l-value=%d, l-name=%s, l-len=%d,\n",
1824 code, first->value, first->name, last->value, last->name, last->len); */
1825 if (first
->value
== code
) return first
;
1826 if (last
->value
== code
) return last
;
1830 test
= first
+ count
;
1831 /* TRACE("first=%p, last=%p, test=%p, t-value=%d, code=%d, count=%d\n",
1832 first, last, test, test->value, code, count); */
1833 if (test
->value
== code
) return test
;
1834 if (test
->value
< code
)
1842 /***********************************************************************
1845 void SPY_DumpMem (LPSTR header
, UINT
*q
, INT len
)
1849 for(i
=0; i
<len
-12; i
+=16) {
1850 TRACE("%s [%04x] %08x %08x %08x %08x\n",
1851 header
, i
, *q
, *(q
+1), *(q
+2), *(q
+3));
1856 TRACE("%s [%04x] %08x %08x %08x\n",
1857 header
, i
, *q
, *(q
+1), *(q
+2));
1860 TRACE("%s [%04x] %08x %08x\n",
1861 header
, i
, *q
, *(q
+1));
1864 TRACE("%s [%04x] %08x\n",
1872 /***********************************************************************
1875 void SPY_DumpStructure (SPY_INSTANCE
*sp_e
, BOOL enter
)
1877 switch (sp_e
->msgnum
)
1882 DRAWITEMSTRUCT
*lpdis
= (DRAWITEMSTRUCT
*) sp_e
->lParam
;
1883 TRACE("DRAWITEMSTRUCT: CtlType=0x%08x CtlID=0x%08x\n",
1884 lpdis
->CtlType
, lpdis
->CtlID
);
1885 TRACE("itemID=0x%08x itemAction=0x%08x itemState=0x%08x\n",
1886 lpdis
->itemID
, lpdis
->itemAction
, lpdis
->itemState
);
1887 TRACE("hWnd=0x%04x hDC=0x%04x (%d,%d)-(%d,%d) itemData=0x%08lx\n",
1888 lpdis
->hwndItem
, lpdis
->hDC
, lpdis
->rcItem
.left
,
1889 lpdis
->rcItem
.top
, lpdis
->rcItem
.right
,
1890 lpdis
->rcItem
.bottom
, lpdis
->itemData
);
1893 case WM_MEASUREITEM
:
1895 MEASUREITEMSTRUCT
*lpmis
= (MEASUREITEMSTRUCT
*) sp_e
->lParam
;
1896 TRACE("MEASUREITEMSTRUCT: CtlType=0x%08x CtlID=0x%08x\n",
1897 lpmis
->CtlType
, lpmis
->CtlID
);
1898 TRACE("itemID=0x%08x itemWidth=0x%08x itemHeight=0x%08x\n",
1899 lpmis
->itemID
, lpmis
->itemWidth
, lpmis
->itemHeight
);
1900 TRACE("itemData=0x%08lx\n", lpmis
->itemData
);
1903 case WM_WINDOWPOSCHANGED
:
1905 case WM_WINDOWPOSCHANGING
:
1907 WINDOWPOS
*lpwp
= (WINDOWPOS
*)sp_e
->lParam
;
1908 TRACE("WINDOWPOS hwnd=0x%04x, after=0x%04x, at (%d,%d) w=%d h=%d, flags=0x%08x\n",
1909 lpwp
->hwnd
, lpwp
->hwndInsertAfter
, lpwp
->x
, lpwp
->y
,
1910 lpwp
->cx
, lpwp
->cy
, lpwp
->flags
);
1913 case WM_STYLECHANGED
:
1915 case WM_STYLECHANGING
:
1917 LPSTYLESTRUCT ss
= (LPSTYLESTRUCT
) sp_e
->lParam
;
1918 TRACE("STYLESTRUCT: StyleOld=0x%08lx, StyleNew=0x%08lx\n",
1919 ss
->styleOld
, ss
->styleNew
);
1924 RECT
*rc
= (RECT
*)sp_e
->lParam
;
1925 TRACE("Rect (%d,%d)-(%d,%d)\n",
1926 rc
->left
, rc
->top
, rc
->right
, rc
->bottom
);
1932 NMHDR
* pnmh
= (NMHDR
*) sp_e
->lParam
;
1934 const SPY_NOTIFY
*p
;
1936 p
= SPY_Bsearch_Notify (&spnfy_array
[0], end_spnfy_array
,
1939 TRACE("NMHDR hwndFrom=0x%08x idFrom=0x%08x code=%s<0x%08x>, extra=0x%x\n",
1940 pnmh
->hwndFrom
, pnmh
->idFrom
, p
->name
, pnmh
->code
, p
->len
);
1942 q
= (UINT
*)(pnmh
+ 1);
1943 SPY_DumpMem ("NM extra", q
, (INT
)p
->len
);
1947 TRACE("NMHDR hwndFrom=0x%08x idFrom=0x%08x code=0x%08x\n",
1948 pnmh
->hwndFrom
, pnmh
->idFrom
, pnmh
->code
);
1951 if (sp_e
->data_len
> 0)
1952 SPY_DumpMem ("MSG lParam", (UINT
*)sp_e
->lParam
, sp_e
->data_len
);
1957 /***********************************************************************
1960 void SPY_EnterMessage( INT iFlag
, HWND hWnd
, UINT msg
,
1961 WPARAM wParam
, LPARAM lParam
)
1966 if (!TRACE_ON(message
) || SPY_EXCLUDE(msg
)) return;
1969 sp_e
.msg_hwnd
= hWnd
;
1970 sp_e
.lParam
= lParam
;
1971 sp_e
.wParam
= wParam
;
1972 SPY_GetWndName(&sp_e
);
1973 SPY_GetMsgStuff(&sp_e
);
1974 indent
= get_indent_level();
1976 /* each SPY_SENDMESSAGE must be complemented by call to SPY_ExitMessage */
1979 case SPY_DISPATCHMESSAGE16
:
1980 TRACE("%*s(%04x) %-16s message [%04x] %s dispatched wp=%04x lp=%08lx\n",
1981 indent
, "", WIN_Handle16(hWnd
),
1982 debugstr_w(sp_e
.wnd_name
), msg
, sp_e
.msg_name
, wParam
, lParam
);
1985 case SPY_DISPATCHMESSAGE
:
1986 TRACE("%*s(%08x) %-16s message [%04x] %s dispatched wp=%08x lp=%08lx\n",
1987 indent
, "", hWnd
, debugstr_w(sp_e
.wnd_name
), msg
,
1988 sp_e
.msg_name
, wParam
, lParam
);
1991 case SPY_SENDMESSAGE16
:
1992 case SPY_SENDMESSAGE
:
1995 HTASK16 hTask
= GetWindowTask16( WIN_Handle16(hWnd
) );
1997 if (hTask
== GetCurrentTask()) strcpy( taskName
, "self" );
1998 else if (!hTask
) strcpy( taskName
, "Wine" );
2001 sprintf( taskName
, "task %04x ???", hTask
);
2002 GetModuleName16( hTask
, taskName
+ 10, sizeof(taskName
) - 10 );
2005 if (iFlag
== SPY_SENDMESSAGE16
)
2006 TRACE("%*s(%04x) %-16s message [%04x] %s sent from %s wp=%04x lp=%08lx\n",
2007 indent
, "", WIN_Handle16(hWnd
), debugstr_w(sp_e
.wnd_name
), msg
,
2008 sp_e
.msg_name
, taskName
, wParam
, lParam
);
2010 { TRACE("%*s(%08x) %-16s message [%04x] %s sent from %s wp=%08x lp=%08lx\n",
2011 indent
, "", hWnd
, debugstr_w(sp_e
.wnd_name
), msg
,
2012 sp_e
.msg_name
, taskName
, wParam
, lParam
);
2013 SPY_DumpStructure(&sp_e
, TRUE
);
2018 case SPY_DEFWNDPROC16
:
2019 if( SPY_ExcludeDWP
) return;
2020 TRACE("%*s(%04x) DefWindowProc16: %s [%04x] wp=%04x lp=%08lx\n",
2021 indent
, "", WIN_Handle16(hWnd
), sp_e
.msg_name
, msg
, wParam
, lParam
);
2024 case SPY_DEFWNDPROC
:
2025 if( SPY_ExcludeDWP
) return;
2026 TRACE("%*s(%08x) DefWindowProc32: %s [%04x] wp=%08x lp=%08lx\n",
2027 indent
, "", hWnd
, sp_e
.msg_name
,
2028 msg
, wParam
, lParam
);
2031 set_indent_level( indent
+ SPY_INDENT_UNIT
);
2035 /***********************************************************************
2038 void SPY_ExitMessage( INT iFlag
, HWND hWnd
, UINT msg
, LRESULT lReturn
,
2039 WPARAM wParam
, LPARAM lParam
)
2044 if (!TRACE_ON(message
) || SPY_EXCLUDE(msg
) ||
2045 (SPY_ExcludeDWP
&& (iFlag
== SPY_RESULT_DEFWND16
|| iFlag
== SPY_RESULT_DEFWND
)) )
2049 sp_e
.msg_hwnd
= hWnd
;
2050 sp_e
.lParam
= lParam
;
2051 sp_e
.wParam
= wParam
;
2052 SPY_GetWndName(&sp_e
);
2053 SPY_GetMsgStuff(&sp_e
);
2055 if ((indent
= get_indent_level()))
2057 indent
-= SPY_INDENT_UNIT
;
2058 set_indent_level( indent
);
2063 case SPY_RESULT_DEFWND16
:
2064 TRACE(" %*s(%04x) DefWindowProc16: %s [%04x] returned %08lx\n",
2065 indent
, "", WIN_Handle16(hWnd
), sp_e
.msg_name
, msg
, lReturn
);
2068 case SPY_RESULT_DEFWND
:
2069 TRACE(" %*s(%08x) DefWindowProc32: %s [%04x] returned %08lx\n",
2070 indent
, "", hWnd
, sp_e
.msg_name
, msg
, lReturn
);
2073 case SPY_RESULT_OK16
:
2074 TRACE(" %*s(%04x) %-16s message [%04x] %s returned %08lx\n",
2075 indent
, "", WIN_Handle16(hWnd
), debugstr_w(sp_e
.wnd_name
), msg
,
2076 sp_e
.msg_name
, lReturn
);
2080 TRACE(" %*s(%08x) %-16s message [%04x] %s returned %08lx\n",
2081 indent
, "", hWnd
, debugstr_w(sp_e
.wnd_name
), msg
,
2082 sp_e
.msg_name
, lReturn
);
2083 SPY_DumpStructure(&sp_e
, FALSE
);
2086 case SPY_RESULT_INVALIDHWND16
:
2087 WARN(" %*s(%04x) %-16s message [%04x] %s HAS INVALID HWND\n",
2088 indent
, "", WIN_Handle16(hWnd
), debugstr_w(sp_e
.wnd_name
), msg
, sp_e
.msg_name
);
2091 case SPY_RESULT_INVALIDHWND
:
2092 WARN(" %*s(%08x) %-16s message [%04x] %s HAS INVALID HWND\n",
2093 indent
, "", hWnd
, debugstr_w(sp_e
.wnd_name
), msg
,
2100 /***********************************************************************
2107 const SPY_NOTIFY
*p
;
2111 if (!TRACE_ON(message
)) return TRUE
;
2113 indent_tls_index
= TlsAlloc();
2115 if(!RegOpenKeyA(HKEY_LOCAL_MACHINE
, "Software\\Wine\\Wine\\Config\\Spy", &hkey
))
2117 DWORD type
, count
= sizeof(buffer
);
2118 RegQueryValueExA(hkey
, "Include", 0, &type
, buffer
, &count
);
2121 if (buffer
[0] && strcmp( buffer
, "INCLUDEALL" ))
2123 TRACE("Include=%s\n", buffer
);
2124 for (i
= 0; i
<= SPY_MAX_MSGNUM
; i
++)
2125 SPY_Exclude
[i
] = (MessageTypeNames
[i
] && !strstr(buffer
,MessageTypeNames
[i
]));
2129 if(!RegOpenKeyA(HKEY_LOCAL_MACHINE
, "Software\\Wine\\Wine\\Config\\Spy", &hkey
))
2131 DWORD type
, count
= sizeof(buffer
);
2132 RegQueryValueExA(hkey
, "Exclude", 0, &type
, buffer
, &count
);
2137 TRACE("Exclude=%s\n", buffer
);
2138 if (!strcmp( buffer
, "EXCLUDEALL" ))
2139 for (i
= 0; i
<= SPY_MAX_MSGNUM
; i
++) SPY_Exclude
[i
] = TRUE
;
2141 for (i
= 0; i
<= SPY_MAX_MSGNUM
; i
++)
2142 SPY_Exclude
[i
] = (MessageTypeNames
[i
] && strstr(buffer
,MessageTypeNames
[i
]));
2146 if(!RegOpenKeyA(HKEY_LOCAL_MACHINE
, "Software\\Wine\\Wine\\Config\\Spy", &hkey
))
2148 DWORD type
, count
= sizeof(buffer
);
2149 if(!RegQueryValueExA(hkey
, "ExcludeDWP", 0, &type
, buffer
, &count
))
2150 SPY_ExcludeDWP
= atoi(buffer
);
2154 /* find last good entry in spy notify array and save addr for b-search */
2155 p
= &spnfy_array
[0];
2158 if ((UINT
)p
->value
> (UINT
)j
) {
2159 ERR("Notify message array out of order\n");
2160 ERR(" between values [%08x] %s and [%08x] %s\n",
2161 j
, (p
-1)->name
, p
->value
, p
->name
);
2168 end_spnfy_array
= p
;
2170 /* find last good entry in each common control message array
2171 * and save addr for b-search.
2174 while (cc_array
[i
].classname
) {
2176 j
= 0x0400; /* minimum entry in array */
2177 q
= cc_array
[i
].classmsg
;
2179 if (q
->value
<= j
) {
2180 ERR("Class message array out of order for class %s\n",
2181 debugstr_w(cc_array
[i
].classname
));
2182 ERR(" between values [%04x] %s and [%04x] %s\n",
2183 j
, (q
-1)->name
, q
->value
, q
->name
);
2190 cc_array
[i
].lastmsg
= (USER_MSG
*)q
;