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 */
1028 /* WM_NOTIFY function codes display */
1032 const char *name; /* name of notify message */
1033 UINT value; /* notify code value */
1034 UINT len; /* length of extra space to dump */
1037 #define SPNFY(a,b) { #a ,a,sizeof(b)-sizeof(NMHDR)}
1039 /* Array MUST be in descending order by the 'value' field */
1040 /* (since value is UNSIGNED, 0xffffffff is largest and */
1041 /* 0xfffffffe is smaller). A binary search is used to */
1042 /* locate the correct 'value'. */
1043 static const SPY_NOTIFY spnfy_array[] = {
1044 /* common 0U to 0U-99U */
1045 SPNFY(NM_OUTOFMEMORY, NMHDR),
1046 SPNFY(NM_CLICK, NMHDR),
1047 SPNFY(NM_DBLCLK, NMHDR),
1048 SPNFY(NM_RETURN, NMHDR),
1049 SPNFY(NM_RCLICK, NMHDR),
1050 SPNFY(NM_RDBLCLK, NMHDR),
1051 SPNFY(NM_SETFOCUS, NMHDR),
1052 SPNFY(NM_KILLFOCUS, NMHDR),
1053 SPNFY(NM_CUSTOMDRAW, NMCUSTOMDRAW),
1054 SPNFY(NM_HOVER, NMHDR),
1055 SPNFY(NM_NCHITTEST, NMHDR),
1056 SPNFY(NM_KEYDOWN, NMKEY),
1057 SPNFY(NM_RELEASEDCAPTURE, NMHDR),
1058 SPNFY(NM_SETCURSOR, NMMOUSE),
1059 SPNFY(NM_CHAR, NMCHAR),
1060 SPNFY(NM_TOOLTIPSCREATED, NMTOOLTIPSCREATED),
1061 /* Listview 0U-100U to 0U-199U */
1062 /* Header 0U-300U to 0U-399U */
1063 /* Treeview 0U-400U to 0U-499U */
1064 /* Tooltips 0U-520U to 0U-549U */
1065 /* Tab 0U-550U to 0U-580U */
1066 /* Common Dialog 0U-601U to 0U-699U */
1067 /* Toolbar 0U-700U to 0U-720U */
1068 SPNFY(TBN_GETBUTTONINFOA, NMTOOLBARA),
1069 SPNFY(TBN_BEGINDRAG, NMTOOLBARA),
1070 SPNFY(TBN_ENDDRAG, NMTOOLBARA),
1071 SPNFY(TBN_BEGINADJUST, NMHDR),
1072 SPNFY(TBN_ENDADJUST, NMHDR),
1073 SPNFY(TBN_RESET, NMHDR),
1074 SPNFY(TBN_QUERYINSERT, NMTOOLBARA),
1075 SPNFY(TBN_QUERYDELETE, NMTOOLBARA),
1076 SPNFY(TBN_TOOLBARCHANGE, NMHDR),
1077 SPNFY(TBN_CUSTHELP, NMHDR),
1078 SPNFY(TBN_DROPDOWN, NMTOOLBARA),
1079 SPNFY(TBN_GETOBJECT, NMOBJECTNOTIFY),
1080 SPNFY(TBN_HOTITEMCHANGE, NMHDR), /* NMTBHOTITEM), */
1081 SPNFY(TBN_DRAGOUT, NMTOOLBARA),
1082 SPNFY(TBN_DELETINGBUTTON, NMTOOLBARA),
1083 SPNFY(TBN_GETDISPINFOA, NMHDR), /* NMTBDISPINFO), */
1084 SPNFY(TBN_GETDISPINFOW, NMHDR), /* NMTBDISPINFO), */
1085 SPNFY(TBN_GETINFOTIPA, NMTBGETINFOTIPA),
1086 SPNFY(TBN_GETINFOTIPW, NMTBGETINFOTIPW),
1087 SPNFY(TBN_GETBUTTONINFOW, NMTOOLBARW),
1088 /* Up/Down 0U-721U to 0U-740U */
1089 /* Month Calendar 0U-750U to 0U-759U */
1090 /* Date/Time 0U-760U to 0U-799U */
1091 /* ComboBoxEx 0U-800U to 0U-830U */
1092 SPNFY(CBEN_GETDISPINFOA, NMHDR), /* NMCOMBOBOXEX), */
1093 SPNFY(CBEN_INSERTITEM, NMHDR), /* NMCOMBOBOXEX), */
1094 SPNFY(CBEN_DELETEITEM, NMHDR), /* NMCOMBOBOXEX), */
1095 SPNFY(CBEN_BEGINEDIT, NMHDR),
1096 SPNFY(CBEN_ENDEDITA, NMHDR), /* NMCBEENDEDITA), */
1097 SPNFY(CBEN_ENDEDITW, NMHDR), /* NMCBEENDEDITW), */
1098 SPNFY(CBEN_GETDISPINFOW, NMHDR), /* NMCOMBOBOXEXW), */
1099 SPNFY(CBEN_DRAGBEGINA, NMHDR), /* NMCBEDRAGBEGINA), */
1100 SPNFY(CBEN_DRAGBEGINW, NMHDR), /* NMCBEDRAGBEGINW), */
1101 /* Rebar 0U-831U to 0U-859U */
1102 SPNFY(RBN_HEIGHTCHANGE, NMHDR),
1103 SPNFY(RBN_GETOBJECT, NMOBJECTNOTIFY),
1104 SPNFY(RBN_LAYOUTCHANGED, NMHDR),
1105 SPNFY(RBN_AUTOSIZE, NMRBAUTOSIZE),
1106 SPNFY(RBN_BEGINDRAG, NMREBAR),
1107 SPNFY(RBN_ENDDRAG, NMREBAR),
1108 SPNFY(RBN_DELETINGBAND, NMREBAR),
1109 SPNFY(RBN_DELETEDBAND, NMREBAR),
1110 SPNFY(RBN_CHILDSIZE, NMREBARCHILDSIZE),
1111 /* IP Adderss 0U-860U to 0U-879U */
1112 /* Status bar 0U-880U to 0U-899U */
1113 /* Pager 0U-900U to 0U-950U */
1115 static const SPY_NOTIFY *end_spnfy_array; /* ptr to last good entry in array */
1119 static BOOL16 SPY_Exclude[SPY_MAX_MSGNUM+1];
1120 static BOOL16 SPY_ExcludeDWP = 0;
1121 static int SPY_IndentLevel = 0;
1123 #define SPY_EXCLUDE(msg) \
1124 (SPY_Exclude[(msg) > SPY_MAX_MSGNUM ? SPY_MAX_MSGNUM : (msg)])
1126 /***********************************************************************
1129 const char *SPY_GetMsgName( UINT msg )
1131 static char msg_buffer[20];
1133 if (msg <= SPY_MAX_MSGNUM)
1135 if (!MessageTypeNames[msg]) return "???";
1136 return MessageTypeNames[msg];
1139 if (msg >= LVM_FIRST && msg <= LVM_FIRST + SPY_MAX_LVMMSGNUM)
1141 if (!LVMMessageTypeNames[msg-LVM_FIRST]) return "LVM_?";
1142 return LVMMessageTypeNames[msg-LVM_FIRST];
1145 if (msg >= CCM_FIRST && msg <= CCM_FIRST + SPY_MAX_CCMMSGNUM)
1147 if (!CCMMessageTypeNames[msg-CCM_FIRST]) return "???";
1148 return CCMMessageTypeNames[msg-CCM_FIRST];
1151 sprintf( msg_buffer, "WM_USER+%04x", msg - WM_USER );
1155 /***********************************************************************
1158 const char *SPY_GetWndName( HWND hwnd )
1160 static char wnd_buffer[16];
1162 WND* pWnd = WIN_FindWndPtr( hwnd );
1165 INT n = sizeof(wnd_buffer) - 6;
1166 LPSTR p = wnd_buffer;
1169 if( pWnd->text && pWnd->text[0] != '\0' )
1171 LPWSTR src = pWnd->text;
1172 *(p++) = postfix = '\"';
1173 while ((n-- > 1) && *src) *p++ = *src++;
1174 if( *src ) for( n = 0; n < 3; n++ ) *(p++)='.';
1176 else /* get class name */
1179 GlobalGetAtomNameA((ATOM) GetClassWord(pWnd->hwndSelf, GCW_ATOM), p, n + 1);
1185 WIN_ReleaseWndPtr(pWnd);
1188 else strcpy( wnd_buffer, "\"NULL\"" );
1192 /***********************************************************************
1195 const char *SPY_GetVKeyName(WPARAM wParam)
1197 const char *vk_key_name;
1199 if(wParam <= SPY_MAX_VKKEYSNUM && VK_KeyNames[wParam])
1200 vk_key_name = VK_KeyNames[wParam];
1202 vk_key_name = "VK_???";
1207 /***********************************************************************
1208 * SPY_Bsearch_Notify
1210 const SPY_NOTIFY *SPY_Bsearch_Notify( const SPY_NOTIFY *first, const SPY_NOTIFY *last, UINT code)
1213 const SPY_NOTIFY *test;
1215 while (last >= first) {
1216 count = 1 + last - first;
1218 /* TRACE("code=%d, f-value=%d, f-name=%s, l-value=%d, l-name=%s, l-len=%d,\n",
1219 code, first->value, first->name, last->value, last->name, last->len); */
1220 if (first->value == code) return first;
1221 if (last->value == code) return last;
1225 test = first + count;
1226 /* TRACE("first=%p, last=%p, test=%p, t-value=%d, code=%d, count=%d\n",
1227 first, last, test, test->value, code, count); */
1228 if (test->value == code) return test;
1229 if (test->value < code)
1237 /***********************************************************************
1240 void SPY_DumpStructure (UINT msg, BOOL enter, LPARAM structure)
1247 DRAWITEMSTRUCT *lpdis = (DRAWITEMSTRUCT*) structure;
1248 TRACE("DRAWITEMSTRUCT: CtlType=0x%08x CtlID=0x%08x\n",
1249 lpdis->CtlType, lpdis->CtlID);
1250 TRACE("itemID=0x%08x itemAction=0x%08x itemState=0x%08x\n",
1251 lpdis->itemID, lpdis->itemAction, lpdis->itemState);
1252 TRACE("hWnd=0x%04x hDC=0x%04x (%d,%d)-(%d,%d) itemData=0x%08lx\n",
1253 lpdis->hwndItem, lpdis->hDC, lpdis->rcItem.left,
1254 lpdis->rcItem.top, lpdis->rcItem.right,
1255 lpdis->rcItem.bottom, lpdis->itemData);
1258 case WM_MEASUREITEM:
1260 MEASUREITEMSTRUCT *lpmis = (MEASUREITEMSTRUCT*) structure;
1261 TRACE("MEASUREITEMSTRUCT: CtlType=0x%08x CtlID=0x%08x\n",
1262 lpmis->CtlType, lpmis->CtlID);
1263 TRACE("itemID=0x%08x itemWidth=0x%08x itemHeight=0x%08x\n",
1264 lpmis->itemID, lpmis->itemWidth, lpmis->itemHeight);
1265 TRACE("itemData=0x%08lx\n", lpmis->itemData);
1268 case WM_STYLECHANGED:
1270 case WM_STYLECHANGING:
1272 LPSTYLESTRUCT ss = (LPSTYLESTRUCT) structure;
1273 TRACE("STYLESTRUCT: StyleOld=0x%08lx, StyleNew=0x%08lx\n",
1274 ss->styleOld, ss->styleNew);
1280 NMHDR * pnmh = (NMHDR*) structure;
1282 const SPY_NOTIFY *p;
1284 p = SPY_Bsearch_Notify (&spnfy_array[0], end_spnfy_array,
1287 TRACE("NMHDR hwndFrom=0x%08x idFrom=0x%08x code=%s<0x%08x>, extra=0x%x\n",
1288 pnmh->hwndFrom, pnmh->idFrom, p->name, pnmh->code, p->len);
1291 q = (UINT *)(pnmh + 1);
1292 for(i=0; i<((INT)p->len)-12; i+=16) {
1293 TRACE("NM extra [%04x] %08x %08x %08x %08x\n",
1294 i, *q, *(q+1), *(q+2), *(q+3));
1297 switch (p->len - i) {
1299 TRACE("NM extra [%04x] %08x %08x %08x\n",
1300 i, *q, *(q+1), *(q+2));
1303 TRACE("NM extra [%04x] %08x %08x\n",
1307 TRACE("NM extra [%04x] %08x\n",
1316 TRACE("NMHDR hwndFrom=0x%08x idFrom=0x%08x code=0x%08x\n",
1317 pnmh->hwndFrom, pnmh->idFrom, pnmh->code);
1324 /***********************************************************************
1327 void SPY_EnterMessage( INT iFlag, HWND hWnd, UINT msg,
1328 WPARAM wParam, LPARAM lParam )
1332 if (!TRACE_ON(message) || SPY_EXCLUDE(msg)) return;
1334 /* each SPY_SENDMESSAGE must be complemented by call to SPY_ExitMessage */
1337 case SPY_DISPATCHMESSAGE16:
1338 pname = SPY_GetWndName(hWnd);
1339 TRACE("%*s(%04x) %-16s message [%04x] %s dispatched wp=%04x lp=%08lx\n",
1340 SPY_IndentLevel, "", hWnd, pname, msg, SPY_GetMsgName( msg ),
1344 case SPY_DISPATCHMESSAGE:
1345 pname = SPY_GetWndName(hWnd);
1346 TRACE("%*s(%08x) %-16s message [%04x] %s dispatched wp=%08x lp=%08lx\n",
1347 SPY_IndentLevel, "", hWnd, pname, msg, SPY_GetMsgName( msg ),
1351 case SPY_SENDMESSAGE16:
1352 case SPY_SENDMESSAGE:
1355 HTASK16 hTask = GetWindowTask16(hWnd);
1357 if (hTask == GetCurrentTask()) strcpy( taskName, "self" );
1358 else if (!hTask) strcpy( taskName, "Wine" );
1361 sprintf( taskName, "task %04x ???", hTask );
1362 GetModuleName16( hTask, taskName + 10, sizeof(taskName) - 10 );
1364 pname = SPY_GetWndName(hWnd);
1366 if (iFlag == SPY_SENDMESSAGE16)
1367 TRACE("%*s(%04x) %-16s message [%04x] %s sent from %s wp=%04x lp=%08lx\n",
1368 SPY_IndentLevel, "", hWnd, pname, msg, SPY_GetMsgName( msg ),
1369 taskName, wParam, lParam );
1371 { TRACE("%*s(%08x) %-16s message [%04x] %s sent from %s wp=%08x lp=%08lx\n",
1372 SPY_IndentLevel, "", hWnd, pname, msg, SPY_GetMsgName( msg ),
1373 taskName, wParam, lParam );
1374 SPY_DumpStructure(msg, TRUE, lParam);
1379 case SPY_DEFWNDPROC16:
1380 if( SPY_ExcludeDWP ) return;
1381 TRACE("%*s(%04x) DefWindowProc16: %s [%04x] wp=%04x lp=%08lx\n",
1382 SPY_IndentLevel, "", hWnd, SPY_GetMsgName( msg ),
1383 msg, wParam, lParam );
1386 case SPY_DEFWNDPROC:
1387 if( SPY_ExcludeDWP ) return;
1388 TRACE("%*s(%08x) DefWindowProc32: %s [%04x] wp=%08x lp=%08lx\n",
1389 SPY_IndentLevel, "", hWnd, SPY_GetMsgName( msg ),
1390 msg, wParam, lParam );
1393 SPY_IndentLevel += SPY_INDENT_UNIT;
1397 /***********************************************************************
1400 void SPY_ExitMessage( INT iFlag, HWND hWnd, UINT msg, LRESULT lReturn,
1401 WPARAM wParam, LPARAM lParam )
1405 if (!TRACE_ON(message) || SPY_EXCLUDE(msg) ||
1406 (SPY_ExcludeDWP && (iFlag == SPY_RESULT_DEFWND16 || iFlag == SPY_RESULT_DEFWND)) )
1409 if (SPY_IndentLevel) SPY_IndentLevel -= SPY_INDENT_UNIT;
1413 case SPY_RESULT_DEFWND16:
1414 TRACE(" %*s(%04x) DefWindowProc16: %s [%04x] returned %08lx\n",
1415 SPY_IndentLevel, "", hWnd, SPY_GetMsgName( msg ), msg, lReturn );
1418 case SPY_RESULT_DEFWND:
1419 TRACE(" %*s(%08x) DefWindowProc32: %s [%04x] returned %08lx\n",
1420 SPY_IndentLevel, "", hWnd, SPY_GetMsgName( msg ), msg, lReturn );
1423 case SPY_RESULT_OK16:
1424 pname = SPY_GetWndName(hWnd);
1425 TRACE(" %*s(%04x) %-16s message [%04x] %s returned %08lx\n",
1426 SPY_IndentLevel, "", hWnd, pname, msg,
1427 SPY_GetMsgName( msg ), lReturn );
1431 pname = SPY_GetWndName(hWnd);
1432 TRACE(" %*s(%08x) %-16s message [%04x] %s returned %08lx\n",
1433 SPY_IndentLevel, "", hWnd, pname, msg,
1434 SPY_GetMsgName( msg ), lReturn );
1435 SPY_DumpStructure(msg, FALSE, lParam);
1438 case SPY_RESULT_INVALIDHWND16:
1439 pname = SPY_GetWndName(hWnd);
1440 WARN(" %*s(%04x) %-16s message [%04x] %s HAS INVALID HWND\n",
1441 SPY_IndentLevel, "", hWnd, pname, msg,
1442 SPY_GetMsgName( msg ) );
1445 case SPY_RESULT_INVALIDHWND:
1446 pname = SPY_GetWndName(hWnd);
1447 WARN(" %*s(%08x) %-16s message [%04x] %s HAS INVALID HWND\n",
1448 SPY_IndentLevel, "", hWnd, pname, msg,
1449 SPY_GetMsgName( msg ) );
1455 /***********************************************************************
1462 const SPY_NOTIFY *p;
1464 if (!TRACE_ON(message)) return TRUE;
1466 PROFILE_GetWineIniString( "Spy", "Include", "", buffer, sizeof(buffer) );
1467 if (buffer[0] && strcmp( buffer, "INCLUDEALL" ))
1469 TRACE("Include=%s\n", buffer );
1470 for (i = 0; i <= SPY_MAX_MSGNUM; i++)
1471 SPY_Exclude[i] = (MessageTypeNames[i] && !strstr(buffer,MessageTypeNames[i]));
1474 PROFILE_GetWineIniString( "Spy", "Exclude", "", buffer, sizeof(buffer) );
1477 TRACE("Exclude=%s\n", buffer );
1478 if (!strcmp( buffer, "EXCLUDEALL" ))
1479 for (i = 0; i <= SPY_MAX_MSGNUM; i++) SPY_Exclude[i] = TRUE;
1481 for (i = 0; i <= SPY_MAX_MSGNUM; i++)
1482 SPY_Exclude[i] = (MessageTypeNames[i] && strstr(buffer,MessageTypeNames[i]));
1485 SPY_ExcludeDWP = PROFILE_GetWineIniInt( "Spy", "ExcludeDWP", 0 );
1487 /* find last good entry in spy notify array and save addr for b-search */
1488 p = &spnfy_array[0];
1489 while (p->name) p++;
1491 end_spnfy_array = p;