ReactOS  0.4.14-dev-49-gfb4591c
spy.c
Go to the documentation of this file.
1 /*
2  * Message spying routines
3  *
4  * Copyright 1994, Bob Amstadt
5  * 1995, Alex Korobka
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20  */
21 
22 #include <user32.h>
23 
24 #include <wine/commctrl.h>
25 #include <commdlg.h>
26 #include <richedit.h>
27 #include <prsht.h>
28 
30 
31 #define SPY_MAX_MSGNUM WM_USER
32 #define SPY_INDENT_UNIT 4 /* 4 spaces */
33 #undef ARRAYSIZE
34 #define ARRAYSIZE(a) ((sizeof(a) / sizeof((a)[0])))
35 
36 #define DEBUG_SPY 0
37 
38 static const char * const ClassLongOffsetNames[] =
39 {
40  "GCLP_MENUNAME", /* -8 */
41  "GCLP_HBRBACKGROUND", /* -10 */
42  "GCLP_HCURSOR", /* -12 */
43  "GCLP_HICON", /* -14 */
44  "GCLP_HMODULE", /* -16 */
45  "GCL_CBWNDEXTRA", /* -18 */
46  "GCL_CBCLSEXTRA", /* -20 */
47  "?",
48  "GCLP_WNDPROC", /* -24 */
49  "GCL_STYLE", /* -26 */
50  "?",
51  "?",
52  "GCW_ATOM", /* -32 */
53  "GCLP_HICONSM", /* -34 */
54 };
55 
56 static const char * const MessageTypeNames[SPY_MAX_MSGNUM + 1] =
57 {
58  "WM_NULL", /* 0x00 */
59  "WM_CREATE",
60  "WM_DESTROY",
61  "WM_MOVE",
62  "wm_sizewait",
63  "WM_SIZE",
64  "WM_ACTIVATE",
65  "WM_SETFOCUS",
66  "WM_KILLFOCUS",
67  "WM_SETVISIBLE",
68  "WM_ENABLE",
69  "WM_SETREDRAW",
70  "WM_SETTEXT",
71  "WM_GETTEXT",
72  "WM_GETTEXTLENGTH",
73  "WM_PAINT",
74  "WM_CLOSE", /* 0x10 */
75  "WM_QUERYENDSESSION",
76  "WM_QUIT",
77  "WM_QUERYOPEN",
78  "WM_ERASEBKGND",
79  "WM_SYSCOLORCHANGE",
80  "WM_ENDSESSION",
81  "wm_systemerror",
82  "WM_SHOWWINDOW",
83  "WM_CTLCOLOR",
84  "WM_WININICHANGE",
85  "WM_DEVMODECHANGE",
86  "WM_ACTIVATEAPP",
87  "WM_FONTCHANGE",
88  "WM_TIMECHANGE",
89  "WM_CANCELMODE",
90  "WM_SETCURSOR", /* 0x20 */
91  "WM_MOUSEACTIVATE",
92  "WM_CHILDACTIVATE",
93  "WM_QUEUESYNC",
94  "WM_GETMINMAXINFO",
95  "wm_unused3",
96  "wm_painticon",
97  "WM_ICONERASEBKGND",
98  "WM_NEXTDLGCTL",
99  "wm_alttabactive",
100  "WM_SPOOLERSTATUS",
101  "WM_DRAWITEM",
102  "WM_MEASUREITEM",
103  "WM_DELETEITEM",
104  "WM_VKEYTOITEM",
105  "WM_CHARTOITEM",
106  "WM_SETFONT", /* 0x30 */
107  "WM_GETFONT",
108  "WM_SETHOTKEY",
109  "WM_GETHOTKEY",
110  "wm_filesyschange",
111  "wm_isactiveicon",
112  "wm_queryparkicon",
113  "WM_QUERYDRAGICON",
114  "wm_querysavestate",
115  "WM_COMPAREITEM",
116  "wm_testing",
117  NULL,
118  NULL,
119  "WM_GETOBJECT", /* 0x3d */
120  "wm_activateshellwindow",
121  NULL,
122 
123  NULL, /* 0x40 */
124  "wm_compacting", NULL, NULL,
125  "WM_COMMNOTIFY", NULL,
126  "WM_WINDOWPOSCHANGING", /* 0x0046 */
127  "WM_WINDOWPOSCHANGED", /* 0x0047 */
128  "WM_POWER", NULL,
129  "WM_COPYDATA",
130  "WM_CANCELJOURNAL", NULL, NULL,
131  "WM_NOTIFY", NULL,
132 
133  /* 0x0050 */
134  "WM_INPUTLANGCHANGEREQUEST",
135  "WM_INPUTLANGCHANGE",
136  "WM_TCARD",
137  "WM_HELP",
138  "WM_USERCHANGED",
139  "WM_NOTIFYFORMAT", NULL, NULL,
140  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
141 
142  /* 0x0060 */
143  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
144  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
145 
146  /* 0x0070 */
147  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
148  NULL, NULL, NULL,
149  "WM_CONTEXTMENU",
150  "WM_STYLECHANGING",
151  "WM_STYLECHANGED",
152  "WM_DISPLAYCHANGE",
153  "WM_GETICON",
154 
155  "WM_SETICON", /* 0x0080 */
156  "WM_NCCREATE", /* 0x0081 */
157  "WM_NCDESTROY", /* 0x0082 */
158  "WM_NCCALCSIZE", /* 0x0083 */
159  "WM_NCHITTEST", /* 0x0084 */
160  "WM_NCPAINT", /* 0x0085 */
161  "WM_NCACTIVATE", /* 0x0086 */
162  "WM_GETDLGCODE", /* 0x0087 */
163  "WM_SYNCPAINT",
164  "WM_SYNCTASK", NULL, NULL, NULL, NULL, NULL, NULL,
165 
166  /* 0x0090 */
167  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
168  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
169 
170  /* 0x00A0 */
171  "WM_NCMOUSEMOVE", /* 0x00a0 */
172  "WM_NCLBUTTONDOWN", /* 0x00a1 */
173  "WM_NCLBUTTONUP", /* 0x00a2 */
174  "WM_NCLBUTTONDBLCLK", /* 0x00a3 */
175  "WM_NCRBUTTONDOWN", /* 0x00a4 */
176  "WM_NCRBUTTONUP", /* 0x00a5 */
177  "WM_NCRBUTTONDBLCLK", /* 0x00a6 */
178  "WM_NCMBUTTONDOWN", /* 0x00a7 */
179  "WM_NCMBUTTONUP", /* 0x00a8 */
180  "WM_NCMBUTTONDBLCLK", /* 0x00a9 */
181  NULL, /* 0x00aa */
182  "WM_NCXBUTTONDOWN", /* 0x00ab */
183  "WM_NCXBUTTONUP", /* 0x00ac */
184  "WM_NCXBUTTONDBLCLK", /* 0x00ad */
185  NULL, /* 0x00ae */
186  NULL, /* 0x00af */
187 
188  /* 0x00B0 - Win32 Edit controls */
189  "EM_GETSEL", /* 0x00b0 */
190  "EM_SETSEL", /* 0x00b1 */
191  "EM_GETRECT", /* 0x00b2 */
192  "EM_SETRECT", /* 0x00b3 */
193  "EM_SETRECTNP", /* 0x00b4 */
194  "EM_SCROLL", /* 0x00b5 */
195  "EM_LINESCROLL", /* 0x00b6 */
196  "EM_SCROLLCARET", /* 0x00b7 */
197  "EM_GETMODIFY", /* 0x00b8 */
198  "EM_SETMODIFY", /* 0x00b9 */
199  "EM_GETLINECOUNT", /* 0x00ba */
200  "EM_LINEINDEX", /* 0x00bb */
201  "EM_SETHANDLE", /* 0x00bc */
202  "EM_GETHANDLE", /* 0x00bd */
203  "EM_GETTHUMB", /* 0x00be */
204  NULL, /* 0x00bf */
205 
206  NULL, /* 0x00c0 */
207  "EM_LINELENGTH", /* 0x00c1 */
208  "EM_REPLACESEL", /* 0x00c2 */
209  NULL, /* 0x00c3 */
210  "EM_GETLINE", /* 0x00c4 */
211  "EM_LIMITTEXT", /* 0x00c5 */
212  "EM_CANUNDO", /* 0x00c6 */
213  "EM_UNDO", /* 0x00c7 */
214  "EM_FMTLINES", /* 0x00c8 */
215  "EM_LINEFROMCHAR", /* 0x00c9 */
216  NULL, /* 0x00ca */
217  "EM_SETTABSTOPS", /* 0x00cb */
218  "EM_SETPASSWORDCHAR", /* 0x00cc */
219  "EM_EMPTYUNDOBUFFER", /* 0x00cd */
220  "EM_GETFIRSTVISIBLELINE", /* 0x00ce */
221  "EM_SETREADONLY", /* 0x00cf */
222 
223  "EM_SETWORDBREAKPROC", /* 0x00d0 */
224  "EM_GETWORDBREAKPROC", /* 0x00d1 */
225  "EM_GETPASSWORDCHAR", /* 0x00d2 */
226  "EM_SETMARGINS", /* 0x00d3 */
227  "EM_GETMARGINS", /* 0x00d4 */
228  "EM_GETLIMITTEXT", /* 0x00d5 */
229  "EM_POSFROMCHAR", /* 0x00d6 */
230  "EM_CHARFROMPOS", /* 0x00d7 */
231  "EM_SETIMESTATUS", /* 0x00d8 */
232  "EM_GETIMESTATUS", /* 0x00d9 */
233  NULL, NULL, NULL, NULL, NULL, NULL,
234 
235  /* 0x00E0 - Win32 Scrollbars */
236  "SBM_SETPOS", /* 0x00e0 */
237  "SBM_GETPOS", /* 0x00e1 */
238  "SBM_SETRANGE", /* 0x00e2 */
239  "SBM_GETRANGE", /* 0x00e3 */
240  "SBM_ENABLE_ARROWS", /* 0x00e4 */
241  NULL,
242  "SBM_SETRANGEREDRAW", /* 0x00e6 */
243  NULL, NULL,
244  "SBM_SETSCROLLINFO", /* 0x00e9 */
245  "SBM_GETSCROLLINFO", /* 0x00ea */
246  NULL, NULL, NULL, NULL, NULL,
247 
248  /* 0x00F0 - Win32 Buttons */
249  "BM_GETCHECK", /* 0x00f0 */
250  "BM_SETCHECK", /* 0x00f1 */
251  "BM_GETSTATE", /* 0x00f2 */
252  "BM_SETSTATE", /* 0x00f3 */
253  "BM_SETSTYLE", /* 0x00f4 */
254  "BM_CLICK", /* 0x00f5 */
255  "BM_GETIMAGE", /* 0x00f6 */
256  "BM_SETIMAGE", /* 0x00f7 */
257  NULL, NULL, NULL, NULL, NULL, NULL,
258  "WM_INPUT_DEVICE_CHANGE", /* 0x00fe */
259  "WM_INPUT", /* 0x00ff */
260 
261  "WM_KEYDOWN", /* 0x0100 */
262  "WM_KEYUP", /* 0x0101 */
263  "WM_CHAR", /* 0x0102 */
264  "WM_DEADCHAR", /* 0x0103 */
265  "WM_SYSKEYDOWN", /* 0x0104 */
266  "WM_SYSKEYUP", /* 0x0105 */
267  "WM_SYSCHAR", /* 0x0106 */
268  "WM_SYSDEADCHAR", /* 0x0107 */
269  NULL,
270  "WM_UNICHAR", /* 0x0109 */
271  "WM_CONVERTREQUEST", /* 0x010a */
272  "WM_CONVERTRESULT", /* 0x010b */
273  "WM_INTERIM", /* 0x010c */
274  "WM_IME_STARTCOMPOSITION", /* 0x010d */
275  "WM_IME_ENDCOMPOSITION", /* 0x010e */
276  "WM_IME_COMPOSITION", /* 0x010f */
277 
278  "WM_INITDIALOG", /* 0x0110 */
279  "WM_COMMAND", /* 0x0111 */
280  "WM_SYSCOMMAND", /* 0x0112 */
281  "WM_TIMER", /* 0x0113 */
282  "WM_HSCROLL", /* 0x0114 */
283  "WM_VSCROLL", /* 0x0115 */
284  "WM_INITMENU", /* 0x0116 */
285  "WM_INITMENUPOPUP", /* 0x0117 */
286  "WM_SYSTIMER", /* 0x0118 */
287  NULL, NULL, NULL, NULL, NULL, NULL,
288  "WM_MENUSELECT", /* 0x011f */
289 
290  "WM_MENUCHAR", /* 0x0120 */
291  "WM_ENTERIDLE", /* 0x0121 */
292 
293  "WM_MENURBUTTONUP", /* 0x0122 */
294  "WM_MENUDRAG", /* 0x0123 */
295  "WM_MENUGETOBJECT", /* 0x0124 */
296  "WM_UNINITMENUPOPUP", /* 0x0125 */
297  "WM_MENUCOMMAND", /* 0x0126 */
298  "WM_CHANGEUISTATE", /* 0x0127 */
299  "WM_UPDATEUISTATE", /* 0x0128 */
300  "WM_QUERYUISTATE", /* 0x0129 */
301 
302  NULL, NULL, NULL, NULL, NULL, NULL,
303 
304  /* 0x0130 */
305  NULL,
306  "WM_LBTRACKPOINT", /* 0x0131 */
307  "WM_CTLCOLORMSGBOX", /* 0x0132 */
308  "WM_CTLCOLOREDIT", /* 0x0133 */
309  "WM_CTLCOLORLISTBOX", /* 0x0134 */
310  "WM_CTLCOLORBTN", /* 0x0135 */
311  "WM_CTLCOLORDLG", /* 0x0136 */
312  "WM_CTLCOLORSCROLLBAR", /* 0x0137 */
313  "WM_CTLCOLORSTATIC", /* 0x0138 */
314  NULL, NULL, NULL, NULL, NULL, NULL, NULL,
315 
316  /* 0x0140 - Win32 Comboboxes */
317  "CB_GETEDITSEL", /* 0x0140 */
318  "CB_LIMITTEXT", /* 0x0141 */
319  "CB_SETEDITSEL", /* 0x0142 */
320  "CB_ADDSTRING", /* 0x0143 */
321  "CB_DELETESTRING", /* 0x0144 */
322  "CB_DIR", /* 0x0145 */
323  "CB_GETCOUNT", /* 0x0146 */
324  "CB_GETCURSEL", /* 0x0147 */
325  "CB_GETLBTEXT", /* 0x0148 */
326  "CB_GETLBTEXTLEN", /* 0x0149 */
327  "CB_INSERTSTRING", /* 0x014a */
328  "CB_RESETCONTENT", /* 0x014b */
329  "CB_FINDSTRING", /* 0x014c */
330  "CB_SELECTSTRING", /* 0x014d */
331  "CB_SETCURSEL", /* 0x014e */
332  "CB_SHOWDROPDOWN", /* 0x014f */
333 
334  "CB_GETITEMDATA", /* 0x0150 */
335  "CB_SETITEMDATA", /* 0x0151 */
336  "CB_GETDROPPEDCONTROLRECT", /* 0x0152 */
337  "CB_SETITEMHEIGHT", /* 0x0153 */
338  "CB_GETITEMHEIGHT", /* 0x0154 */
339  "CB_SETEXTENDEDUI", /* 0x0155 */
340  "CB_GETEXTENDEDUI", /* 0x0156 */
341  "CB_GETDROPPEDSTATE", /* 0x0157 */
342  "CB_FINDSTRINGEXACT", /* 0x0158 */
343  "CB_SETLOCALE", /* 0x0159 */
344  "CB_GETLOCALE", /* 0x015a */
345  "CB_GETTOPINDEX", /* 0x015b */
346  "CB_SETTOPINDEX", /* 0x015c */
347  "CB_GETHORIZONTALEXTENT", /* 0x015d */
348  "CB_SETHORIZONTALEXTENT", /* 0x015e */
349  "CB_GETDROPPEDWIDTH", /* 0x015f */
350 
351  "CB_SETDROPPEDWIDTH", /* 0x0160 */
352  "CB_INITSTORAGE", /* 0x0161 */
353  NULL, NULL, NULL, NULL, NULL, NULL,
354  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
355 
356  /* 0x0170 - Win32 Static controls */
357  "STM_SETICON", /* 0x0170 */
358  "STM_GETICON", /* 0x0171 */
359  "STM_SETIMAGE", /* 0x0172 */
360  "STM_GETIMAGE", /* 0x0173 */
361  NULL, NULL, NULL, NULL,
362  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
363 
364  /* 0x0180 - Win32 Listboxes */
365  "LB_ADDSTRING", /* 0x0180 */
366  "LB_INSERTSTRING", /* 0x0181 */
367  "LB_DELETESTRING", /* 0x0182 */
368  "LB_SELITEMRANGEEX", /* 0x0183 */
369  "LB_RESETCONTENT", /* 0x0184 */
370  "LB_SETSEL", /* 0x0185 */
371  "LB_SETCURSEL", /* 0x0186 */
372  "LB_GETSEL", /* 0x0187 */
373  "LB_GETCURSEL", /* 0x0188 */
374  "LB_GETTEXT", /* 0x0189 */
375  "LB_GETTEXTLEN", /* 0x018a */
376  "LB_GETCOUNT", /* 0x018b */
377  "LB_SELECTSTRING", /* 0x018c */
378  "LB_DIR", /* 0x018d */
379  "LB_GETTOPINDEX", /* 0x018e */
380  "LB_FINDSTRING", /* 0x018f */
381 
382  "LB_GETSELCOUNT", /* 0x0190 */
383  "LB_GETSELITEMS", /* 0x0191 */
384  "LB_SETTABSTOPS", /* 0x0192 */
385  "LB_GETHORIZONTALEXTENT", /* 0x0193 */
386  "LB_SETHORIZONTALEXTENT", /* 0x0194 */
387  "LB_SETCOLUMNWIDTH", /* 0x0195 */
388  "LB_ADDFILE", /* 0x0196 */
389  "LB_SETTOPINDEX", /* 0x0197 */
390  "LB_GETITEMRECT", /* 0x0198 */
391  "LB_GETITEMDATA", /* 0x0199 */
392  "LB_SETITEMDATA", /* 0x019a */
393  "LB_SELITEMRANGE", /* 0x019b */
394  "LB_SETANCHORINDEX", /* 0x019c */
395  "LB_GETANCHORINDEX", /* 0x019d */
396  "LB_SETCARETINDEX", /* 0x019e */
397  "LB_GETCARETINDEX", /* 0x019f */
398 
399  "LB_SETITEMHEIGHT", /* 0x01a0 */
400  "LB_GETITEMHEIGHT", /* 0x01a1 */
401  "LB_FINDSTRINGEXACT", /* 0x01a2 */
402  "LB_CARETON", /* 0x01a3 */
403  "LB_CARETOFF", /* 0x01a4 */
404  "LB_SETLOCALE", /* 0x01a5 */
405  "LB_GETLOCALE", /* 0x01a6 */
406  "LB_SETCOUNT", /* 0x01a7 */
407  "LB_INITSTORAGE", /* 0x01a8 */
408  "LB_ITEMFROMPOINT", /* 0x01a9 */
409  NULL, NULL, NULL, NULL, NULL, NULL,
410 
411  /* 0x01B0 */
412  NULL, NULL,
413  "LB_GETLISTBOXINFO", /* 0x01b2 */
414  NULL, NULL, NULL, NULL, NULL,
415  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
416 
417  /* 0x01C0 */
418  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
419  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
420 
421  /* 0x01D0 */
422  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
423  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
424 
425  /* 0x01E0 */
426  NULL,
427  "MN_GETHMENU", /* 0x01E1 */
428  NULL, NULL, NULL, NULL, NULL, NULL,
429  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
430 
431  /* 0x01F0 */
432  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
433  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
434 
435  "WM_MOUSEMOVE", /* 0x0200 */
436  "WM_LBUTTONDOWN", /* 0x0201 */
437  "WM_LBUTTONUP", /* 0x0202 */
438  "WM_LBUTTONDBLCLK", /* 0x0203 */
439  "WM_RBUTTONDOWN", /* 0x0204 */
440  "WM_RBUTTONUP", /* 0x0205 */
441  "WM_RBUTTONDBLCLK", /* 0x0206 */
442  "WM_MBUTTONDOWN", /* 0x0207 */
443  "WM_MBUTTONUP", /* 0x0208 */
444  "WM_MBUTTONDBLCLK", /* 0x0209 */
445  "WM_MOUSEWHEEL", /* 0x020A */
446  "WM_XBUTTONDOWN", /* 0x020B */
447  "WM_XBUTTONUP", /* 0x020C */
448  "WM_XBUTTONDBLCLK", /* 0x020D */
449  "WM_MOUSEHWHEEL", /* 0x020E */
450  NULL,
451 
452  "WM_PARENTNOTIFY", /* 0x0210 */
453  "WM_ENTERMENULOOP", /* 0x0211 */
454  "WM_EXITMENULOOP", /* 0x0212 */
455  "WM_NEXTMENU", /* 0x0213 */
456  "WM_SIZING",
457  "WM_CAPTURECHANGED",
458  "WM_MOVING", NULL,
459  "WM_POWERBROADCAST",
460  "WM_DEVICECHANGE", NULL, NULL, NULL, NULL, NULL, NULL,
461 
462  "WM_MDICREATE", /* 0x0220 */
463  "WM_MDIDESTROY", /* 0x0221 */
464  "WM_MDIACTIVATE", /* 0x0222 */
465  "WM_MDIRESTORE", /* 0x0223 */
466  "WM_MDINEXT", /* 0x0224 */
467  "WM_MDIMAXIMIZE", /* 0x0225 */
468  "WM_MDITILE", /* 0x0226 */
469  "WM_MDICASCADE", /* 0x0227 */
470  "WM_MDIICONARRANGE", /* 0x0228 */
471  "WM_MDIGETACTIVE", /* 0x0229 */
472 
473  "WM_DROPOBJECT",
474  "WM_QUERYDROPOBJECT",
475  "WM_BEGINDRAG",
476  "WM_DRAGLOOP",
477  "WM_DRAGSELECT",
478  "WM_DRAGMOVE",
479 
480  /* 0x0230*/
481  "WM_MDISETMENU", /* 0x0230 */
482  "WM_ENTERSIZEMOVE", /* 0x0231 */
483  "WM_EXITSIZEMOVE", /* 0x0232 */
484  "WM_DROPFILES", /* 0x0233 */
485  "WM_MDIREFRESHMENU", NULL, NULL, NULL,
486  /* 0x0238*/
487  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
488 
489  /* 0x0240 */
490  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
491  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
492 
493  /* 0x0250 */
494  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
495  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
496 
497  /* 0x0260 */
498  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
499  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
500  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
501  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
502 
503  /* 0x0280 */
504  NULL,
505  "WM_IME_SETCONTEXT", /* 0x0281 */
506  "WM_IME_NOTIFY", /* 0x0282 */
507  "WM_IME_CONTROL", /* 0x0283 */
508  "WM_IME_COMPOSITIONFULL", /* 0x0284 */
509  "WM_IME_SELECT", /* 0x0285 */
510  "WM_IME_CHAR", /* 0x0286 */
511  NULL,
512  "WM_IME_REQUEST", /* 0x0288 */
513  NULL, NULL, NULL, NULL, NULL, NULL, NULL,
514  "WM_IME_KEYDOWN", /* 0x0290 */
515  "WM_IME_KEYUP", /* 0x0291 */
516  NULL, NULL, NULL, NULL, NULL, NULL,
517  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
518 
519  /* 0x02a0 */
520  "WM_NCMOUSEHOVER", /* 0x02A0 */
521  "WM_MOUSEHOVER", /* 0x02A1 */
522  "WM_NCMOUSELEAVE", /* 0x02A2 */
523  "WM_MOUSELEAVE", /* 0x02A3 */
524  NULL, NULL, NULL, NULL, NULL, NULL,
525  NULL, NULL, NULL, NULL, NULL, NULL, NULL,
526  "WM_WTSSESSION_CHANGE", /* 0x02B1 */
527  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
528  NULL, NULL, NULL, NULL, NULL, NULL,
529 
530  /* 0x02c0 */
531  "WM_TABLET_FIRST", /* 0x02c0 */
532  "WM_TABLET_FIRST+1", /* 0x02c1 */
533  "WM_TABLET_FIRST+2", /* 0x02c2 */
534  "WM_TABLET_FIRST+3", /* 0x02c3 */
535  "WM_TABLET_FIRST+4", /* 0x02c4 */
536  "WM_TABLET_FIRST+5", /* 0x02c5 */
537  "WM_TABLET_FIRST+7", /* 0x02c6 */
538  "WM_TABLET_FIRST+8", /* 0x02c7 */
539  "WM_TABLET_FIRST+9", /* 0x02c8 */
540  "WM_TABLET_FIRST+10", /* 0x02c9 */
541  "WM_TABLET_FIRST+11", /* 0x02ca */
542  "WM_TABLET_FIRST+12", /* 0x02cb */
543  "WM_TABLET_FIRST+13", /* 0x02cc */
544  "WM_TABLET_FIRST+14", /* 0x02cd */
545  "WM_TABLET_FIRST+15", /* 0x02ce */
546  "WM_TABLET_FIRST+16", /* 0x02cf */
547  "WM_TABLET_FIRST+17", /* 0x02d0 */
548  "WM_TABLET_FIRST+18", /* 0x02d1 */
549  "WM_TABLET_FIRST+19", /* 0x02d2 */
550  "WM_TABLET_FIRST+20", /* 0x02d3 */
551  "WM_TABLET_FIRST+21", /* 0x02d4 */
552  "WM_TABLET_FIRST+22", /* 0x02d5 */
553  "WM_TABLET_FIRST+23", /* 0x02d6 */
554  "WM_TABLET_FIRST+24", /* 0x02d7 */
555  "WM_TABLET_FIRST+25", /* 0x02d8 */
556  "WM_TABLET_FIRST+26", /* 0x02d9 */
557  "WM_TABLET_FIRST+27", /* 0x02da */
558  "WM_TABLET_FIRST+28", /* 0x02db */
559  "WM_TABLET_FIRST+29", /* 0x02dc */
560  "WM_TABLET_FIRST+30", /* 0x02dd */
561  "WM_TABLET_FIRST+31", /* 0x02de */
562  "WM_TABLET_LAST", /* 0x02df */
563 
564  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
565  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
566  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
567  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
568 
569  "WM_CUT", /* 0x0300 */
570  "WM_COPY",
571  "WM_PASTE",
572  "WM_CLEAR",
573  "WM_UNDO",
574  "WM_RENDERFORMAT",
575  "WM_RENDERALLFORMATS",
576  "WM_DESTROYCLIPBOARD",
577  "WM_DRAWCLIPBOARD",
578  "WM_PAINTCLIPBOARD",
579  "WM_VSCROLLCLIPBOARD",
580  "WM_SIZECLIPBOARD",
581  "WM_ASKCBFORMATNAME",
582  "WM_CHANGECBCHAIN",
583  "WM_HSCROLLCLIPBOARD",
584  "WM_QUERYNEWPALETTE", /* 0x030f*/
585 
586  "WM_PALETTEISCHANGING",
587  "WM_PALETTECHANGED",
588  "WM_HOTKEY", /* 0x0312 */
589  "WM_POPUPSYSTEMMENU", /* 0x0313 */
590  NULL, NULL, NULL,
591  "WM_PRINT", /* 0x0317 */
592  "WM_PRINTCLIENT", /* 0x0318 */
593  "WM_APPCOMMAND", /* 0x0319 */
594  "WM_THEMECHANGED", /* 0x031A */
595  NULL, NULL,
596  "WM_CLIPBOARDUPDATE", /* 0x031D */
597  "WM_DWMCOMPOSITIONCHANGED", /* 0x031E */
598  "WM_DWMNCRENDERINGCHANGED", /* 0x031F */
599 
600  "WM_DWMCOLORIZATIONCOLORCHANGED", /* 0x0320 */
601  "WM_DWMWINDOWMAXIMIZEDCHANGE", /* 0x0321 */
602  NULL, NULL, NULL, NULL, NULL, NULL,
603  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
604 
605  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
606  NULL, NULL, NULL, NULL, NULL, NULL, NULL,
607  "WM_GETTITLEBARINFOEX", /* 0x033F */
608 
609  /* 0x0340 */
610  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
611  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
612  /* 0x0350 */
613  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
614  "WM_HANDHELDFIRST", /* 0x0358 */
615  "WM_HANDHELDFIRST+1", /* 0x0359 */
616  "WM_HANDHELDFIRST+2", /* 0x035A */
617  "WM_HANDHELDFIRST+3", /* 0x035B */
618  "WM_HANDHELDFIRST+4", /* 0x035C */
619  "WM_HANDHELDFIRST+5", /* 0x035D */
620  "WM_HANDHELDFIRST+6", /* 0x035E */
621  "WM_HANDHELDLAST", /* 0x035F */
622 
623  "WM_QUERYAFXWNDPROC", /* 0x0360 WM_AFXFIRST */
624  "WM_SIZEPARENT", /* 0x0361 */
625  "WM_SETMESSAGESTRING", /* 0x0362 */
626  "WM_IDLEUPDATECMDUI", /* 0x0363 */
627  "WM_INITIALUPDATE", /* 0x0364 */
628  "WM_COMMANDHELP", /* 0x0365 */
629  "WM_HELPHITTEST", /* 0x0366 */
630  "WM_EXITHELPMODE", /* 0x0367 */
631  "WM_RECALCPARENT", /* 0x0368 */
632  "WM_SIZECHILD", /* 0x0369 */
633  "WM_KICKIDLE", /* 0x036A */
634  "WM_QUERYCENTERWND", /* 0x036B */
635  "WM_DISABLEMODAL", /* 0x036C */
636  "WM_FLOATSTATUS", /* 0x036D */
637  "WM_ACTIVATETOPLEVEL", /* 0x036E */
638  "WM_QUERY3DCONTROLS", /* 0x036F */
639  NULL,NULL,NULL,
640  "WM_SOCKET_NOTIFY", /* 0x0373 */
641  "WM_SOCKET_DEAD", /* 0x0374 */
642  "WM_POPMESSAGESTRING", /* 0x0375 */
643  "WM_OCC_LOADFROMSTREAM", /* 0x0376 */
644  "WM_OCC_LOADFROMSTORAGE", /* 0x0377 */
645  "WM_OCC_INITNEW", /* 0x0378 */
646  "WM_QUEUE_SENTINEL", /* 0x0379 */
647  "WM_OCC_LOADFROMSTREAM_EX", /* 0x037A */
648  "WM_OCC_LOADFROMSTORAGE_EX", /* 0x037B */
649 
650  NULL,NULL,NULL,
651  "WM_AFXLAST", /* 0x037F */
652 
653  "WM_PENWINFIRST", /* 0x0380 */
654  "WM_RCRESULT", /* 0x0381 */
655  "WM_HOOKRCRESULT", /* 0x0382 */
656  "WM_GLOBALRCCHANGE", /* 0x0383 */
657  "WM_SKB", /* 0x0384 */
658  "WM_HEDITCTL", /* 0x0385 */
659  NULL, NULL,
660  NULL, NULL, NULL, NULL, NULL, NULL, NULL,
661  "WM_PENWINLAST", /* 0x038F */
662 
663  "WM_COALESCE_FIRST", /* 0x0390 */
664  NULL, NULL, NULL, NULL, NULL, NULL, NULL,
665  NULL, NULL, NULL, NULL, NULL, NULL, NULL,
666  "WM_COALESCE_LAST", /* 0x039F */
667 
668  /* 0x03a0 */
669  "MM_JOY1MOVE",
670  "MM_JOY2MOVE",
671  "MM_JOY1ZMOVE",
672  "MM_JOY2ZMOVE",
673  NULL, NULL, NULL, NULL,
674  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
675 
676  /* 0x03b0 */
677  NULL, NULL, NULL, NULL, NULL,
678  "MM_JOY1BUTTONDOWN",
679  "MM_JOY2BUTTONDOWN",
680  "MM_JOY1BUTTONUP",
681  "MM_JOY2BUTTONUP",
682  "MM_MCINOTIFY", /* 0x03B9 */
683  NULL,
684  "MM_WOM_OPEN", /* 0x03BB */
685  "MM_WOM_CLOSE", /* 0x03BC */
686  "MM_WOM_DONE", /* 0x03BD */
687  "MM_WIM_OPEN", /* 0x03BE */
688  "MM_WIM_CLOSE", /* 0x03BF */
689 
690  /* 0x03c0 */
691  "MM_WIM_DATA", /* 0x03C0 */
692  "MM_MIM_OPEN", /* 0x03C1 */
693  "MM_MIM_CLOSE", /* 0x03C2 */
694  "MM_MIM_DATA", /* 0x03C3 */
695  "MM_MIM_LONGDATA", /* 0x03C4 */
696  "MM_MIM_ERROR", /* 0x03C5 */
697  "MM_MIM_LONGERROR", /* 0x03C6 */
698  "MM_MOM_OPEN", /* 0x03C7 */
699  "MM_MOM_CLOSE", /* 0x03C8 */
700  "MM_MOM_DONE", /* 0x03C9 */
701  "MM_MOM_POSITIONCB", /* 0x03CA */
702  "MM_MCISIGNAL", /* 0x03CB */
703  "MM_MIM_MOREDATA", /* 0x03CC */
704  NULL, NULL, NULL,
705 
706  /* 0x03d0 */
707  "MM_MIXM_LINE_CHANGE",
708  "MM_MIXM_CONTROL_CHANGE",
709  NULL, NULL, NULL, NULL, NULL, NULL,
710  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
711 
712  /* 0x03e0 */
713  "WM_DDE_INITIATE", /* 0x3E0 */
714  "WM_DDE_TERMINATE", /* 0x3E1 */
715  "WM_DDE_ADVISE", /* 0x3E2 */
716  "WM_DDE_UNADVISE", /* 0x3E3 */
717  "WM_DDE_ACK", /* 0x3E4 */
718  "WM_DDE_DATA", /* 0x3E5 */
719  "WM_DDE_REQUEST", /* 0x3E6 */
720  "WM_DDE_POKE", /* 0x3E7 */
721  "WM_DDE_EXECUTE", /* 0x3E8 */
722  NULL, NULL, NULL, NULL, NULL, NULL, NULL,
723 
724 
725  /* 0x03f0 */
726  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
727  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
728 
729  "WM_USER" /* 0x0400 */
730 };
731 
732 
733 #define SPY_MAX_LVMMSGNUM 182
734 static const char * const LVMMessageTypeNames[SPY_MAX_LVMMSGNUM + 1] =
735 {
736  "LVM_GETBKCOLOR", /* 1000 */
737  "LVM_SETBKCOLOR",
738  "LVM_GETIMAGELIST",
739  "LVM_SETIMAGELIST",
740  "LVM_GETITEMCOUNT",
741  "LVM_GETITEMA",
742  "LVM_SETITEMA",
743  "LVM_INSERTITEMA",
744  "LVM_DELETEITEM",
745  "LVM_DELETEALLITEMS",
746  "LVM_GETCALLBACKMASK",
747  "LVM_SETCALLBACKMASK",
748  "LVM_GETNEXTITEM",
749  "LVM_FINDITEMA",
750  "LVM_GETITEMRECT",
751  "LVM_SETITEMPOSITION",
752  "LVM_GETITEMPOSITION",
753  "LVM_GETSTRINGWIDTHA",
754  "LVM_HITTEST",
755  "LVM_ENSUREVISIBLE",
756  "LVM_SCROLL",
757  "LVM_REDRAWITEMS",
758  "LVM_ARRANGE",
759  "LVM_EDITLABELA",
760  "LVM_GETEDITCONTROL",
761  "LVM_GETCOLUMNA",
762  "LVM_SETCOLUMNA",
763  "LVM_INSERTCOLUMNA",
764  "LVM_DELETECOLUMN",
765  "LVM_GETCOLUMNWIDTH",
766  "LVM_SETCOLUMNWIDTH",
767  "LVM_GETHEADER",
768  NULL,
769  "LVM_CREATEDRAGIMAGE",
770  "LVM_GETVIEWRECT",
771  "LVM_GETTEXTCOLOR",
772  "LVM_SETTEXTCOLOR",
773  "LVM_GETTEXTBKCOLOR",
774  "LVM_SETTEXTBKCOLOR",
775  "LVM_GETTOPINDEX",
776  "LVM_GETCOUNTPERPAGE",
777  "LVM_GETORIGIN",
778  "LVM_UPDATE",
779  "LVM_SETITEMSTATE",
780  "LVM_GETITEMSTATE",
781  "LVM_GETITEMTEXTA",
782  "LVM_SETITEMTEXTA",
783  "LVM_SETITEMCOUNT",
784  "LVM_SORTITEMS",
785  "LVM_SETITEMPOSITION32",
786  "LVM_GETSELECTEDCOUNT",
787  "LVM_GETITEMSPACING",
788  "LVM_GETISEARCHSTRINGA",
789  "LVM_SETICONSPACING",
790  "LVM_SETEXTENDEDLISTVIEWSTYLE",
791  "LVM_GETEXTENDEDLISTVIEWSTYLE",
792  "LVM_GETSUBITEMRECT",
793  "LVM_SUBITEMHITTEST",
794  "LVM_SETCOLUMNORDERARRAY",
795  "LVM_GETCOLUMNORDERARRAY",
796  "LVM_SETHOTITEM",
797  "LVM_GETHOTITEM",
798  "LVM_SETHOTCURSOR",
799  "LVM_GETHOTCURSOR",
800  "LVM_APPROXIMATEVIEWRECT",
801  "LVM_SETWORKAREAS",
802  "LVM_GETSELECTIONMARK",
803  "LVM_SETSELECTIONMARK",
804  "LVM_SETBKIMAGEA",
805  "LVM_GETBKIMAGEA",
806  "LVM_GETWORKAREAS",
807  "LVM_SETHOVERTIME",
808  "LVM_GETHOVERTIME",
809  "LVM_GETNUMBEROFWORKAREAS",
810  "LVM_SETTOOLTIPS",
811  "LVM_GETITEMW",
812  "LVM_SETITEMW",
813  "LVM_INSERTITEMW",
814  "LVM_GETTOOLTIPS",
815  NULL,
816  NULL,
817  NULL,
818  NULL,
819  "LVM_FINDITEMW",
820  NULL,
821  NULL,
822  NULL,
823  "LVM_GETSTRINGWIDTHW",
824  NULL,
825  NULL,
826  NULL,
827  NULL,
828  NULL,
829  NULL,
830  NULL,
831  "LVM_GETCOLUMNW",
832  "LVM_SETCOLUMNW",
833  "LVM_INSERTCOLUMNW",
834  NULL,
835  NULL,
836  NULL,
837  NULL,
838  NULL,
839  NULL,
840  NULL,
841  NULL,
842  NULL,
843  NULL,
844  NULL,
845  NULL,
846  NULL,
847  NULL,
848  NULL,
849  NULL,
850  NULL,
851  "LVM_GETITEMTEXTW",
852  "LVM_SETITEMTEXTW",
853  "LVM_GETISEARCHSTRINGW",
854  "LVM_EDITLABELW",
855  NULL,
856  NULL,
857  NULL,
858  NULL,
859  NULL,
860  NULL,
861  NULL,
862  NULL,
863  NULL,
864  NULL,
865  NULL,
866  NULL,
867  NULL,
868  NULL,
869  NULL,
870  NULL,
871  NULL,
872  NULL,
873  NULL,
874  "LVM_SETBKIMAGEW",
875  "LVM_GETBKIMAGEW", /* 0x108B */
876  "LVM_SETSELECTEDCOLUMN",
877  "LVM_SETTILEWIDTH",
878  "LVM_SETVIEW",
879  "LVM_GETVIEW",
880  NULL,
881  "LVM_INSERTGROUP",
882  NULL,
883  "LVM_SETGROUPINFO",
884  NULL,
885  "LVM_GETGROUPINFO",
886  "LVM_REMOVEGROUP",
887  "LVM_MOVEGROUP",
888  NULL,
889  NULL,
890  "LVM_MOVEITEMTOGROUP",
891  "LVM_SETGROUPMETRICS",
892  "LVM_GETGROUPMETRICS",
893  "LVM_ENABLEGROUPVIEW",
894  "LVM_SORTGROUPS",
895  "LVM_INSERTGROUPSORTED",
896  "LVM_REMOVEALLGROUPS",
897  "LVM_HASGROUP",
898  "LVM_SETTILEVIEWINFO",
899  "LVM_GETTILEVIEWINFO",
900  "LVM_SETTILEINFO",
901  "LVM_GETTILEINFO",
902  "LVM_SETINSERTMARK",
903  "LVM_GETINSERTMARK",
904  "LVM_INSERTMARKHITTEST",
905  "LVM_GETINSERTMARKRECT",
906  "LVM_SETINSERTMARKCOLOR",
907  "LVM_GETINSERTMARKCOLOR",
908  NULL,
909  "LVM_SETINFOTIP",
910  "LVM_GETSELECTEDCOLUMN",
911  "LVM_ISGROUPVIEWENABLED",
912  "LVM_GETOUTLINECOLOR",
913  "LVM_SETOUTLINECOLOR",
914  NULL,
915  "LVM_CANCELEDITLABEL",
916  "LVM_MAPINDEXTOID",
917  "LVM_MAPIDTOINDEX",
918  "LVM_ISITEMVISIBLE"
919 };
920 
921 
922 #define SPY_MAX_TVMSGNUM 65
923 static const char * const TVMessageTypeNames[SPY_MAX_TVMSGNUM + 1] =
924 {
925  "TVM_INSERTITEMA", /* 1100 */
926  "TVM_DELETEITEM",
927  "TVM_EXPAND",
928  NULL,
929  "TVM_GETITEMRECT",
930  "TVM_GETCOUNT",
931  "TVM_GETINDENT",
932  "TVM_SETINDENT",
933  "TVM_GETIMAGELIST",
934  "TVM_SETIMAGELIST",
935  "TVM_GETNEXTITEM",
936  "TVM_SELECTITEM",
937  "TVM_GETITEMA",
938  "TVM_SETITEMA",
939  "TVM_EDITLABELA",
940  "TVM_GETEDITCONTROL",
941  "TVM_GETVISIBLECOUNT",
942  "TVM_HITTEST",
943  "TVM_CREATEDRAGIMAGE",
944  "TVM_SORTCHILDREN",
945  "TVM_ENSUREVISIBLE",
946  "TVM_SORTCHILDRENCB",
947  "TVM_ENDEDITLABELNOW",
948  "TVM_GETISEARCHSTRINGA",
949  "TVM_SETTOOLTIPS",
950  "TVM_GETTOOLTIPS",
951  "TVM_SETINSERTMARK",
952  "TVM_SETITEMHEIGHT",
953  "TVM_GETITEMHEIGHT",
954  "TVM_SETBKCOLOR",
955  "TVM_SETTEXTCOLOR",
956  "TVM_GETBKCOLOR",
957  "TVM_GETTEXTCOLOR",
958  "TVM_SETSCROLLTIME",
959  "TVM_GETSCROLLTIME",
960  "TVM_UNKNOWN35",
961  "TVM_UNKNOWN36",
962  "TVM_SETINSERTMARKCOLOR",
963  "TVM_GETINSERTMARKCOLOR",
964  "TVM_GETITEMSTATE",
965  "TVM_SETLINECOLOR",
966  "TVM_GETLINECOLOR",
967  NULL,
968  NULL,
969  NULL,
970  NULL,
971  NULL,
972  NULL,
973  NULL,
974  NULL,
975  "TVM_INSERTITEMW",
976  NULL,
977  NULL,
978  NULL,
979  NULL,
980  NULL,
981  NULL,
982  NULL,
983  NULL,
984  NULL,
985  NULL,
986  NULL,
987  "TVM_GETITEMW",
988  "TVM_SETITEMW",
989  "TVM_GETISEARCHSTRINGW",
990  "TVM_EDITLABELW"
991 };
992 
993 
994 #define SPY_MAX_HDMMSGNUM 19
995 static const char * const HDMMessageTypeNames[SPY_MAX_HDMMSGNUM + 1] =
996 {
997  "HDM_GETITEMCOUNT", /* 1200 */
998  "HDM_INSERTITEMA",
999  "HDM_DELETEITEM",
1000  "HDM_GETITEMA",
1001  "HDM_SETITEMA",
1002  "HDM_LAYOUT",
1003  "HDM_HITTEST",
1004  "HDM_GETITEMRECT",
1005  "HDM_SETIMAGELIST",
1006  "HDM_GETIMAGELIST",
1007  "HDM_INSERTITEMW",
1008  "HDM_GETITEMW",
1009  "HDM_SETITEMW",
1010  NULL,
1011  NULL,
1012  "HDM_ORDERTOINDEX",
1013  "HDM_CREATEDRAGIMAGE",
1014  "GETORDERARRAYINDEX",
1015  "SETORDERARRAYINDEX",
1016  "SETHOTDIVIDER"
1017 };
1018 
1019 
1020 #define SPY_MAX_TCMMSGNUM 62
1021 static const char * const TCMMessageTypeNames[SPY_MAX_TCMMSGNUM + 1] =
1022 {
1023  NULL, /* 1300 */
1024  NULL,
1025  "TCM_SETIMAGELIST",
1026  "TCM_GETIMAGELIST",
1027  "TCM_GETITEMCOUNT",
1028  "TCM_GETITEMA",
1029  "TCM_SETITEMA",
1030  "TCM_INSERTITEMA",
1031  "TCM_DELETEITEM",
1032  "TCM_DELETEALLITEMS",
1033  "TCM_GETITEMRECT",
1034  "TCM_GETCURSEL",
1035  "TCM_SETCURSEL",
1036  "TCM_HITTEST",
1037  "TCM_SETITEMEXTRA",
1038  NULL,
1039  NULL,
1040  NULL,
1041  NULL,
1042  NULL,
1043  NULL,
1044  NULL,
1045  NULL,
1046  NULL,
1047  NULL,
1048  NULL,
1049  NULL,
1050  NULL,
1051  NULL,
1052  NULL,
1053  NULL,
1054  NULL,
1055  NULL,
1056  NULL,
1057  NULL,
1058  NULL,
1059  NULL,
1060  NULL,
1061  NULL,
1062  NULL,
1063  "TCM_ADJUSTRECT",
1064  "TCM_SETITEMSIZE",
1065  "TCM_REMOVEIMAGE",
1066  "TCM_SETPADDING",
1067  "TCM_GETROWCOUNT",
1068  "TCM_GETTOOLTIPS",
1069  "TCM_SETTOOLTIPS",
1070  "TCM_GETCURFOCUS",
1071  "TCM_SETCURFOCUS",
1072  "TCM_SETMINTABWIDTH",
1073  "TCM_DESELECTALL",
1074  "TCM_HIGHLIGHTITEM",
1075  "TCM_SETEXTENDEDSTYLE",
1076  "TCM_GETEXTENDEDSTYLE",
1077  NULL,
1078  NULL,
1079  NULL,
1080  NULL,
1081  NULL,
1082  NULL,
1083  "TCM_GETITEMW",
1084  "TCM_SETITEMW",
1085  "TCM_INSERTITEMW"
1086 };
1087 
1088 #define SPY_MAX_PGMMSGNUM 13
1089 static const char * const PGMMessageTypeNames[SPY_MAX_PGMMSGNUM + 1] =
1090 {
1091  NULL, /* 1400 */
1092  "PGM_SETCHILD",
1093  "PGM_RECALCSIZE",
1094  "PGM_FORWARDMOUSE",
1095  "PGM_SETBKCOLOR",
1096  "PGM_GETBKCOLOR",
1097  "PGM_SETBORDER",
1098  "PGM_GETBORDER",
1099  "PGM_SETPOS",
1100  "PGM_GETPOS",
1101  "PGM_SETBUTTONSIZE",
1102  "PGM_GETBUTTONSIZE",
1103  "PGM_GETBUTTONSTATE",
1104  "PGM_GETDROPTARGET"
1105 };
1106 
1107 
1108 #define SPY_MAX_CCMMSGNUM 9
1109 static const char * const CCMMessageTypeNames[SPY_MAX_CCMMSGNUM + 1] =
1110 {
1111  NULL, /* 0x2000 */
1112  "CCM_SETBKCOLOR",
1113  "CCM_SETCOLORSCHEME",
1114  "CCM_GETCOLORSCHEME",
1115  "CCM_GETDROPTARGET",
1116  "CCM_SETUNICODEFORMAT",
1117  "CCM_GETUNICODEFORMAT",
1118  "CCM_SETVERSION",
1119  "CCM_GETVERSION",
1120  "CCM_SETNOTIFYWINDOW"
1121 };
1122 
1123 #define SPY_MAX_WINEMSGNUM 9
1124 
1125 #ifndef __REACTOS__
1126 static const char * const WINEMessageTypeNames[SPY_MAX_WINEMSGNUM + 1] =
1127 {
1128  "WM_WINE_DESTROYWINDOW",
1129  "WM_WINE_SETWINDOWPOS",
1130  "WM_WINE_SHOWWINDOW",
1131  "WM_WINE_SETPARENT",
1132  "WM_WINE_SETWINDOWLONG",
1133  "WM_WINE_ENABLEWINDOW",
1134  "WM_WINE_SETACTIVEWINDOW",
1135  "WM_WINE_KEYBOARD_LL_HOOK",
1136  "WM_WINE_MOUSE_LL_HOOK",
1137 };
1138 #endif
1139 
1140 /* Virtual key names */
1141 #define SPY_MAX_VKKEYSNUM 255
1142 static const char * const VK_KeyNames[SPY_MAX_VKKEYSNUM + 1] =
1143 {
1144  NULL, /* 0x00 */
1145  "VK_LBUTTON", /* 0x01 */
1146  "VK_RBUTTON", /* 0x02 */
1147  "VK_CANCEL", /* 0x03 */
1148  "VK_MBUTTON", /* 0x04 */
1149  "VK_XBUTTON1", /* 0x05 */
1150  "VK_XBUTTON2", /* 0x06 */
1151  NULL, /* 0x07 */
1152  "VK_BACK", /* 0x08 */
1153  "VK_TAB", /* 0x09 */
1154  NULL, /* 0x0A */
1155  NULL, /* 0x0B */
1156  "VK_CLEAR", /* 0x0C */
1157  "VK_RETURN", /* 0x0D */
1158  NULL, /* 0x0E */
1159  NULL, /* 0x0F */
1160  "VK_SHIFT", /* 0x10 */
1161  "VK_CONTROL", /* 0x11 */
1162  "VK_MENU", /* 0x12 */
1163  "VK_PAUSE", /* 0x13 */
1164  "VK_CAPITAL", /* 0x14 */
1165  NULL, /* 0x15 */
1166  NULL, /* 0x16 */
1167  NULL, /* 0x17 */
1168  NULL, /* 0x18 */
1169  NULL, /* 0x19 */
1170  NULL, /* 0x1A */
1171  "VK_ESCAPE", /* 0x1B */
1172  "VK_CONVERT", /* 0x1C */
1173  "VK_NONCONVERT", /* 0x1D */
1174  "VK_ACCEPT", /* 0x1E */
1175  "VK_MODECHANGE", /* 0x1F */
1176  "VK_SPACE", /* 0x20 */
1177  "VK_PRIOR", /* 0x21 */
1178  "VK_NEXT", /* 0x22 */
1179  "VK_END", /* 0x23 */
1180  "VK_HOME", /* 0x24 */
1181  "VK_LEFT", /* 0x25 */
1182  "VK_UP", /* 0x26 */
1183  "VK_RIGHT", /* 0x27 */
1184  "VK_DOWN", /* 0x28 */
1185  "VK_SELECT", /* 0x29 */
1186  "VK_PRINT", /* 0x2A */
1187  "VK_EXECUTE", /* 0x2B */
1188  "VK_SNAPSHOT", /* 0x2C */
1189  "VK_INSERT", /* 0x2D */
1190  "VK_DELETE", /* 0x2E */
1191  "VK_HELP", /* 0x2F */
1192  "VK_0", /* 0x30 */
1193  "VK_1", /* 0x31 */
1194  "VK_2", /* 0x32 */
1195  "VK_3", /* 0x33 */
1196  "VK_4", /* 0x34 */
1197  "VK_5", /* 0x35 */
1198  "VK_6", /* 0x36 */
1199  "VK_7", /* 0x37 */
1200  "VK_8", /* 0x38 */
1201  "VK_9", /* 0x39 */
1202  NULL, /* 0x3A */
1203  NULL, /* 0x3B */
1204  NULL, /* 0x3C */
1205  NULL, /* 0x3D */
1206  NULL, /* 0x3E */
1207  NULL, /* 0x3F */
1208  NULL, /* 0x40 */
1209  "VK_A", /* 0x41 */
1210  "VK_B", /* 0x42 */
1211  "VK_C", /* 0x43 */
1212  "VK_D", /* 0x44 */
1213  "VK_E", /* 0x45 */
1214  "VK_F", /* 0x46 */
1215  "VK_G", /* 0x47 */
1216  "VK_H", /* 0x48 */
1217  "VK_I", /* 0x49 */
1218  "VK_J", /* 0x4A */
1219  "VK_K", /* 0x4B */
1220  "VK_L", /* 0x4C */
1221  "VK_M", /* 0x4D */
1222  "VK_N", /* 0x4E */
1223  "VK_O", /* 0x4F */
1224  "VK_P", /* 0x50 */
1225  "VK_Q", /* 0x51 */
1226  "VK_R", /* 0x52 */
1227  "VK_S", /* 0x53 */
1228  "VK_T", /* 0x54 */
1229  "VK_U", /* 0x55 */
1230  "VK_V", /* 0x56 */
1231  "VK_W", /* 0x57 */
1232  "VK_X", /* 0x58 */
1233  "VK_Y", /* 0x59 */
1234  "VK_Z", /* 0x5A */
1235  "VK_LWIN", /* 0x5B */
1236  "VK_RWIN", /* 0x5C */
1237  "VK_APPS", /* 0x5D */
1238  NULL, /* 0x5E */
1239  "VK_SLEEP", /* 0x5F */
1240  "VK_NUMPAD0", /* 0x60 */
1241  "VK_NUMPAD1", /* 0x61 */
1242  "VK_NUMPAD2", /* 0x62 */
1243  "VK_NUMPAD3", /* 0x63 */
1244  "VK_NUMPAD4", /* 0x64 */
1245  "VK_NUMPAD5", /* 0x65 */
1246  "VK_NUMPAD6", /* 0x66 */
1247  "VK_NUMPAD7", /* 0x67 */
1248  "VK_NUMPAD8", /* 0x68 */
1249  "VK_NUMPAD9", /* 0x69 */
1250  "VK_MULTIPLY", /* 0x6A */
1251  "VK_ADD", /* 0x6B */
1252  "VK_SEPARATOR", /* 0x6C */
1253  "VK_SUBTRACT", /* 0x6D */
1254  "VK_DECIMAL", /* 0x6E */
1255  "VK_DIVIDE", /* 0x6F */
1256  "VK_F1", /* 0x70 */
1257  "VK_F2", /* 0x71 */
1258  "VK_F3", /* 0x72 */
1259  "VK_F4", /* 0x73 */
1260  "VK_F5", /* 0x74 */
1261  "VK_F6", /* 0x75 */
1262  "VK_F7", /* 0x76 */
1263  "VK_F8", /* 0x77 */
1264  "VK_F9", /* 0x78 */
1265  "VK_F10", /* 0x79 */
1266  "VK_F11", /* 0x7A */
1267  "VK_F12", /* 0x7B */
1268  "VK_F13", /* 0x7C */
1269  "VK_F14", /* 0x7D */
1270  "VK_F15", /* 0x7E */
1271  "VK_F16", /* 0x7F */
1272  "VK_F17", /* 0x80 */
1273  "VK_F18", /* 0x81 */
1274  "VK_F19", /* 0x82 */
1275  "VK_F20", /* 0x83 */
1276  "VK_F21", /* 0x84 */
1277  "VK_F22", /* 0x85 */
1278  "VK_F23", /* 0x86 */
1279  "VK_F24", /* 0x87 */
1280  NULL, /* 0x88 */
1281  NULL, /* 0x89 */
1282  NULL, /* 0x8A */
1283  NULL, /* 0x8B */
1284  NULL, /* 0x8C */
1285  NULL, /* 0x8D */
1286  NULL, /* 0x8E */
1287  NULL, /* 0x8F */
1288  "VK_NUMLOCK", /* 0x90 */
1289  "VK_SCROLL", /* 0x91 */
1290  "VK_OEM_NEC_EQUAL", /* 0x92 aka. VK_OEM_FJ_JISHO */
1291  "VK_OEM_FJ_MASSHOU", /* 0x93 */
1292  "VK_OEM_FJ_TOUROKU", /* 0x94 */
1293  "VK_OEM_FJ_LOYA", /* 0x95 */
1294  "VK_OEM_FJ_ROYA", /* 0x96 */
1295  NULL, /* 0x97 */
1296  NULL, /* 0x98 */
1297  NULL, /* 0x99 */
1298  NULL, /* 0x9A */
1299  NULL, /* 0x9B */
1300  NULL, /* 0x9C */
1301  NULL, /* 0x9D */
1302  NULL, /* 0x9E */
1303  NULL, /* 0x9F */
1304  "VK_LSHIFT", /* 0xA0 */
1305  "VK_RSHIFT", /* 0xA1 */
1306  "VK_LCONTROL", /* 0xA2 */
1307  "VK_RCONTROL", /* 0xA3 */
1308  "VK_LMENU", /* 0xA4 */
1309  "VK_RMENU", /* 0xA5 */
1310  "VK_BROWSER_BACK", /* 0xA6 */
1311  "VK_BROWSER_FORWARD", /* 0xA7 */
1312  "VK_BROWSER_REFRESH", /* 0xA8 */
1313  "VK_BROWSER_STOP", /* 0xA9 */
1314  "VK_BROWSER_SEARCH", /* 0xAA */
1315  "VK_BROWSER_FAVORITES", /* 0xAB */
1316  "VK_BROWSER_HOME", /* 0xAC */
1317  "VK_VOLUME_MUTE", /* 0xAD */
1318  "VK_VOLUME_DOWN", /* 0xAE */
1319  "VK_VOLUME_UP", /* 0xAF */
1320  "VK_MEDIA_NEXT_TRACK", /* 0xB0 */
1321  "VK_MEDIA_PREV_TRACK", /* 0xB1 */
1322  "VK_MEDIA_STOP", /* 0xB2 */
1323  "VK_MEDIA_PLAY_PAUSE", /* 0xB3 */
1324  "VK_LAUNCH_MAIL", /* 0xB4 */
1325  "VK_LAUNCH_MEDIA_SELECT", /* 0xB5 */
1326  "VK_LAUNCH_APP1", /* 0xB6 */
1327  "VK_LAUNCH_APP2", /* 0xB7 */
1328  NULL, /* 0xB8 */
1329  NULL, /* 0xB9 */
1330  "VK_OEM_1", /* 0xBA */
1331  "VK_OEM_PLUS", /* 0xBB */
1332  "VK_OEM_COMMA", /* 0xBC */
1333  "VK_OEM_MINUS", /* 0xBD */
1334  "VK_OEM_PERIOD", /* 0xBE */
1335  "VK_OEM_2", /* 0xBF */
1336  "VK_OEM_3", /* 0xC0 */
1337  NULL, /* 0xC1 */
1338  NULL, /* 0xC2 */
1339  NULL, /* 0xC3 */
1340  NULL, /* 0xC4 */
1341  NULL, /* 0xC5 */
1342  NULL, /* 0xC6 */
1343  NULL, /* 0xC7 */
1344  NULL, /* 0xC8 */
1345  NULL, /* 0xC9 */
1346  NULL, /* 0xCA */
1347  NULL, /* 0xCB */
1348  NULL, /* 0xCC */
1349  NULL, /* 0xCD */
1350  NULL, /* 0xCE */
1351  NULL, /* 0xCF */
1352  NULL, /* 0xD0 */
1353  NULL, /* 0xD1 */
1354  NULL, /* 0xD2 */
1355  NULL, /* 0xD3 */
1356  NULL, /* 0xD4 */
1357  NULL, /* 0xD5 */
1358  NULL, /* 0xD6 */
1359  NULL, /* 0xD7 */
1360  NULL, /* 0xD8 */
1361  NULL, /* 0xD9 */
1362  NULL, /* 0xDA */
1363  "VK_OEM_4", /* 0xDB */
1364  "VK_OEM_5", /* 0xDC */
1365  "VK_OEM_6", /* 0xDD */
1366  "VK_OEM_7", /* 0xDE */
1367  "VK_OEM_8", /* 0xDF */
1368  NULL, /* 0xE0 */
1369  "VK_OEM_AX", /* 0xE1 */
1370  "VK_OEM_102", /* 0xE2 */
1371  "VK_ICO_HELP", /* 0xE3 */
1372  "VK_ICO_00", /* 0xE4 */
1373  "VK_PROCESSKEY", /* 0xE5 */
1374  NULL, /* 0xE6 */
1375  "VK_PACKET", /* 0xE7 */
1376  NULL, /* 0xE8 */
1377  NULL, /* 0xE9 */
1378  NULL, /* 0xEA */
1379  NULL, /* 0xEB */
1380  NULL, /* 0xEC */
1381  NULL, /* 0xED */
1382  NULL, /* 0xEE */
1383  NULL, /* 0xEF */
1384  NULL, /* 0xF0 */
1385  NULL, /* 0xF1 */
1386  NULL, /* 0xF2 */
1387  NULL, /* 0xF3 */
1388  NULL, /* 0xF4 */
1389  NULL, /* 0xF5 */
1390  "VK_ATTN", /* 0xF6 */
1391  "VK_CRSEL", /* 0xF7 */
1392  "VK_EXSEL", /* 0xF8 */
1393  "VK_EREOF", /* 0xF9 */
1394  "VK_PLAY", /* 0xFA */
1395  "VK_ZOOM", /* 0xFB */
1396  "VK_NONAME", /* 0xFC */
1397  "VK_PA1", /* 0xFD */
1398  "VK_OEM_CLEAR", /* 0xFE */
1399  NULL /* 0xFF */
1400 };
1401 
1402 
1403 /************************************************************************/
1404 
1405 
1406 /* WM_USER+n message values for "common controls" */
1407 
1408 typedef struct
1409 {
1410  const char *name; /* name of control message */
1411  UINT value; /* message number (0x0401-0x0fff */
1412  UINT len; /* length of space at lParam to dump */
1413 } USER_MSG;
1414 
1415 
1416 typedef struct
1417 {
1418  const WCHAR *classname; /* class name to match */
1419  const USER_MSG *classmsg; /* pointer to first USER_MSG for class */
1420  UINT count; /* number of entries */
1421 } CONTROL_CLASS;
1422 
1423 #define USM(a,b) { #a ,a,b}
1424 #define SZOF(a) sizeof(a)
1425 
1426 /* To dump memory at the lParam for any of these messages, */
1427 /* replace the "0" with a "SZOF(structure)", or with a */
1428 /* number. (First method preferred.) */
1429 
1430 #define RB_GETBANDINFO_OLD (WM_USER+5) /* obsoleted after IE3, but we have to support it anyway */
1431 
1432 static const USER_MSG rebar_array[] = {
1433  USM(RB_INSERTBANDA, 0),
1434  USM(RB_DELETEBAND, 0),
1435  USM(RB_GETBARINFO, 0),
1436  USM(RB_SETBARINFO, 0),
1437  USM(RB_GETBANDINFO_OLD, 0),
1438  USM(RB_SETBANDINFOA, 0),
1439  USM(RB_SETPARENT, 0),
1440  USM(RB_HITTEST, 0),
1441  USM(RB_GETRECT, 0),
1442  USM(RB_INSERTBANDW, 0),
1443  USM(RB_SETBANDINFOW, 0),
1444  USM(RB_GETBANDCOUNT, 0),
1445  USM(RB_GETROWCOUNT, 0),
1446  USM(RB_GETROWHEIGHT, 0),
1447  USM(RB_IDTOINDEX, 0),
1448  USM(RB_GETTOOLTIPS, 0),
1449  USM(RB_SETTOOLTIPS, 0),
1450  USM(RB_SETBKCOLOR, 0),
1451  USM(RB_GETBKCOLOR, 0),
1452  USM(RB_SETTEXTCOLOR, 0),
1453  USM(RB_GETTEXTCOLOR, 0),
1454  USM(RB_SIZETORECT, 0),
1455  USM(RB_BEGINDRAG, 0),
1456  USM(RB_ENDDRAG, 0),
1457  USM(RB_DRAGMOVE, 0),
1458  USM(RB_GETBARHEIGHT, 0),
1459  USM(RB_GETBANDINFOW, 0),
1460  USM(RB_GETBANDINFOA, 0),
1461  USM(RB_MINIMIZEBAND, 0),
1462  USM(RB_MAXIMIZEBAND, 0),
1463  USM(RB_GETBANDBORDERS, 0),
1464  USM(RB_SHOWBAND, 0),
1465  USM(RB_SETPALETTE, 0),
1466  USM(RB_GETPALETTE, 0),
1467  USM(RB_MOVEBAND, 0),
1468 };
1469 
1470 static const USER_MSG toolbar_array[] = {
1471  USM(TB_ENABLEBUTTON ,0),
1472  USM(TB_CHECKBUTTON ,0),
1473  USM(TB_PRESSBUTTON ,0),
1474  USM(TB_HIDEBUTTON ,0),
1475  USM(TB_INDETERMINATE ,0),
1476  USM(TB_MARKBUTTON ,0),
1477  USM(TB_ISBUTTONENABLED ,0),
1478  USM(TB_ISBUTTONCHECKED ,0),
1479  USM(TB_ISBUTTONPRESSED ,0),
1480  USM(TB_ISBUTTONHIDDEN ,0),
1483  USM(TB_SETSTATE ,0),
1484  USM(TB_GETSTATE ,0),
1485  USM(TB_ADDBITMAP ,0),
1486  USM(TB_ADDBUTTONSA ,0),
1487  USM(TB_INSERTBUTTONA ,0),
1488  USM(TB_DELETEBUTTON ,0),
1489  USM(TB_GETBUTTON ,0),
1490  USM(TB_BUTTONCOUNT ,0),
1491  USM(TB_COMMANDTOINDEX ,0),
1492  USM(TB_SAVERESTOREA ,0),
1493  USM(TB_CUSTOMIZE ,0),
1494  USM(TB_ADDSTRINGA ,0),
1495  USM(TB_GETITEMRECT ,0),
1497  USM(TB_SETBUTTONSIZE ,0),
1498  USM(TB_SETBITMAPSIZE ,0),
1499  USM(TB_AUTOSIZE ,0),
1500  USM(TB_GETTOOLTIPS ,0),
1501  USM(TB_SETTOOLTIPS ,0),
1502  USM(TB_SETPARENT ,0),
1503  USM(TB_SETROWS ,0),
1504  USM(TB_GETROWS ,0),
1505  USM(TB_GETBITMAPFLAGS ,0),
1506  USM(TB_SETCMDID ,0),
1507  USM(TB_CHANGEBITMAP ,0),
1508  USM(TB_GETBITMAP ,0),
1509  USM(TB_GETBUTTONTEXTA ,0),
1510  USM(TB_REPLACEBITMAP ,0),
1511  USM(TB_SETINDENT ,0),
1512  USM(TB_SETIMAGELIST ,0),
1513  USM(TB_GETIMAGELIST ,0),
1514  USM(TB_LOADIMAGES ,0),
1515  USM(TB_GETRECT ,0),
1516  USM(TB_SETHOTIMAGELIST ,0),
1517  USM(TB_GETHOTIMAGELIST ,0),
1520  USM(TB_SETSTYLE ,0),
1521  USM(TB_GETSTYLE ,0),
1522  USM(TB_GETBUTTONSIZE ,0),
1523  USM(TB_SETBUTTONWIDTH ,0),
1524  USM(TB_SETMAXTEXTROWS ,0),
1525  USM(TB_GETTEXTROWS ,0),
1526  USM(TB_GETOBJECT ,0),
1527  USM(TB_GETBUTTONINFOW ,0),
1528  USM(TB_SETBUTTONINFOW ,0),
1529  USM(TB_GETBUTTONINFOA ,0),
1530  USM(TB_SETBUTTONINFOA ,0),
1531  USM(TB_INSERTBUTTONW ,0),
1532  USM(TB_ADDBUTTONSW ,0),
1533  USM(TB_HITTEST ,0),
1535  USM(TB_GETHOTITEM ,0),
1536  USM(TB_SETHOTITEM ,0),
1539  USM(TB_GETBUTTONTEXTW ,0),
1540  USM(TB_SAVERESTOREW ,0),
1541  USM(TB_ADDSTRINGW ,0),
1542  USM(TB_MAPACCELERATORA ,0),
1543  USM(TB_GETINSERTMARK ,0),
1544  USM(TB_SETINSERTMARK ,0),
1546  USM(TB_MOVEBUTTON ,0),
1547  USM(TB_GETMAXSIZE ,0),
1550  USM(TB_GETPADDING ,0),
1551  USM(TB_SETPADDING ,0),
1554  USM(TB_MAPACCELERATORW ,0),
1555  USM(TB_GETSTRINGW ,0),
1556  USM(TB_GETSTRINGA ,0),
1557  USM(TB_SETBOUNDINGSIZE ,8),
1558  USM(TB_SETHOTITEM2 ,0),
1559  USM(TB_HASACCELERATOR ,0),
1560  USM(TB_SETLISTGAP ,0),
1562  USM(TB_GETIDEALSIZE ,8),
1563  USM(TB_UNKWN464 ,0),
1564 };
1565 
1566 static const USER_MSG tooltips_array[] = {
1567  USM(TTM_ACTIVATE ,0),
1568  USM(TTM_SETDELAYTIME ,0),
1569  USM(TTM_ADDTOOLA ,0),
1570  USM(TTM_DELTOOLA ,0),
1571  USM(TTM_NEWTOOLRECTA ,0),
1572  USM(TTM_RELAYEVENT ,0),
1573  USM(TTM_GETTOOLINFOA ,0),
1574  USM(TTM_HITTESTA ,0),
1575  USM(TTM_GETTEXTA ,0),
1576  USM(TTM_UPDATETIPTEXTA ,0),
1577  USM(TTM_GETTOOLCOUNT ,0),
1578  USM(TTM_ENUMTOOLSA ,0),
1581  USM(TTM_TRACKACTIVATE ,0),
1582  USM(TTM_TRACKPOSITION ,0),
1583  USM(TTM_SETTIPBKCOLOR ,0),
1585  USM(TTM_GETDELAYTIME ,0),
1586  USM(TTM_GETTIPBKCOLOR ,0),
1588  USM(TTM_SETMAXTIPWIDTH ,0),
1589  USM(TTM_GETMAXTIPWIDTH ,0),
1590  USM(TTM_SETMARGIN ,0),
1591  USM(TTM_GETMARGIN ,0),
1592  USM(TTM_POP ,0),
1593  USM(TTM_UPDATE ,0),
1594  USM(TTM_GETBUBBLESIZE ,0),
1595  USM(TTM_ADDTOOLW ,0),
1596  USM(TTM_DELTOOLW ,0),
1597  USM(TTM_NEWTOOLRECTW ,0),
1598  USM(TTM_GETTOOLINFOW ,0),
1599  USM(TTM_SETTOOLINFOW ,0),
1600  USM(TTM_HITTESTW ,0),
1601  USM(TTM_GETTEXTW ,0),
1602  USM(TTM_UPDATETIPTEXTW ,0),
1603  USM(TTM_ENUMTOOLSW ,0),
1605 };
1606 
1607 static const USER_MSG comboex_array[] = {
1608  USM(CBEM_INSERTITEMA ,0),
1609  USM(CBEM_SETIMAGELIST ,0),
1610  USM(CBEM_GETIMAGELIST ,0),
1611  USM(CBEM_GETITEMA ,0),
1612  USM(CBEM_SETITEMA ,0),
1615  USM(CBEM_SETEXSTYLE ,0),
1618  USM(CBEM_INSERTITEMW ,0),
1619  USM(CBEM_SETITEMW ,0),
1620  USM(CBEM_GETITEMW ,0),
1622 };
1623 
1624 static const USER_MSG propsht_array[] = {
1625  USM(PSM_SETCURSEL ,0),
1626  USM(PSM_REMOVEPAGE ,0),
1627  USM(PSM_ADDPAGE ,0),
1628  USM(PSM_CHANGED ,0),
1629  USM(PSM_RESTARTWINDOWS ,0),
1630  USM(PSM_REBOOTSYSTEM ,0),
1631  USM(PSM_CANCELTOCLOSE ,0),
1632  USM(PSM_QUERYSIBLINGS ,0),
1633  USM(PSM_UNCHANGED ,0),
1634  USM(PSM_APPLY ,0),
1635  USM(PSM_SETTITLEA ,0),
1636  USM(PSM_SETWIZBUTTONS ,0),
1637  USM(PSM_PRESSBUTTON ,0),
1638  USM(PSM_SETCURSELID ,0),
1639  USM(PSM_SETFINISHTEXTA ,0),
1640  USM(PSM_GETTABCONTROL ,0),
1643  USM(PSM_SETTITLEW ,0),
1644  USM(PSM_SETFINISHTEXTW ,0),
1645 };
1646 static const WCHAR PropSheetInfoStr[] =
1647  {'P','r','o','p','e','r','t','y','S','h','e','e','t','I','n','f','o',0 };
1648 
1649 static const USER_MSG updown_array[] = {
1650  USM(UDM_SETRANGE ,0),
1651  USM(UDM_GETRANGE ,0),
1652  USM(UDM_SETPOS ,0),
1653  USM(UDM_GETPOS ,0),
1654  USM(UDM_SETBUDDY ,0),
1655  USM(UDM_GETBUDDY ,0),
1656  USM(UDM_SETACCEL ,0),
1657  USM(UDM_GETACCEL ,0),
1658  USM(UDM_SETBASE ,0),
1659  USM(UDM_GETBASE ,0),
1660  USM(UDM_SETRANGE32 ,0),
1661  USM(UDM_GETRANGE32 ,0),
1662  USM(UDM_SETPOS32 ,0),
1663  USM(UDM_GETPOS32 ,0),
1664 };
1665 
1666 /* generated from:
1667  * $ for i in `grep EM_ include/richedit.h | cut -d' ' -f2 | cut -f1`; do echo -e " USM($i\t\t,0),"; done
1668  */
1669 static const USER_MSG richedit_array[] = {
1670  {"EM_SCROLLCARET", WM_USER+49 ,0},
1671  USM(EM_CANPASTE ,0),
1672  USM(EM_DISPLAYBAND ,0),
1673  USM(EM_EXGETSEL ,0),
1674  USM(EM_EXLIMITTEXT ,0),
1675  USM(EM_EXLINEFROMCHAR ,0),
1676  USM(EM_EXSETSEL ,0),
1677  USM(EM_FINDTEXT ,0),
1678  USM(EM_FORMATRANGE ,0),
1679  USM(EM_GETCHARFORMAT ,0),
1680  USM(EM_GETEVENTMASK ,0),
1681  USM(EM_GETOLEINTERFACE ,0),
1682  USM(EM_GETPARAFORMAT ,0),
1683  USM(EM_GETSELTEXT ,0),
1684  USM(EM_HIDESELECTION ,0),
1685  USM(EM_PASTESPECIAL ,0),
1686  USM(EM_REQUESTRESIZE ,0),
1687  USM(EM_SELECTIONTYPE ,0),
1688  USM(EM_SETBKGNDCOLOR ,0),
1689  USM(EM_SETCHARFORMAT ,0),
1690  USM(EM_SETEVENTMASK ,0),
1691  USM(EM_SETOLECALLBACK ,0),
1692  USM(EM_SETPARAFORMAT ,0),
1693  USM(EM_SETTARGETDEVICE ,0),
1694  USM(EM_STREAMIN ,0),
1695  USM(EM_STREAMOUT ,0),
1696  USM(EM_GETTEXTRANGE ,0),
1697  USM(EM_FINDWORDBREAK ,0),
1698  USM(EM_SETOPTIONS ,0),
1699  USM(EM_GETOPTIONS ,0),
1700  USM(EM_FINDTEXTEX ,0),
1703  USM(EM_SETUNDOLIMIT ,0),
1704  USM(EM_REDO ,0),
1705  USM(EM_CANREDO ,0),
1706  USM(EM_GETUNDONAME ,0),
1707  USM(EM_GETREDONAME ,0),
1708  USM(EM_STOPGROUPTYPING ,0),
1709  USM(EM_SETTEXTMODE ,0),
1710  USM(EM_GETTEXTMODE ,0),
1711  USM(EM_AUTOURLDETECT ,0),
1713  USM(EM_SETPALETTE ,0),
1714  USM(EM_GETTEXTEX ,0),
1715  USM(EM_GETTEXTLENGTHEX ,0),
1716  USM(EM_SHOWSCROLLBAR ,0),
1717  USM(EM_SETTEXTEX ,0),
1718  USM(EM_SETPUNCTUATION ,0),
1719  USM(EM_GETPUNCTUATION ,0),
1720  USM(EM_SETWORDWRAPMODE ,0),
1721  USM(EM_GETWORDWRAPMODE ,0),
1722  USM(EM_SETIMECOLOR ,0),
1723  USM(EM_GETIMECOLOR ,0),
1724  USM(EM_SETIMEOPTIONS ,0),
1725  USM(EM_GETIMEOPTIONS ,0),
1726  USM(EM_CONVPOSITION ,0),
1727  USM(EM_SETLANGOPTIONS ,0),
1728  USM(EM_GETLANGOPTIONS ,0),
1729  USM(EM_GETIMECOMPMODE ,0),
1730  USM(EM_FINDTEXTW ,0),
1731  USM(EM_FINDTEXTEXW ,0),
1732  USM(EM_RECONVERSION ,0),
1733  USM(EM_SETIMEMODEBIAS ,0),
1734  USM(EM_GETIMEMODEBIAS ,0),
1735  USM(EM_SETBIDIOPTIONS ,0),
1736  USM(EM_GETBIDIOPTIONS ,0),
1739  USM(EM_SETEDITSTYLE ,0),
1740  USM(EM_GETEDITSTYLE ,0),
1741  USM(EM_OUTLINE ,0),
1742  USM(EM_GETSCROLLPOS ,0),
1743  USM(EM_SETSCROLLPOS ,0),
1744  USM(EM_SETFONTSIZE ,0),
1745  USM(EM_GETZOOM ,0),
1746  USM(EM_SETZOOM ,0),
1747 };
1748 
1749 #undef SZOF
1750 #undef USM
1751 
1752 static const CONTROL_CLASS cc_array[] = {
1760  {0, 0, 0} };
1761 
1762 
1763 /************************************************************************/
1764 
1765 
1766 /* WM_NOTIFY function codes display */
1767 
1768 typedef struct
1769 {
1770  const char *name; /* name of notify message */
1771  UINT value; /* notify code value */
1772  UINT len; /* length of extra space to dump */
1773 } SPY_NOTIFY;
1774 
1775 #define SPNFY(a,b) { #a ,a,sizeof(b)-sizeof(NMHDR)}
1776 
1777 /* Array MUST be in descending order by the 'value' field */
1778 /* (since value is UNSIGNED, 0xffffffff is largest and */
1779 /* 0xfffffffe is smaller). A binary search is used to */
1780 /* locate the correct 'value'. */
1781 static const SPY_NOTIFY spnfy_array[] = {
1782  /* common 0U to 0U-99U */
1784  SPNFY(NM_CLICK, NMHDR),
1785  SPNFY(NM_DBLCLK, NMHDR),
1786  SPNFY(NM_RETURN, NMHDR),
1787  SPNFY(NM_RCLICK, NMHDR),
1792  SPNFY(NM_HOVER, NMHDR),
1797  SPNFY(NM_CHAR, NMCHAR),
1799  /* Listview 0U-100U to 0U-199U */
1826  /* PropertySheet 0U-200U to 0U-299U */
1839  /* Header 0U-300U to 0U-399U */
1860  /* Treeview 0U-400U to 0U-499U */
1884  /* Tooltips 0U-520U to 0U-549U */
1886  SPNFY(TTN_SHOW, NMHDR),
1887  SPNFY(TTN_POP, NMHDR),
1889  /* Tab 0U-550U to 0U-580U */
1894  /* Common Dialog 0U-601U to 0U-699U */
1902  /* Toolbar 0U-700U to 0U-720U */
1908  SPNFY(TBN_RESET, NMHDR),
1923  /* Up/Down 0U-721U to 0U-740U */
1925  /* Month Calendar 0U-750U to 0U-759U */
1926  /* ******************* WARNING ***************************** */
1927  /* The following appear backwards but needs to be this way. */
1928  /* The reason is that MS (and us) define the MCNs as */
1929  /* MCN_FIRST + n */
1930  /* instead of the way ALL other notifications are */
1931  /* TBN_FIRST - n */
1932  /* The only place that this is important is in this list */
1933  /* */
1934  /* Also since the same error was made with the DTN_ items, */
1935  /* they overlay the MCN_ and need to be inserted in the */
1936  /* other section of the table so that it is in order for */
1937  /* the binary search. */
1938  /* */
1939  /* Thank you MS for your obvious quality control!! */
1940  /* ******************* WARNING ***************************** */
1941  /* Date/Time 0U-760U to 0U-799U */
1942  /* SPNFY(MCN_SELECT, NMHDR), */
1943  /* SPNFY(MCN_GETDAYSTATE, NMHDR), */
1944  /* SPNFY(MCN_SELCHANGE, NMHDR), */
1945  /* ******************* WARNING ***************************** */
1946  /* The following appear backwards but needs to be this way. */
1947  /* The reason is that MS (and us) define the MCNs as */
1948  /* DTN_FIRST + n */
1949  /* instead of the way ALL other notifications are */
1950  /* TBN_FIRST - n */
1951  /* The only place that this is important is in this list */
1952  /* ******************* WARNING ***************************** */
1967  /* ComboBoxEx 0U-800U to 0U-830U */
1977  /* Rebar 0U-831U to 0U-859U */
1987  /* IP address 0U-860U to 0U-879U */
1989  /* Status bar 0U-880U to 0U-899U */
1991  /* Pager 0U-900U to 0U-950U */
1994 };
1995 #undef SPNFY
1996 
1997 static unsigned char *spy_exclude;
1998 
1999 static inline BOOL exclude_msg( UINT msg )
2000 {
2001  return spy_exclude[ min( msg, SPY_MAX_MSGNUM ) ];
2002 }
2003 
2004 static inline BOOL exclude_dwp(void)
2005 {
2006  return spy_exclude[SPY_MAX_MSGNUM + 1];
2007 }
2008 
2009 
2010 typedef struct
2011 {
2012  UINT msgnum; /* message number */
2013  HWND msg_hwnd; /* window handle for message */
2014  WPARAM wParam; /* message parameter */
2015  LPARAM lParam; /* message parameter */
2016  INT data_len; /* length of data to dump */
2017  char msg_name[60]; /* message name (see SPY_GetMsgName) */
2018  WCHAR wnd_class[60]; /* window class name (full) */
2019  WCHAR wnd_name[16]; /* window name for message */
2020 } SPY_INSTANCE;
2021 
2023 
2024 /***********************************************************************
2025  * get_indent_level
2026  */
2027 static inline INT_PTR get_indent_level(void)
2028 {
2030 }
2031 
2032 
2033 /***********************************************************************
2034  * set_indent_level
2035  */
2036 static inline void set_indent_level( INT_PTR level )
2037 {
2038  TlsSetValue( indent_tls_index, (void *)level );
2039 }
2040 
2041 
2042 /***********************************************************************
2043  * SPY_GetMsgInternal
2044  */
2045 static const char *SPY_GetMsgInternal( UINT msg )
2046 {
2047  if (msg <= SPY_MAX_MSGNUM)
2048  return MessageTypeNames[msg];
2049 
2050  if (msg >= LVM_FIRST && msg <= LVM_FIRST + SPY_MAX_LVMMSGNUM)
2052 
2053  if (msg >= TV_FIRST && msg <= TV_FIRST + SPY_MAX_TVMSGNUM)
2055 
2056  if (msg >= HDM_FIRST && msg <= HDM_FIRST + SPY_MAX_HDMMSGNUM)
2058 
2059  if (msg >= TCM_FIRST && msg <= TCM_FIRST + SPY_MAX_TCMMSGNUM)
2061 
2062  if (msg >= PGM_FIRST && msg <= PGM_FIRST + SPY_MAX_PGMMSGNUM)
2064 
2065  if (msg >= CCM_FIRST && msg <= CCM_FIRST + SPY_MAX_CCMMSGNUM)
2067 #ifndef __REACTOS__
2068  if (msg >= WM_WINE_DESTROYWINDOW && msg <= WM_WINE_DESTROYWINDOW + SPY_MAX_WINEMSGNUM)
2069  return WINEMessageTypeNames[msg-WM_WINE_DESTROYWINDOW];
2070 #endif
2071  return NULL;
2072 }
2073 
2074 /***********************************************************************
2075  * SPY_Bsearch_Msg
2076  */
2077 static const USER_MSG *SPY_Bsearch_Msg( const USER_MSG *msgs, UINT count, UINT code)
2078 {
2079  int low = 0, high = count - 1;
2080 
2081  while (low <= high)
2082  {
2083  int idx = (low + high) / 2;
2084  if (msgs[idx].value == code) return msgs + idx;
2085  if (msgs[idx].value > code)
2086  high = idx - 1;
2087  else
2088  low = idx + 1;
2089  }
2090  return NULL;
2091 }
2092 
2093 /***********************************************************************
2094  * SPY_GetClassLongOffsetName
2095  *
2096  * Gets the name of a class long offset.
2097  */
2099 {
2100  INT index;
2101  if (offset < 0 && offset % 2 == 0 && ((index = -(offset + 8) / 2) <
2102  sizeof(ClassLongOffsetNames) / sizeof(*ClassLongOffsetNames)))
2103  {
2104  return ClassLongOffsetNames[index];
2105  }
2106 
2107  return "?";
2108 }
2109 
2110 /***********************************************************************
2111  * SPY_GetClassName
2112  *
2113  * Sets the value of "wnd_class" member of the instance structure.
2114  */
2115 static void SPY_GetClassName( SPY_INSTANCE *sp_e )
2116 {
2117  /* special code to detect a property sheet dialog */
2119  (GetPropW(sp_e->msg_hwnd, PropSheetInfoStr))) {
2121  }
2122  else {
2123  GetClassNameW(sp_e->msg_hwnd, sp_e->wnd_class, sizeof(sp_e->wnd_class)/sizeof(WCHAR));
2124  }
2125 }
2126 
2127 /***********************************************************************
2128  * SPY_GetMsgStuff
2129  *
2130  * Get message name and other information for dumping
2131  */
2132 static void SPY_GetMsgStuff( SPY_INSTANCE *sp_e )
2133 {
2134  const USER_MSG *p;
2135  const char *msg_name = SPY_GetMsgInternal( sp_e->msgnum );
2136 
2137  sp_e->data_len = 0;
2138  if (!msg_name)
2139  {
2140  INT i = 0;
2141 
2142  if (sp_e->msgnum >= 0xc000)
2143  {
2144  if (GlobalGetAtomNameA( sp_e->msgnum, sp_e->msg_name+1, sizeof(sp_e->msg_name)-2 ))
2145  {
2146  sp_e->msg_name[0] = '\"';
2147  strcat( sp_e->msg_name, "\"" );
2148  return;
2149  }
2150  }
2151  if (!sp_e->wnd_class[0]) SPY_GetClassName(sp_e);
2152 
2153 #if DEBUG_SPY
2154  TRACE("looking class %s\n", debugstr_w(sp_e->wnd_class));
2155 #endif
2156 
2157  while (cc_array[i].classname &&
2158  strcmpiW(cc_array[i].classname, sp_e->wnd_class) != 0) i++;
2159 
2160  if (cc_array[i].classname)
2161  {
2162 #if DEBUG_SPY
2163  TRACE("process class %s, first %p, last %p\n",
2164  debugstr_w(cc_array[i].classname), cc_array[i].classmsg,
2165  cc_array[i].lastmsg);
2166 #endif
2167  p = SPY_Bsearch_Msg (cc_array[i].classmsg, cc_array[i].count, sp_e->msgnum);
2168  if (p) {
2169  lstrcpynA (sp_e->msg_name, p->name, sizeof(sp_e->msg_name));
2170  sp_e->data_len = p->len;
2171  return;
2172  }
2173  }
2174  if (sp_e->msgnum >= WM_USER && sp_e->msgnum <= WM_APP)
2175  sprintf( sp_e->msg_name, "WM_USER+%d", sp_e->msgnum - WM_USER );
2176  else
2177  sprintf( sp_e->msg_name, "%04x", sp_e->msgnum );
2178  }
2179  else
2180  {
2181  lstrcpynA(sp_e->msg_name, msg_name, sizeof(sp_e->msg_name));
2182  }
2183 }
2184 
2185 /***********************************************************************
2186  * SPY_GetWndName
2187  *
2188  * Sets the value of "wnd_name" and "wnd_class" members of the
2189  * instance structure.
2190  *
2191  */
2192 static void SPY_GetWndName( SPY_INSTANCE *sp_e )
2193 {
2194  INT len;
2195 
2196  SPY_GetClassName( sp_e );
2197 
2198  len = InternalGetWindowText(sp_e->msg_hwnd, sp_e->wnd_name, sizeof(sp_e->wnd_name)/sizeof(WCHAR));
2199  if(!len) /* get class name */
2200  {
2201  LPWSTR dst = sp_e->wnd_name;
2202  LPWSTR src = sp_e->wnd_class;
2203  int n = sizeof(sp_e->wnd_name)/sizeof(WCHAR) - 3;
2204  *dst++ = '{';
2205  while ((n-- > 0) && *src) *dst++ = *src++;
2206  *dst++ = '}';
2207  *dst = 0;
2208  }
2209 }
2210 
2211 /***********************************************************************
2212  * SPY_GetMsgName
2213  *
2214  * **** External function ****
2215  *
2216  * Get message name
2217  */
2219 {
2220  SPY_INSTANCE ext_sp_e;
2221  DWORD save_error = GetLastError();
2222 
2223  ext_sp_e.msgnum = msg;
2224  ext_sp_e.msg_hwnd = hWnd;
2225  ext_sp_e.lParam = 0;
2226  ext_sp_e.wParam = 0;
2227  ext_sp_e.wnd_class[0] = 0;
2228  SPY_GetMsgStuff(&ext_sp_e);
2229  SetLastError( save_error );
2230  return wine_dbg_sprintf("%s", ext_sp_e.msg_name);
2231 }
2232 
2233 /***********************************************************************
2234  * SPY_GetVKeyName
2235  */
2237 {
2238  const char *vk_key_name;
2239 
2241  vk_key_name = VK_KeyNames[wParam];
2242  else
2243  vk_key_name = "VK_???";
2244 
2245  return vk_key_name;
2246 }
2247 
2248 /***********************************************************************
2249  * SPY_Bsearch_Notify
2250  */
2252 {
2253  int low = 0, high = ARRAYSIZE(spnfy_array) - 1;
2254 
2255  while (low <= high)
2256  {
2257  int idx = (low + high) / 2;
2258  if (spnfy_array[idx].value == code) return spnfy_array + idx;
2259  if (spnfy_array[idx].value < code)
2260  high = idx - 1;
2261  else
2262  low = idx + 1;
2263  }
2264  return NULL;
2265 }
2266 
2267 /***********************************************************************
2268  * SPY_DumpMem
2269  */
2270 static void SPY_DumpMem (LPCSTR header, const UINT *q, INT len)
2271 {
2272  int i;
2273 
2274  for(i=0; i<len-12; i+=16) {
2275  TRACE("%s [%04x] %08x %08x %08x %08x\n",
2276  header, i, *q, *(q+1), *(q+2), *(q+3));
2277  q += 4;
2278  }
2279  switch ((len - i + 3) & (~3)) {
2280  case 16:
2281  TRACE("%s [%04x] %08x %08x %08x %08x\n",
2282  header, i, *q, *(q+1), *(q+2), *(q+3));
2283  break;
2284  case 12:
2285  TRACE("%s [%04x] %08x %08x %08x\n",
2286  header, i, *q, *(q+1), *(q+2));
2287  break;
2288  case 8:
2289  TRACE("%s [%04x] %08x %08x\n",
2290  header, i, *q, *(q+1));
2291  break;
2292  case 4:
2293  TRACE("%s [%04x] %08x\n",
2294  header, i, *q);
2295  break;
2296  default:
2297  break;
2298  }
2299 }
2300 
2301 /***********************************************************************
2302  * SPY_DumpStructure
2303  */
2304 static void SPY_DumpStructure(const SPY_INSTANCE *sp_e, BOOL enter)
2305 {
2306  switch (sp_e->msgnum)
2307  {
2308  case LVM_INSERTITEMW:
2309  case LVM_SETITEMW:
2310  if (!enter) break;
2311  /* fall through */
2312  case LVM_GETITEMW:
2313  {
2314  LPLVITEMA item = (LPLVITEMA) sp_e->lParam;
2315  if (item) {
2316  SPY_DumpMem ("LVITEM", (UINT*)item, sizeof(LVITEMA));
2317  }
2318  break;
2319  }
2320  case TCM_INSERTITEMW:
2321  case TCM_INSERTITEMA:
2322  case TCM_SETITEMW:
2323  case TCM_SETITEMA:
2324  if (!enter) break;
2325  /* fall through */
2326  case TCM_GETITEMW:
2327  case TCM_GETITEMA:
2328  {
2329  TCITEMA *item = (TCITEMA *) sp_e->lParam;
2330  if (item) {
2331  SPY_DumpMem ("TCITEM", (UINT*)item, sizeof(TCITEMA));
2332  }
2333  break;
2334  }
2335  case TCM_ADJUSTRECT:
2336  case LVM_GETITEMRECT:
2337  case LVM_GETSUBITEMRECT:
2338  {
2339  LPRECT rc = (LPRECT) sp_e->lParam;
2340  if (rc)
2341  TRACE("lParam rect (%s)\n", wine_dbgstr_rect(rc));
2342  break;
2343  }
2344  case LVM_SETITEMPOSITION32:
2345  if (!enter) break;
2346  /* fall through */
2347  case LVM_GETITEMPOSITION:
2348  case LVM_GETORIGIN:
2349  {
2350  LPPOINT point = (LPPOINT) sp_e->lParam;
2351  if (point) {
2352  TRACE("lParam point x=%d, y=%d\n", point->x, point->y);
2353  }
2354  break;
2355  }
2356  case SBM_SETRANGE:
2357  if (!enter && (sp_e->msgnum == SBM_SETRANGE)) break;
2358  TRACE("min=%d max=%d\n", (INT)sp_e->wParam, (INT)sp_e->lParam);
2359  break;
2360  case SBM_GETRANGE:
2361  if ((enter && (sp_e->msgnum == SBM_GETRANGE)) ||
2362  (!enter && (sp_e->msgnum == SBM_SETRANGE))) break;
2363  {
2364  LPINT ptmin = (LPINT) sp_e->wParam;
2365  LPINT ptmax = (LPINT) sp_e->lParam;
2366  if (ptmin && ptmax)
2367  TRACE("min=%d max=%d\n", *ptmin, *ptmax);
2368  else if (ptmin)
2369  TRACE("min=%d max=n/a\n", *ptmin);
2370  else if (ptmax)
2371  TRACE("min=n/a max=%d\n", *ptmax);
2372  break;
2373  }
2374  case EM_EXSETSEL:
2375  if (enter && sp_e->lParam)
2376  {
2377  CHARRANGE *cr = (CHARRANGE *) sp_e->lParam;
2378  TRACE("CHARRANGE: cpMin=%d cpMax=%d\n", cr->cpMin, cr->cpMax);
2379  }
2380  break;
2381  case EM_SETCHARFORMAT:
2382  if (enter && sp_e->lParam)
2383  {
2384  CHARFORMATW *cf = (CHARFORMATW *) sp_e->lParam;
2385  TRACE("CHARFORMAT: dwMask=0x%08x dwEffects=", cf->dwMask);
2386  if ((cf->dwMask & CFM_BOLD) && (cf->dwEffects & CFE_BOLD))
2387  TRACE(" CFE_BOLD");
2388  if ((cf->dwMask & CFM_COLOR) && (cf->dwEffects & CFE_AUTOCOLOR))
2389  TRACE(" CFE_AUTOCOLOR");
2390  if ((cf->dwMask & CFM_ITALIC) && (cf->dwEffects & CFE_ITALIC))
2391  TRACE(" CFE_ITALIC");
2392  if ((cf->dwMask & CFM_PROTECTED) && (cf->dwEffects & CFE_PROTECTED))
2393  TRACE(" CFE_PROTECTED");
2394  if ((cf->dwMask & CFM_STRIKEOUT) && (cf->dwEffects & CFE_STRIKEOUT))
2395  TRACE(" CFE_STRIKEOUT");
2396  if ((cf->dwMask & CFM_UNDERLINE) && (cf->dwEffects & CFE_UNDERLINE))
2397  TRACE(" CFE_UNDERLINE");
2398  TRACE("\n");
2399  if (cf->dwMask & CFM_SIZE)
2400  TRACE("yHeight=%d\n", cf->yHeight);
2401  if (cf->dwMask & CFM_OFFSET)
2402  TRACE("yOffset=%d\n", cf->yOffset);
2403  if ((cf->dwMask & CFM_COLOR) && !(cf->dwEffects & CFE_AUTOCOLOR))
2404  TRACE("crTextColor=%x\n", cf->crTextColor);
2405  TRACE("bCharSet=%x bPitchAndFamily=%x\n", cf->bCharSet, cf->bPitchAndFamily);
2406  /* FIXME: we should try to be a bit more intelligent about
2407  * whether this is in ANSI or Unicode (it could be either) */
2408  if (cf->dwMask & CFM_FACE)
2409  TRACE("szFaceName=%s\n", debugstr_wn(cf->szFaceName, LF_FACESIZE));
2410  /* FIXME: handle CHARFORMAT2 too */
2411  }
2412  break;
2413  case WM_DRAWITEM:
2414  if (!enter) break;
2415  {
2416  DRAWITEMSTRUCT *lpdis = (DRAWITEMSTRUCT*) sp_e->lParam;
2417  TRACE("DRAWITEMSTRUCT: CtlType=0x%08x CtlID=0x%08x\n",
2418  lpdis->CtlType, lpdis->CtlID);
2419  TRACE("itemID=0x%08x itemAction=0x%08x itemState=0x%08x\n",
2420  lpdis->itemID, lpdis->itemAction, lpdis->itemState);
2421  TRACE("hWnd=%p hDC=%p (%s) itemData=0x%08lx\n",
2422  lpdis->hwndItem, lpdis->hDC,
2423  wine_dbgstr_rect(&lpdis->rcItem), lpdis->itemData);
2424  }
2425  break;
2426  case WM_MEASUREITEM:
2427  {
2428  MEASUREITEMSTRUCT *lpmis = (MEASUREITEMSTRUCT*) sp_e->lParam;
2429  TRACE("MEASUREITEMSTRUCT: CtlType=0x%08x CtlID=0x%08x\n",
2430  lpmis->CtlType, lpmis->CtlID);
2431  TRACE("itemID=0x%08x itemWidth=0x%08x itemHeight=0x%08x\n",
2432  lpmis->itemID, lpmis->itemWidth, lpmis->itemHeight);
2433  TRACE("itemData=0x%08lx\n", lpmis->itemData);
2434  }
2435  break;
2436  case WM_NCCREATE:
2437  case WM_CREATE:
2438  {
2439  BOOL unicode;
2440  CREATESTRUCTA *cs;
2441 
2442  if (!enter) break;
2443 
2444  unicode = IsWindowUnicode(sp_e->msg_hwnd);
2445  cs = (CREATESTRUCTA *)sp_e->lParam;
2446  TRACE("%s %s ex=%08x style=%08x %d,%d %dx%d parent=%p menu=%p inst=%p params=%p\n",
2447  unicode ? debugstr_w((LPCWSTR)cs->lpszName) : debugstr_a(cs->lpszName),
2448  unicode ? debugstr_w((LPCWSTR)cs->lpszClass) : debugstr_a(cs->lpszClass),
2449  cs->dwExStyle, cs->style, cs->x, cs->y, cs->cx, cs->cy,
2450  cs->hwndParent, cs->hMenu, cs->hInstance, cs->lpCreateParams);
2451  break;
2452  }
2453  case WM_SIZE:
2454  if (!enter) break;
2455  TRACE("cx=%d cy=%d\n", LOWORD(sp_e->lParam), HIWORD(sp_e->lParam));
2456  break;
2457  case WM_WINDOWPOSCHANGED:
2458  if (!enter) break;
2459  case WM_WINDOWPOSCHANGING:
2460  {
2461  WINDOWPOS *lpwp = (WINDOWPOS *)sp_e->lParam;
2462  TRACE("WINDOWPOS hwnd=%p, after=%p, at (%d,%d) w=%d h=%d, flags=0x%08x\n",
2463  lpwp->hwnd, lpwp->hwndInsertAfter, lpwp->x, lpwp->y,
2464  lpwp->cx, lpwp->cy, lpwp->flags);
2465  }
2466  break;
2467  case WM_STYLECHANGED:
2468  if (!enter) break;
2469  case WM_STYLECHANGING:
2470  {
2472  TRACE("STYLESTRUCT: StyleOld=0x%08x, StyleNew=0x%08x\n",
2473  ss->styleOld, ss->styleNew);
2474  }
2475  break;
2476  case WM_NCCALCSIZE:
2477  {
2478  RECT *rc = (RECT *)sp_e->lParam;
2479  TRACE("Rect (%s)\n", wine_dbgstr_rect(rc));
2480  }
2481  break;
2482  case WM_NOTIFY:
2483  /* if (!enter) break; */
2484  {
2485  NMHDR * pnmh = (NMHDR*) sp_e->lParam;
2486  UINT *q, dumplen;
2487  const SPY_NOTIFY *p;
2488  WCHAR from_class[60];
2489  DWORD save_error;
2490 
2491  p = SPY_Bsearch_Notify( pnmh->code );
2492  if (p) {
2493  TRACE("NMHDR hwndFrom=%p idFrom=0x%08lx code=%s<0x%08x>, extra=0x%x\n",
2494  pnmh->hwndFrom, pnmh->idFrom, p->name, pnmh->code, p->len);
2495  dumplen = p->len;
2496 
2497  /* for CUSTOMDRAW, dump all the data for TOOLBARs */
2498  if (pnmh->code == NM_CUSTOMDRAW) {
2499  /* save and restore error code over the next call */
2500  save_error = GetLastError();
2501  GetClassNameW(pnmh->hwndFrom, from_class,
2502  sizeof(from_class)/sizeof(WCHAR));
2503  SetLastError(save_error);
2504  if (strcmpW(TOOLBARCLASSNAMEW, from_class) == 0)
2505  dumplen = sizeof(NMTBCUSTOMDRAW)-sizeof(NMHDR);
2506  } else if ( pnmh->code >= HDN_ENDDRAG
2507  && pnmh->code <= HDN_ITEMCHANGINGA ) {
2508  dumplen = sizeof(NMHEADERA)-sizeof(NMHDR);
2509  }
2510  if (dumplen > 0) {
2511  q = (UINT *)(pnmh + 1);
2512  SPY_DumpMem ("NM extra", q, (INT)dumplen);
2513  }
2514  }
2515  else
2516  TRACE("NMHDR hwndFrom=%p idFrom=0x%08lx code=0x%08x\n",
2517  pnmh->hwndFrom, pnmh->idFrom, pnmh->code);
2518  }
2519  break;
2520  default:
2521  if (sp_e->data_len > 0)
2522  SPY_DumpMem ("MSG lParam", (UINT *)sp_e->lParam, sp_e->data_len);
2523  }
2524 
2525 }
2526 
2527 
2528 /***********************************************************************
2529  * spy_init
2530  */
2531 static BOOL spy_init(void)
2532 {
2533  int i;
2534  char buffer[1024];
2535  HKEY hkey;
2536  char *exclude;
2537 
2538  if (!TRACE_ON(message)) return FALSE;
2539 
2541  {
2542  DWORD index = TlsAlloc();
2544  TlsFree( index );
2545  }
2546 
2547  if (spy_exclude) return TRUE;
2549 
2550  /* @@ Wine registry key: HKCU\Software\Wine\Debug */
2551  if(!RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Wine\\Debug", &hkey))
2552  {
2553  DWORD type, count = sizeof(buffer);
2554 
2555  buffer[0] = 0;
2556  if (!RegQueryValueExA(hkey, "SpyInclude", 0, &type, (LPBYTE) buffer, &count) &&
2557  strcmp( buffer, "INCLUDEALL" ))
2558  {
2559  TRACE("Include=%s\n", buffer );
2560  for (i = 0; i <= SPY_MAX_MSGNUM; i++)
2561  exclude[i] = (MessageTypeNames[i] && !strstr(buffer,MessageTypeNames[i]));
2562  }
2563 
2564  count = sizeof(buffer);
2565  buffer[0] = 0;
2566  if (!RegQueryValueExA(hkey, "SpyExclude", 0, &type, (LPBYTE) buffer, &count))
2567  {
2568  TRACE("Exclude=%s\n", buffer );
2569  if (!strcmp( buffer, "EXCLUDEALL" ))
2570  for (i = 0; i <= SPY_MAX_MSGNUM; i++) exclude[i] = TRUE;
2571  else
2572  for (i = 0; i <= SPY_MAX_MSGNUM; i++)
2573  exclude[i] = (MessageTypeNames[i] && strstr(buffer,MessageTypeNames[i]));
2574  }
2575 
2576  count = sizeof(buffer);
2577  if(!RegQueryValueExA(hkey, "SpyExcludeDWP", 0, &type, (LPBYTE) buffer, &count))
2578  exclude[SPY_MAX_MSGNUM + 1] = atoi(buffer);
2579 
2580  RegCloseKey(hkey);
2581  }
2582 
2583  if (InterlockedCompareExchangePointer( (void **)&spy_exclude, exclude, NULL ))
2584  HeapFree( GetProcessHeap(), 0, exclude );
2585 
2586  return TRUE;
2587 }
2588 
2589 
2590 /***********************************************************************
2591  * SPY_EnterMessage
2592  */
2595 {
2596  SPY_INSTANCE sp_e;
2597  int indent;
2598  DWORD save_error = GetLastError();
2599 
2600  if (!spy_init() || exclude_msg(msg)) return;
2601 
2602  sp_e.msgnum = msg;
2603  sp_e.msg_hwnd = hWnd;
2604  sp_e.lParam = lParam;
2605  sp_e.wParam = wParam;
2606  SPY_GetWndName(&sp_e);
2607  SPY_GetMsgStuff(&sp_e);
2609 
2610  /* each SPY_SENDMESSAGE must be complemented by call to SPY_ExitMessage */
2611  switch(iFlag)
2612  {
2613  case SPY_DISPATCHMESSAGE:
2614  TRACE("%*s(%p) %-16s [%04x] %s dispatched wp=%08lx lp=%08lx\n",
2615  indent, "", hWnd, debugstr_w(sp_e.wnd_name), msg,
2616  sp_e.msg_name, wParam, lParam);
2617  break;
2618 
2619  case SPY_SENDMESSAGE:
2620  {
2621  char taskName[20];
2623 
2624  if (tid == GetCurrentThreadId()) strcpy( taskName, "self" );
2625  else sprintf( taskName, "tid %04ld", GetCurrentThreadId() );
2626 
2627  TRACE("%*s(%p) %-16s [%04x] %s sent from %s wp=%08lx lp=%08lx\n",
2628  indent, "", hWnd, debugstr_w(sp_e.wnd_name), msg,
2629  sp_e.msg_name, taskName, wParam, lParam );
2630  SPY_DumpStructure(&sp_e, TRUE);
2631  }
2632  break;
2633 
2634  case SPY_DEFWNDPROC:
2635  if (exclude_dwp()) return;
2636  TRACE("%*s(%p) DefWindowProc:[%04x] %s wp=%08lx lp=%08lx\n",
2637  indent, "", hWnd, msg, sp_e.msg_name, wParam, lParam );
2638  break;
2639  }
2641  SetLastError( save_error );
2642 }
2643 
2644 
2645 /***********************************************************************
2646  * SPY_ExitMessage
2647  */
2648 void SPY_ExitMessage( INT iFlag, HWND hWnd, UINT msg, LRESULT lReturn,
2650 {
2651  SPY_INSTANCE sp_e;
2652  int indent;
2653  DWORD save_error = GetLastError();
2654 
2655  if (!TRACE_ON(message) || exclude_msg(msg) ||
2656  (exclude_dwp() && iFlag == SPY_RESULT_DEFWND))
2657  return;
2658 
2659  sp_e.msgnum = msg;
2660  sp_e.msg_hwnd = hWnd;
2661  sp_e.lParam = lParam;
2662  sp_e.wParam = wParam;
2663  SPY_GetWndName(&sp_e);
2664  SPY_GetMsgStuff(&sp_e);
2665 
2666  if ((indent = get_indent_level()))
2667  {
2670  }
2671 
2672  switch(iFlag)
2673  {
2674  case SPY_RESULT_DEFWND:
2675  TRACE(" %*s(%p) DefWindowProc: [%04x] %s returned %08lx\n",
2676  indent, "", hWnd, msg, sp_e.msg_name, lReturn );
2677  break;
2678 
2679  case SPY_RESULT_OK:
2680  TRACE(" %*s(%p) %-16s [%04x] %s returned %08lx\n",
2681  indent, "", hWnd, debugstr_w(sp_e.wnd_name), msg,
2682  sp_e.msg_name, lReturn );
2683  SPY_DumpStructure(&sp_e, FALSE);
2684  break;
2685  }
2686  SetLastError( save_error );
2687 }
#define CBEN_GETDISPINFOW
Definition: commctrl.h:3850
#define TB_GETINSERTMARK
Definition: commctrl.h:1157
#define TTM_GETDELAYTIME
Definition: commctrl.h:1788
#define EM_GETSCROLLPOS
Definition: richedit.h:165
#define TB_MOVEBUTTON
Definition: commctrl.h:1160
#define DTN_WMKEYDOWNA
Definition: commctrl.h:4365
#define HDN_GETDISPINFOA
Definition: commctrl.h:838
#define CBEN_DELETEITEM
Definition: commctrl.h:3845
#define TB_GETBUTTONTEXTA
Definition: commctrl.h:1118
LONG WINAPI RegOpenKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3257
#define SPY_MAX_WINEMSGNUM
Definition: spy.c:1123
#define CFE_AUTOCOLOR
Definition: richedit.h:414
#define TB_SETBUTTONINFOW
Definition: commctrl.h:1230
static const char *const HDMMessageTypeNames[SPY_MAX_HDMMSGNUM+1]
Definition: spy.c:995
#define RB_GETBANDBORDERS
Definition: commctrl.h:1589
LPARAM lParam
Definition: spy.c:2015
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
Definition: reg.c:4023
#define TB_SETHOTIMAGELIST
Definition: commctrl.h:1126
#define NM_KILLFOCUS
Definition: commctrl.h:136
#define EM_SETLANGOPTIONS
Definition: richedit.h:143
GLint level
Definition: gl.h:1546
#define TB_ADDSTRINGA
Definition: commctrl.h:1103
#define MCN_SELECT
Definition: commctrl.h:4277
#define SPNFY(a, b)
Definition: spy.c:1775
#define TB_HITTEST
Definition: commctrl.h:1240
#define TB_ISBUTTONHIGHLIGHTED
Definition: commctrl.h:1025
#define TB_SETBUTTONSIZE
Definition: commctrl.h:1107
#define LVN_BEGINRDRAG
Definition: commctrl.h:3113
#define TTM_RELAYEVENT
Definition: commctrl.h:1764
static void SPY_DumpMem(LPCSTR header, const UINT *q, INT len)
Definition: spy.c:2270
#define TTM_GETMARGIN
Definition: commctrl.h:1794
Definition: tftpd.h:59
#define TB_ISBUTTONPRESSED
Definition: commctrl.h:1022
#define TVN_SELCHANGINGW
Definition: commctrl.h:3618
#define TB_BUTTONSTRUCTSIZE
Definition: commctrl.h:1106
#define CDN_FOLDERCHANGE
Definition: commdlg.h:35
#define TB_BUTTONCOUNT
Definition: commctrl.h:1082
#define TB_UNKWN464
Definition: commctrl.h:86
#define RB_SIZETORECT
Definition: commctrl.h:1570
#define TRUE
Definition: types.h:120
#define RB_GETBKCOLOR
Definition: commctrl.h:1564
#define UDM_GETPOS
Definition: commctrl.h:2116
#define TBN_GETINFOTIPA
Definition: commctrl.h:1313
#define LF_FACESIZE
Definition: dimm.idl:39
#define TBN_ENDADJUST
Definition: commctrl.h:1282
#define HDN_BEGINTRACKA
Definition: commctrl.h:832
#define HDN_ITEMCLICKW
Definition: commctrl.h:827
#define TTM_HITTESTW
Definition: commctrl.h:1773
#define LVN_BEGINDRAG
Definition: commctrl.h:3112
#define TVN_GETDISPINFOA
Definition: commctrl.h:3626
#define UDM_GETPOS32
Definition: commctrl.h:2128
#define TVN_ITEMEXPANDEDW
Definition: commctrl.h:3674
UINT msgnum
Definition: spy.c:2012
#define TBN_CUSTHELP
Definition: commctrl.h:1287
#define TB_GETROWS
Definition: commctrl.h:1114
static const WCHAR indent[]
Definition: object.c:1156
#define DTN_DROPDOWN
Definition: commctrl.h:4425
#define EM_SETZOOM
Definition: richedit.h:170
#define HDN_ITEMCHANGINGA
Definition: commctrl.h:822
#define TTM_UPDATETIPTEXTA
Definition: commctrl.h:1776
static unsigned char * spy_exclude
Definition: spy.c:1997
#define CFE_UNDERLINE
Definition: richedit.h:408
char * strcat(char *DstString, const char *SrcString)
Definition: utclib.c:568
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
#define EM_SETIMECOLOR
Definition: richedit.h:137
Definition: spy.c:1408
#define EM_GETTEXTRANGE
Definition: richedit.h:108
#define DTN_USERSTRINGW
Definition: commctrl.h:4346
#define RB_GETROWHEIGHT
Definition: commctrl.h:1559
#define TTM_ENUMTOOLSW
Definition: commctrl.h:1780
#define TVN_BEGINDRAGA
Definition: commctrl.h:3675
#define TB_GETTEXTROWS
Definition: commctrl.h:1135
#define TTM_GETCURRENTTOOLW
Definition: commctrl.h:1782
#define RBN_HEIGHTCHANGE
Definition: commctrl.h:1600
#define EM_GETEVENTMASK
Definition: richedit.h:92
#define TCM_ADJUSTRECT
Definition: commctrl.h:4057
char msg_name[60]
Definition: spy.c:2017
#define PSM_GETTABCONTROL
Definition: prsht.h:80
#define LVN_HOTTRACK
Definition: commctrl.h:3124
BOOL WINAPI TlsSetValue(IN DWORD Index, IN LPVOID Value)
Definition: thread.c:1264
static const WCHAR RICHEDIT_CLASS20W[]
Definition: richedit.h:50
#define RB_GETBARHEIGHT
Definition: commctrl.h:1580
#define TBN_BEGINDRAG
Definition: commctrl.h:1279
#define TVN_BEGINRDRAGW
Definition: commctrl.h:3678
#define RB_SETBANDINFOA
Definition: commctrl.h:1551
#define SPY_RESULT_OK
Definition: user32p.h:76
#define RBN_AUTOSIZE
Definition: commctrl.h:1603
#define PSN_HELP
Definition: prsht.h:119
#define TVN_DELETEITEMA
Definition: commctrl.h:3679
#define WC_DIALOG
Definition: undocuser.h:11
#define TVN_ITEMEXPANDEDA
Definition: commctrl.h:3673
#define EM_GETBIDIOPTIONS
Definition: richedit.h:155
#define TB_ADDSTRINGW
Definition: commctrl.h:1104
#define TB_GETIMAGELISTCOUNT
Definition: commctrl.h:1255
#define TB_SETSTATE
Definition: commctrl.h:1026
#define NM_HOVER
Definition: commctrl.h:138
char * strstr(char *String1, char *String2)
Definition: utclib.c:653
#define LVN_ODSTATECHANGED
Definition: commctrl.h:3120
#define WM_NCCALCSIZE
Definition: winuser.h:1667
#define LVN_GETDISPINFOA
Definition: commctrl.h:3125
#define IPN_FIELDCHANGED
Definition: commctrl.h:4449
#define TB_GETBUTTON
Definition: commctrl.h:1081
GLuint GLuint GLsizei count
Definition: gl.h:1545
#define EM_GETOLEINTERFACE
Definition: richedit.h:93
#define HKEY_CURRENT_USER
Definition: winreg.h:11
#define HDN_ITEMCHANGEDA
Definition: commctrl.h:824
void SPY_EnterMessage(INT iFlag, HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
Definition: spy.c:2593
#define SPY_MAX_HDMMSGNUM
Definition: spy.c:994
#define TB_GETSTRINGA
Definition: commctrl.h:1248
#define TB_SETSTYLE
Definition: commctrl.h:1130
#define LVN_ITEMCHANGED
Definition: commctrl.h:3103
#define NM_RELEASEDCAPTURE
Definition: commctrl.h:141
#define TTM_TRACKPOSITION
Definition: commctrl.h:1785
#define CFM_FACE
Definition: richedit.h:360
struct tagLVITEMA * LPLVITEMA
GLintptr offset
Definition: glext.h:5920
#define CFM_PROTECTED
Definition: richedit.h:336
#define LVN_SETDISPINFOW
Definition: commctrl.h:3128
HWND hWnd
Definition: settings.c:17
#define TOOLBARCLASSNAMEW
Definition: commctrl.h:915
#define RB_SETTOOLTIPS
Definition: commctrl.h:1562
#define EM_SETPUNCTUATION
Definition: richedit.h:133
GLdouble n
Definition: glext.h:7729
ULONG_PTR itemData
Definition: winuser.h:3067
static const char *const WINEMessageTypeNames[SPY_MAX_WINEMSGNUM+1]
Definition: spy.c:1126
#define LVN_GETDISPINFOW
Definition: commctrl.h:3126
#define TBN_TOOLBARCHANGE
Definition: commctrl.h:1286
#define TB_HASACCELERATOR
Definition: commctrl.h:1253
#define PSM_REMOVEPAGE
Definition: prsht.h:166
#define EM_EXLIMITTEXT
Definition: richedit.h:86
#define SPY_MAX_CCMMSGNUM
Definition: spy.c:1108
#define InterlockedCompareExchange
Definition: interlocked.h:104
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
HWND hwndInsertAfter
Definition: winuser.h:3563
#define SPY_SENDMESSAGE
Definition: user32p.h:74
#define UDM_SETACCEL
Definition: commctrl.h:2119
#define TTM_GETTEXTA
Definition: commctrl.h:1774
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1059
LONG cpMax
Definition: richedit.h:501
#define SBM_SETRANGE
Definition: winuser.h:2063
#define EM_FORMATRANGE
Definition: richedit.h:90
#define TBN_GETOBJECT
Definition: commctrl.h:1289
GLuint buffer
Definition: glext.h:5915
#define TB_GETANCHORHIGHLIGHT
Definition: commctrl.h:1145
#define CFM_ITALIC
Definition: richedit.h:333
#define EM_SELECTIONTYPE
Definition: richedit.h:99
#define TB_CUSTOMIZE
Definition: commctrl.h:1102
WINE_DEFAULT_DEBUG_CHANNEL(message)
#define LVM_GETSUBITEMRECT
Definition: commctrl.h:2734
#define RB_GETBANDINFOW
Definition: commctrl.h:1581
#define PGM_FIRST
Definition: commctrl.h:87
#define SPY_MAX_TVMSGNUM
Definition: spy.c:922
#define TB_GETRECT
Definition: commctrl.h:1125
static void SPY_DumpStructure(const SPY_INSTANCE *sp_e, BOOL enter)
Definition: spy.c:2304
UINT count
Definition: spy.c:1420
UINT_PTR WPARAM
Definition: windef.h:207
#define TTM_GETMAXTIPWIDTH
Definition: commctrl.h:1792
#define MCN_SELCHANGE
Definition: commctrl.h:4263
#define TB_SAVERESTOREW
Definition: commctrl.h:1101
WCHAR classname[128]
Definition: startup.c:15
#define PSN_APPLY
Definition: prsht.h:117
#define TCN_GETOBJECT
Definition: commctrl.h:4106
#define TB_GETMAXSIZE
Definition: commctrl.h:1161
int32_t INT_PTR
Definition: typedefs.h:62
#define EM_GETIMEOPTIONS
Definition: richedit.h:140
#define TB_GETIMAGELIST
Definition: commctrl.h:1123
#define UDM_GETRANGE32
Definition: commctrl.h:2124
#define EM_SETPALETTE
Definition: richedit.h:127
#define EM_SETPARAFORMAT
Definition: richedit.h:104
static const USER_MSG updown_array[]
Definition: spy.c:1649
#define CBEM_INSERTITEMA
Definition: commctrl.h:3798
static const USER_MSG * SPY_Bsearch_Msg(const USER_MSG *msgs, UINT count, UINT code)
Definition: spy.c:2077
static const USER_MSG propsht_array[]
Definition: spy.c:1624
#define TB_ISBUTTONHIDDEN
Definition: commctrl.h:1023
#define TBN_BEGINADJUST
Definition: commctrl.h:1281
#define WM_NCCREATE
Definition: winuser.h:1665
#define PSN_SETACTIVE
Definition: prsht.h:115
#define HDN_ITEMCHANGINGW
Definition: commctrl.h:823
int32_t INT
Definition: typedefs.h:56
#define PSM_SETFINISHTEXTW
Definition: prsht.h:105
#define TBN_RESET
Definition: commctrl.h:1283
#define RB_SETPARENT
Definition: commctrl.h:1552
#define TBN_DRAGOUT
Definition: commctrl.h:1309
#define USM(a, b)
Definition: spy.c:1423
#define EM_CANPASTE
Definition: richedit.h:83
POINTL point
Definition: edittest.c:50
WPARAM wParam
Definition: combotst.c:138
#define TB_SETINSERTMARK
Definition: commctrl.h:1158
#define GCW_ATOM
Definition: winuser.h:656
#define TBN_HOTITEMCHANGE
Definition: commctrl.h:1308
static const char *const PGMMessageTypeNames[SPY_MAX_PGMMSGNUM+1]
Definition: spy.c:1089
#define CBEN_GETDISPINFOA
Definition: commctrl.h:3843
#define TCM_FIRST
Definition: commctrl.h:85
#define TB_GETITEMRECT
Definition: commctrl.h:1105
#define SPY_DEFWNDPROC
Definition: user32p.h:75
LONG y
Definition: windef.h:315
#define TTM_GETTIPTEXTCOLOR
Definition: commctrl.h:1790
#define PSM_ISDIALOGMESSAGE
Definition: prsht.h:96
#define EM_GETPARAFORMAT
Definition: richedit.h:94
#define RBN_LAYOUTCHANGED
Definition: commctrl.h:1602
uint32_t ULONG_PTR
Definition: typedefs.h:63
#define CFE_BOLD
Definition: richedit.h:406
const char * wine_dbg_sprintf(const char *format,...)
Definition: compat.c:271
#define PSM_SETCURSEL
Definition: prsht.h:167
#define LVN_ITEMCHANGING
Definition: commctrl.h:3102
static const WCHAR WC_PROPSHEETW[]
Definition: prsht.h:351
int WINAPI GetClassNameW(_In_ HWND hWnd, _Out_writes_to_(nMaxCount, return) LPWSTR lpClassName, _In_ int nMaxCount)
#define EM_CANREDO
Definition: richedit.h:118
#define TVN_SELCHANGEDA
Definition: commctrl.h:3619
#define PSN_QUERYCANCEL
Definition: prsht.h:123
#define TTM_ADDTOOLA
Definition: commctrl.h:1758
#define EM_EXGETSEL
Definition: richedit.h:85
#define TTM_POP
Definition: commctrl.h:1795
UINT code
Definition: winuser.h:3133
#define TB_SETMAXTEXTROWS
Definition: commctrl.h:1134
#define TB_GETHOTIMAGELIST
Definition: commctrl.h:1127
#define sprintf(buf, format,...)
Definition: sprintf.c:55
UINT value
Definition: spy.c:1411
#define REBARCLASSNAMEW
Definition: commctrl.h:1435
#define TVN_ENDLABELEDITW
Definition: commctrl.h:3684
#define EM_FINDTEXTEXW
Definition: richedit.h:148
#define PGN_CALCSIZE
Definition: commctrl.h:4552
#define TTM_ACTIVATE
Definition: commctrl.h:1756
#define SPY_MAX_PGMMSGNUM
Definition: spy.c:1088
struct tagNMHEADERA NMHEADERA
#define TBN_QUERYDELETE
Definition: commctrl.h:1285
#define TTM_WINDOWFROMPOINT
Definition: commctrl.h:1783
uint32_t cs
Definition: isohybrid.c:75
const char * name
Definition: spy.c:1770
#define RB_GETRECT
Definition: commctrl.h:1554
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define LVN_ODCACHEHINT
Definition: commctrl.h:3115
#define RB_GETBANDINFOA
Definition: commctrl.h:1582
#define NM_RDBLCLK
Definition: commctrl.h:134
#define LVN_KEYDOWN
Definition: commctrl.h:3156
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
#define UDM_GETBASE
Definition: commctrl.h:2122
unsigned char * LPBYTE
Definition: typedefs.h:52
#define TBN_DROPDOWN
Definition: commctrl.h:1288
#define RB_SETBKCOLOR
Definition: commctrl.h:1563
#define PSN_KILLACTIVE
Definition: prsht.h:116
#define TB_GETDISABLEDIMAGELIST
Definition: commctrl.h:1129
static const USER_MSG rebar_array[]
Definition: spy.c:1432
#define EM_GETTEXTEX
Definition: richedit.h:128
#define TTM_GETTOOLINFOA
Definition: commctrl.h:1766
#define NM_NCHITTEST
Definition: commctrl.h:139
#define TBN_GETBUTTONINFOA
Definition: commctrl.h:1278
#define PSN_WIZFINISH
Definition: prsht.h:122
#define SPY_DISPATCHMESSAGE
Definition: user32p.h:73
#define NM_OUTOFMEMORY
Definition: commctrl.h:129
#define EM_GETPUNCTUATION
Definition: richedit.h:134
#define RB_MINIMIZEBAND
Definition: commctrl.h:1586
WPARAM wParam
Definition: spy.c:2014
unsigned int BOOL
Definition: ntddk_ex.h:94
#define RB_GETBANDCOUNT
Definition: commctrl.h:1557
long LONG
Definition: pedump.c:60
static const char *const CCMMessageTypeNames[SPY_MAX_CCMMSGNUM+1]
Definition: spy.c:1109
#define RBN_DELETINGBAND
Definition: commctrl.h:1606
#define LVN_ITEMACTIVATE
Definition: commctrl.h:3119
#define TB_SETCMDID
Definition: commctrl.h:1115
#define CFE_PROTECTED
Definition: richedit.h:410
#define TB_AUTOSIZE
Definition: commctrl.h:1109
#define TTN_SHOW
Definition: commctrl.h:1846
UINT_PTR idFrom
Definition: winuser.h:3132
#define EM_SETWORDWRAPMODE
Definition: richedit.h:135
#define debugstr_w
Definition: kernel32.h:32
static const WCHAR PropSheetInfoStr[]
Definition: spy.c:1646
#define EM_RECONVERSION
Definition: richedit.h:150
void SPY_ExitMessage(INT iFlag, HWND hWnd, UINT msg, LRESULT lReturn, WPARAM wParam, LPARAM lParam)
Definition: spy.c:2648
#define RBN_BEGINDRAG
Definition: commctrl.h:1604
#define InterlockedCompareExchangePointer
Definition: interlocked.h:129
#define PSM_SETWIZBUTTONS
Definition: prsht.h:157
#define TTM_GETTOOLINFOW
Definition: commctrl.h:1767
#define TB_COMMANDTOINDEX
Definition: commctrl.h:1083
#define DTN_FORMATA
Definition: commctrl.h:4385
#define TB_GETSTRINGW
Definition: commctrl.h:1247
#define HDN_GETDISPINFOW
Definition: commctrl.h:839
#define TB_SETPARENT
Definition: commctrl.h:1112
unsigned int idx
Definition: utils.c:41
#define TB_ENABLEBUTTON
Definition: commctrl.h:1014
#define RB_ENDDRAG
Definition: commctrl.h:1578
#define EM_SETCHARFORMAT
Definition: richedit.h:101
#define RB_INSERTBANDA
Definition: commctrl.h:1547
#define EM_SETUNDOLIMIT
Definition: richedit.h:116
DWORD WINAPI GetWindowThreadProcessId(HWND, PDWORD)
static const char * SPY_GetMsgInternal(UINT msg)
Definition: spy.c:2045
#define TTM_GETTIPBKCOLOR
Definition: commctrl.h:1789
#define CBEM_GETITEMW
Definition: commctrl.h:3815
#define EM_SETIMEOPTIONS
Definition: richedit.h:139
#define TCM_INSERTITEMW
Definition: commctrl.h:4019
#define EM_FINDTEXT
Definition: richedit.h:89
#define CFM_COLOR
Definition: richedit.h:361
#define EM_GETEDITSTYLE
Definition: richedit.h:161
#define TB_GETEXTENDEDSTYLE
Definition: commctrl.h:1163
#define TB_SETDISABLEDIMAGELIST
Definition: commctrl.h:1128
smooth NULL
Definition: ftsmooth.c:416
#define CDN_SELCHANGE
Definition: commdlg.h:34
#define RBN_CHILDSIZE
Definition: commctrl.h:1608
UINT len
Definition: spy.c:1412
#define PSN_WIZNEXT
Definition: prsht.h:121
static const char *const TVMessageTypeNames[SPY_MAX_TVMSGNUM+1]
Definition: spy.c:923
#define CFM_UNDERLINE
Definition: richedit.h:334
#define LVM_SETITEMPOSITION32
Definition: commctrl.h:2677
LONG_PTR LPARAM
Definition: windef.h:208
#define LPRECT
Definition: precomp.h:28
#define TTN_GETDISPINFOA
Definition: commctrl.h:1844
#define PSM_SETCURSELID
Definition: prsht.h:104
static BOOL spy_init(void)
Definition: spy.c:2531
#define RB_INSERTBANDW
Definition: commctrl.h:1555
#define TVN_ITEMEXPANDINGW
Definition: commctrl.h:3672
#define TCM_GETITEMA
Definition: commctrl.h:4004
#define UDM_SETRANGE
Definition: commctrl.h:2113
#define EM_SETBKGNDCOLOR
Definition: richedit.h:100
#define CBEM_GETEDITCONTROL
Definition: commctrl.h:3805
#define TB_GETIDEALSIZE
Definition: commctrl.h:1256
UINT flags
Definition: winuser.h:3568
GLuint index
Definition: glext.h:6031
static const USER_MSG richedit_array[]
Definition: spy.c:1669
const char * LPCSTR
Definition: xmlstorage.h:183
#define CBEN_DRAGBEGINA
Definition: commctrl.h:3852
#define UDM_SETRANGE32
Definition: commctrl.h:2123
#define EM_SETBIDIOPTIONS
Definition: richedit.h:154
#define LPPOINT
Definition: precomp.h:31
#define TVN_SELCHANGEDW
Definition: commctrl.h:3620
#define RB_SETBARINFO
Definition: commctrl.h:1550
#define LVN_GETINFOTIPW
Definition: commctrl.h:3195
BOOL WINAPI IsWindowUnicode(_In_ HWND)
#define EM_SETEVENTMASK
Definition: richedit.h:102
#define TB_GETHOTITEM
Definition: commctrl.h:1142
DWORD WINAPI GetCurrentThreadId(VOID)
Definition: thread.c:458
static BOOL exclude_dwp(void)
Definition: spy.c:2004
#define HDN_ITEMDBLCLICKW
Definition: commctrl.h:829
#define EM_STREAMIN
Definition: richedit.h:106
#define TBN_GETBUTTONINFOW
Definition: commctrl.h:1315
#define LVN_MARQUEEBEGIN
Definition: commctrl.h:3170
#define TVN_DELETEITEMW
Definition: commctrl.h:3680
#define PSM_REBOOTSYSTEM
Definition: prsht.h:162
#define EM_PASTESPECIAL
Definition: richedit.h:97
#define LVN_BEGINLABELEDITW
Definition: commctrl.h:3108
#define TBN_ENDDRAG
Definition: commctrl.h:1280
#define CBEN_ENDEDITA
Definition: commctrl.h:3847
#define CBEN_ENDEDITW
Definition: commctrl.h:3848
#define RB_GETBARINFO
Definition: commctrl.h:1549
#define LVN_DELETEALLITEMS
Definition: commctrl.h:3106
HWND msg_hwnd
Definition: spy.c:2013
#define SPY_MAX_LVMMSGNUM
Definition: spy.c:733
#define TB_SETIMAGELIST
Definition: commctrl.h:1122
#define RBN_GETOBJECT
Definition: commctrl.h:1601
#define TB_GETBUTTONSIZE
Definition: commctrl.h:1132
struct tagSTYLESTRUCT * LPSTYLESTRUCT
UINT value
Definition: spy.c:1771
#define CBEM_GETIMAGELIST
Definition: commctrl.h:3800
#define TTM_HITTESTA
Definition: commctrl.h:1772
#define LVN_ODFINDITEMW
Definition: commctrl.h:3117
static const char *const TCMMessageTypeNames[SPY_MAX_TCMMSGNUM+1]
Definition: spy.c:1021
#define TCN_SELCHANGE
Definition: commctrl.h:4104
#define PSM_APPLY
Definition: prsht.h:158
#define EM_AUTOURLDETECT
Definition: richedit.h:125
#define SPY_MAX_MSGNUM
Definition: spy.c:31
static void SPY_GetClassName(SPY_INSTANCE *sp_e)
Definition: spy.c:2115
#define EM_SETTARGETDEVICE
Definition: richedit.h:105
#define TRACE(s)
Definition: solgame.cpp:4
static const char *const ClassLongOffsetNames[]
Definition: spy.c:38
#define NM_KEYDOWN
Definition: commctrl.h:140
static const char *const VK_KeyNames[SPY_MAX_VKKEYSNUM+1]
Definition: spy.c:1142
WCHAR wnd_name[16]
Definition: spy.c:2019
#define SPY_MAX_VKKEYSNUM
Definition: spy.c:1141
#define GetProcessHeap()
Definition: compat.h:395
#define TV_FIRST
Definition: commctrl.h:83
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
static INT_PTR get_indent_level(void)
Definition: spy.c:2027
#define PGN_SCROLL
Definition: commctrl.h:4527
if(!(yy_init))
Definition: macro.lex.yy.c:714
BOOL WINAPI TlsFree(IN DWORD Index)
Definition: thread.c:1154
#define RB_SETTEXTCOLOR
Definition: commctrl.h:1565
#define CBEM_SETIMAGELIST
Definition: commctrl.h:3799
#define TVN_SETDISPINFOW
Definition: commctrl.h:3629
#define TB_MARKBUTTON
Definition: commctrl.h:1019
__wchar_t WCHAR
Definition: xmlstorage.h:180
static void SPY_GetMsgStuff(SPY_INSTANCE *sp_e)
Definition: spy.c:2132
#define WM_SIZE
Definition: winuser.h:1593
#define debugstr_a
Definition: kernel32.h:31
#define PSM_CANCELTOCLOSE
Definition: prsht.h:161
#define TTM_UPDATETIPTEXTW
Definition: commctrl.h:1777
#define NM_SETFOCUS
Definition: commctrl.h:135
#define CBEM_SETITEMW
Definition: commctrl.h:3814
#define EM_GETTEXTMODE
Definition: richedit.h:124
#define EM_SETFONTSIZE
Definition: richedit.h:168
#define CDN_INITDONE
Definition: commdlg.h:33
#define TVN_ENDLABELEDITA
Definition: commctrl.h:3683
#define CDN_FILEOK
Definition: commdlg.h:38
#define HDN_ENDTRACKA
Definition: commctrl.h:834
#define HDN_TRACKW
Definition: commctrl.h:837
#define RBN_DELETEDBAND
Definition: commctrl.h:1607
#define WM_WINDOWPOSCHANGING
Definition: winuser.h:1643
#define CBEM_SETEXSTYLE
Definition: commctrl.h:3806
#define HDN_ITEMCLICKA
Definition: commctrl.h:826
#define CBEM_GETEXTENDEDSTYLE
Definition: commctrl.h:3809
#define UDM_SETPOS32
Definition: commctrl.h:2127
const char * wine_dbgstr_rect(const RECT *rect)
#define TB_SETLISTGAP
Definition: commctrl.h:1254
#define DTN_FORMATW
Definition: commctrl.h:4386
#define TB_MAPACCELERATORA
Definition: commctrl.h:1146
unsigned long DWORD
Definition: ntddk_ex.h:95
#define LVN_DELETEITEM
Definition: commctrl.h:3105
#define CFM_SIZE
Definition: richedit.h:362
#define TTM_DELTOOLA
Definition: commctrl.h:1760
#define TBN_GETINFOTIPW
Definition: commctrl.h:1314
#define TTM_SETMAXTIPWIDTH
Definition: commctrl.h:1791
LONG x
Definition: windef.h:314
#define WM_MEASUREITEM
Definition: winuser.h:1628
#define EM_FINDTEXTEX
Definition: richedit.h:112
#define TB_GETPADDING
Definition: commctrl.h:1164
#define PSM_GETCURRENTPAGEHWND
Definition: prsht.h:81
#define EM_GETIMECOMPMODE
Definition: richedit.h:145
#define PSN_TRANSLATEACCELERATOR
Definition: prsht.h:125
#define EM_GETAUTOURLDETECT
Definition: richedit.h:126
#define SetLastError(x)
Definition: compat.h:409
#define EM_GETREDONAME
Definition: richedit.h:120
#define EM_GETLANGOPTIONS
Definition: richedit.h:144
#define TB_SETINDENT
Definition: commctrl.h:1121
GLdouble GLdouble GLdouble GLdouble q
Definition: gl.h:2063
#define LVM_FIRST
Definition: commctrl.h:82
#define HDN_ENDTRACKW
Definition: commctrl.h:835
#define PSM_RESTARTWINDOWS
Definition: prsht.h:163
static const USER_MSG tooltips_array[]
Definition: spy.c:1566
#define CFM_OFFSET
Definition: richedit.h:359
static const char *const MessageTypeNames[SPY_MAX_MSGNUM+1]
Definition: spy.c:56
#define TOOLTIPS_CLASSW
Definition: commctrl.h:1679
#define DTN_USERSTRINGA
Definition: commctrl.h:4345
#define TTM_SETDELAYTIME
Definition: commctrl.h:1757
#define EM_SETTYPOGRAPHYOPTIONS
Definition: richedit.h:157
#define RB_SETBANDINFOW
Definition: commctrl.h:1556
#define RB_SHOWBAND
Definition: commctrl.h:1590
#define TB_ADDBITMAP
Definition: commctrl.h:1028
#define RB_GETROWCOUNT
Definition: commctrl.h:1558
#define LVN_ODFINDITEMA
Definition: commctrl.h:3116
#define EM_SETOLECALLBACK
Definition: richedit.h:103
#define CBEM_SETEXTENDEDSTYLE
Definition: commctrl.h:3807
#define EM_EXSETSEL
Definition: richedit.h:88
#define EM_GETUNDONAME
Definition: richedit.h:119
#define TVN_SELCHANGINGA
Definition: commctrl.h:3617
#define TB_MAPACCELERATORW
Definition: commctrl.h:1175
#define CBEN_BEGINEDIT
Definition: commctrl.h:3846
#define RB_DRAGMOVE
Definition: commctrl.h:1579
#define NM_CUSTOMDRAW
Definition: commctrl.h:137
#define EM_SETEDITSTYLE
Definition: richedit.h:160
#define TTM_UPDATE
Definition: commctrl.h:1796
#define index(s, c)
Definition: various.h:29
#define UDN_DELTAPOS
Definition: commctrl.h:2141
#define TTM_GETBUBBLESIZE
Definition: commctrl.h:1797
#define TTM_SETMARGIN
Definition: commctrl.h:1793
const char * SPY_GetClassLongOffsetName(INT offset)
Definition: spy.c:2098
#define TB_SAVERESTOREA
Definition: commctrl.h:1100
#define TTN_POP
Definition: commctrl.h:1847
#define CFE_ITALIC
Definition: richedit.h:407
#define SBM_GETRANGE
Definition: winuser.h:2061
#define EM_REDO
Definition: richedit.h:117
#define EM_SETSCROLLPOS
Definition: richedit.h:166
#define TTM_SETTIPTEXTCOLOR
Definition: commctrl.h:1787
#define TB_GETTOOLTIPS
Definition: commctrl.h:1110
#define TB_CHECKBUTTON
Definition: commctrl.h:1015
#define TB_ADDBUTTONSW
Definition: commctrl.h:1238
#define EM_SETTEXTEX
Definition: richedit.h:131
ULONG_PTR itemData
Definition: winuser.h:3620
#define TB_CHANGEBITMAP
Definition: commctrl.h:1116
GLenum GLsizei len
Definition: glext.h:6722
#define HDN_TRACKA
Definition: commctrl.h:836
#define TB_SETBITMAPSIZE
Definition: commctrl.h:1108
#define TB_SETPADDING
Definition: commctrl.h:1165
static void set_indent_level(INT_PTR level)
Definition: spy.c:2036
DWORD WINAPI TlsAlloc(VOID)
Definition: thread.c:1088
#define TLS_OUT_OF_INDEXES
Definition: winbase.h:530
#define WM_APP
Definition: eventvwr.h:70
#define TB_GETBUTTONINFOA
Definition: commctrl.h:1231
#define RB_HITTEST
Definition: commctrl.h:1553
GLenum src
Definition: glext.h:6340
#define PSM_ADDPAGE
Definition: prsht.h:165
#define PSM_UNCHANGED
Definition: prsht.h:159
#define NM_UPDOWN
Definition: commctrl.h:2132
#define TB_SETBUTTONWIDTH
Definition: commctrl.h:1133
#define CFM_STRIKEOUT
Definition: richedit.h:335
HWND hwndFrom
Definition: winuser.h:3131
#define TTM_SETTOOLINFOW
Definition: commctrl.h:1770
#define EM_DISPLAYBAND
Definition: richedit.h:84
#define NM_CLICK
Definition: commctrl.h:130
#define TVN_BEGINDRAGW
Definition: commctrl.h:3676
#define TVN_BEGINLABELEDITW
Definition: commctrl.h:3682
#define debugstr_wn
Definition: kernel32.h:33
#define EM_SETTEXTMODE
Definition: richedit.h:123
#define EM_REQUESTRESIZE
Definition: richedit.h:98
#define EM_GETIMEMODEBIAS
Definition: richedit.h:152
#define WM_USER
Definition: winuser.h:1877
#define LVM_GETITEMRECT
Definition: commctrl.h:2449
INT data_len
Definition: spy.c:2016
#define EM_GETIMECOLOR
Definition: richedit.h:138
#define CCM_FIRST
Definition: commctrl.h:91
#define SPY_INDENT_UNIT
Definition: spy.c:32
#define strcmpiW(s1, s2)
Definition: unicode.h:39
#define CBEM_HASEDITCHANGED
Definition: commctrl.h:3812
#define HDM_FIRST
Definition: commctrl.h:84
#define EM_SETWORDBREAKPROCEX
Definition: richedit.h:114
#define TB_GETBUTTONINFOW
Definition: commctrl.h:1229
#define TB_INDETERMINATE
Definition: commctrl.h:1018
#define CDN_TYPECHANGE
Definition: commdlg.h:39
#define EM_STOPGROUPTYPING
Definition: richedit.h:121
#define UDM_SETBUDDY
Definition: commctrl.h:2117
#define RB_MOVEBAND
Definition: commctrl.h:1593
#define NM_RETURN
Definition: commctrl.h:132
#define EM_CONVPOSITION
Definition: richedit.h:141
#define EM_GETZOOM
Definition: richedit.h:169
static const USER_MSG comboex_array[]
Definition: spy.c:1607
#define TB_INSERTBUTTONA
Definition: commctrl.h:1079
#define SPY_MAX_TCMMSGNUM
Definition: spy.c:1020
#define TB_INSERTBUTTONW
Definition: commctrl.h:1237
#define LVM_INSERTITEMW
Definition: commctrl.h:2376
#define EM_STREAMOUT
Definition: richedit.h:107
#define TB_SETTOOLTIPS
Definition: commctrl.h:1111
#define TTM_GETTEXTW
Definition: commctrl.h:1775
#define TB_ISBUTTONINDETERMINATE
Definition: commctrl.h:1024
const WCHAR * classname
Definition: spy.c:1418
#define ARRAYSIZE(a)
Definition: spy.c:34
#define TTM_TRACKACTIVATE
Definition: commctrl.h:1784
const char * SPY_GetVKeyName(WPARAM wParam)
Definition: spy.c:2236
#define TBN_QUERYINSERT
Definition: commctrl.h:1284
#define TB_GETBITMAPFLAGS
Definition: commctrl.h:1189
#define CBEN_DRAGBEGINW
Definition: commctrl.h:3853
WINE_UNICODE_INLINE WCHAR * strcpyW(WCHAR *dst, const WCHAR *src)
Definition: unicode.h:219
#define HDN_ENDDRAG
Definition: commctrl.h:841
#define UDM_GETACCEL
Definition: commctrl.h:2120
#define RB_GETTEXTCOLOR
Definition: commctrl.h:1566
#define TB_GETSTATE
Definition: commctrl.h:1027
#define HDN_DIVIDERDBLCLICKA
Definition: commctrl.h:830
static const USER_MSG toolbar_array[]
Definition: spy.c:1470
#define TVN_GETDISPINFOW
Definition: commctrl.h:3627
static ATOM item
Definition: dde.c:856
#define TTM_GETCURRENTTOOLA
Definition: commctrl.h:1781
#define CBEM_INSERTITEMW
Definition: commctrl.h:3813
#define PSN_GETOBJECT
Definition: prsht.h:124
#define TB_LOADIMAGES
Definition: commctrl.h:1124
#define NM_DBLCLK
Definition: commctrl.h:131
#define TB_SETBUTTONINFOA
Definition: commctrl.h:1232
#define TCM_GETITEMW
Definition: commctrl.h:4005
#define DTN_FORMATQUERYW
Definition: commctrl.h:4408
#define EM_GETCHARFORMAT
Definition: richedit.h:91
#define PSM_SETTITLEW
Definition: prsht.h:169
#define CDN_SHAREVIOLATION
Definition: commdlg.h:36
INT WINAPI InternalGetWindowText(_In_ HWND hWnd, _Out_writes_to_(cchMaxCount, return+1) LPWSTR pString, _In_ int cchMaxCount)
#define CFM_BOLD
Definition: richedit.h:332
#define TB_SETINSERTMARKCOLOR
Definition: commctrl.h:1166
#define EM_GETWORDBREAKPROCEX
Definition: richedit.h:113
#define NM_SETCURSOR
Definition: commctrl.h:142
#define PSN_RESET
Definition: prsht.h:118
#define NM_RCLICK
Definition: commctrl.h:133
#define TTM_ADDTOOLW
Definition: commctrl.h:1759
#define TB_REPLACEBITMAP
Definition: commctrl.h:1120
#define LVN_ENDLABELEDITW
Definition: commctrl.h:3110
#define LVM_GETORIGIN
Definition: commctrl.h:2640
#define EM_SHOWSCROLLBAR
Definition: richedit.h:130
#define EM_EXLINEFROMCHAR
Definition: richedit.h:87
#define LVN_ENDLABELEDITA
Definition: commctrl.h:3109
GLenum GLenum dst
Definition: glext.h:6340
#define TB_GETINSERTMARKCOLOR
Definition: commctrl.h:1167
#define HDN_BEGINDRAG
Definition: commctrl.h:840
#define TB_SETANCHORHIGHLIGHT
Definition: commctrl.h:1144
#define CBEM_GETCOMBOCONTROL
Definition: commctrl.h:3804
#define TTM_GETTOOLCOUNT
Definition: commctrl.h:1778
#define RB_IDTOINDEX
Definition: commctrl.h:1560
const USER_MSG * classmsg
Definition: spy.c:1419
#define WC_COMBOBOXEXW
Definition: commctrl.h:3753
#define UDM_SETPOS
Definition: commctrl.h:2115
#define CBEN_INSERTITEM
Definition: commctrl.h:3844
#define min(a, b)
Definition: monoChain.cc:55
#define UDM_GETRANGE
Definition: commctrl.h:2114
unsigned int UINT
Definition: ndis.h:50
#define SPY_RESULT_DEFWND
Definition: user32p.h:78
#define CBEM_GETITEMA
Definition: commctrl.h:3801
#define LVN_BEGINLABELEDITA
Definition: commctrl.h:3107
#define UDM_GETBUDDY
Definition: commctrl.h:2118
#define HDN_BEGINTRACKW
Definition: commctrl.h:833
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
#define PSM_CHANGED
Definition: prsht.h:164
#define lstrcpynA
Definition: compat.h:408
#define HEAP_ZERO_MEMORY
Definition: compat.h:123
#define TB_ADDBUTTONSA
Definition: commctrl.h:1078
#define LVN_SETDISPINFOA
Definition: commctrl.h:3127
#define LVN_COLUMNCLICK
Definition: commctrl.h:3111
#define RB_SETPALETTE
Definition: commctrl.h:1591
static const SPY_NOTIFY * SPY_Bsearch_Notify(UINT code)
Definition: spy.c:2251
#define EM_FINDWORDBREAK
Definition: richedit.h:109
#define TB_INSERTMARKHITTEST
Definition: commctrl.h:1159
WCHAR wnd_class[60]
Definition: spy.c:2018
#define HDN_DIVIDERDBLCLICKW
Definition: commctrl.h:831
#define TB_HIDEBUTTON
Definition: commctrl.h:1017
#define RB_GETBANDINFO_OLD
Definition: spy.c:1430
#define RB_MAXIMIZEBAND
Definition: commctrl.h:1587
#define EM_FINDTEXTW
Definition: richedit.h:147
#define PSN_WIZBACK
Definition: prsht.h:120
#define PSM_QUERYSIBLINGS
Definition: prsht.h:160
#define RBN_ENDDRAG
Definition: commctrl.h:1605
#define WM_DRAWITEM
Definition: winuser.h:1627
#define TVN_SETDISPINFOA
Definition: commctrl.h:3628
LPVOID WINAPI TlsGetValue(IN DWORD Index)
Definition: thread.c:1228
#define MCN_GETDAYSTATE
Definition: commctrl.h:4273
#define TCM_SETITEMA
Definition: commctrl.h:4011
#define TTM_NEWTOOLRECTA
Definition: commctrl.h:1762
#define WM_WINDOWPOSCHANGED
Definition: winuser.h:1644
#define TB_SETHOTITEM2
Definition: commctrl.h:1252
#define EM_SETIMEMODEBIAS
Definition: richedit.h:151
#define msg(x)
Definition: auth_time.c:54
#define DTN_CLOSEUP
Definition: commctrl.h:4426
#define TB_SETBOUNDINGSIZE
Definition: commctrl.h:1148
_Check_return_ int __cdecl atoi(_In_z_ const char *_Str)
#define CFE_STRIKEOUT
Definition: richedit.h:409
#define LVM_SETITEMW
Definition: commctrl.h:2369
static const SPY_NOTIFY spnfy_array[]
Definition: spy.c:1781
WINE_UNICODE_INLINE int strcmpW(const WCHAR *str1, const WCHAR *str2)
Definition: unicode.h:229
#define LVM_GETITEMW
Definition: commctrl.h:2362
#define RB_GETTOOLTIPS
Definition: commctrl.h:1561
#define WM_CREATE
Definition: winuser.h:1590
#define EM_GETWORDWRAPMODE
Definition: richedit.h:136
#define TVN_BEGINLABELEDITA
Definition: commctrl.h:3681
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
#define TB_GETOBJECT
Definition: commctrl.h:1141
#define TTM_SETTIPBKCOLOR
Definition: commctrl.h:1786
#define EM_GETTYPOGRAPHYOPTIONS
Definition: richedit.h:158
#define EM_HIDESELECTION
Definition: richedit.h:96
#define HIWORD(l)
Definition: typedefs.h:246
#define RB_DELETEBAND
Definition: commctrl.h:1548
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
#define TB_ISBUTTONENABLED
Definition: commctrl.h:1020
#define TBN_GETDISPINFOA
Definition: commctrl.h:1311
#define TVN_BEGINRDRAGA
Definition: commctrl.h:3677
struct _NMTBCUSTOMDRAW NMTBCUSTOMDRAW
#define DTN_WMKEYDOWNW
Definition: commctrl.h:4366
#define TB_GETSTYLE
Definition: commctrl.h:1131
#define DTN_FORMATQUERYA
Definition: commctrl.h:4407
static const CONTROL_CLASS cc_array[]
Definition: spy.c:1752
UINT WINAPI GlobalGetAtomNameA(ATOM nAtom, LPSTR lpBuffer, int nSize)
Definition: atom.c:484
#define TCM_INSERTITEMA
Definition: commctrl.h:4018
#define NM_CHAR
Definition: commctrl.h:143
#define TB_ISBUTTONCHECKED
Definition: commctrl.h:1021
const char * SPY_GetMsgName(UINT msg, HWND hWnd)
Definition: spy.c:2218
#define TTN_GETDISPINFOW
Definition: commctrl.h:1845
#define PSM_PRESSBUTTON
Definition: prsht.h:100
#define PSM_SETFINISHTEXTA
Definition: prsht.h:106
GLfloat GLfloat p
Definition: glext.h:8902
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define EM_GETTEXTLENGTHEX
Definition: richedit.h:129
#define LVN_INSERTITEM
Definition: commctrl.h:3104
static BOOL exclude_msg(UINT msg)
Definition: spy.c:1999
HWND hwnd
Definition: winuser.h:3562
LONG_PTR LRESULT
Definition: windef.h:209
#define TTM_NEWTOOLRECTW
Definition: commctrl.h:1763
#define EM_SETOPTIONS
Definition: richedit.h:110
#define ss
Definition: i386-dis.c:432
#define TTM_ENUMTOOLSA
Definition: commctrl.h:1779
#define NM_TOOLTIPSCREATED
Definition: commctrl.h:144
const char * name
Definition: spy.c:1410
#define UPDOWN_CLASSW
Definition: commctrl.h:2091
#define RB_GETPALETTE
Definition: commctrl.h:1592
#define TB_SETHOTITEM
Definition: commctrl.h:1143
#define TTM_DELTOOLW
Definition: commctrl.h:1761
#define TBN_GETDISPINFOW
Definition: commctrl.h:1312
#define EM_GETSELTEXT
Definition: richedit.h:95
#define TB_SETDRAWTEXTFLAGS
Definition: commctrl.h:1245
#define DTN_DATETIMECHANGE
Definition: commctrl.h:4338
#define HDN_ITEMDBLCLICKA
Definition: commctrl.h:828
#define LVN_GETINFOTIPA
Definition: commctrl.h:3194
#define CBEM_SETITEMA
Definition: commctrl.h:3802
#define TRACE_ON(x)
Definition: compat.h:65
#define TB_SETROWS
Definition: commctrl.h:1113
#define TCN_SELCHANGING
Definition: commctrl.h:4105
static TfClientId tid
LPARAM lParam
Definition: combotst.c:139
#define SBN_SIMPLEMODECHANGE
Definition: commctrl.h:1950
#define LOWORD(l)
Definition: pedump.c:82
UINT len
Definition: spy.c:1772
static void SPY_GetWndName(SPY_INSTANCE *sp_e)
Definition: spy.c:2192
#define TVN_KEYDOWN
Definition: commctrl.h:3685
#define UDM_SETBASE
Definition: commctrl.h:2121
#define TCN_KEYDOWN
Definition: commctrl.h:4090
#define HeapFree(x, y, z)
Definition: compat.h:394
#define PSN_QUERYINITIALFOCUS
Definition: settings.cpp:98
#define GetClassLongPtrW
Definition: winuser.h:4465
struct CFHEADER header
Definition: fdi.c:109
#define EM_OUTLINE
Definition: richedit.h:163
#define CDN_HELP
Definition: commdlg.h:37
#define TBN_DELETINGBUTTON
Definition: commctrl.h:1310
#define LVM_GETITEMPOSITION
Definition: commctrl.h:2455
#define TB_SETEXTENDEDSTYLE
Definition: commctrl.h:1162
LONG cpMin
Definition: richedit.h:500
#define WM_NOTIFY
Definition: richedit.h:61
#define TB_PRESSBUTTON
Definition: commctrl.h:1016
static const char *const LVMMessageTypeNames[SPY_MAX_LVMMSGNUM+1]
Definition: spy.c:734
#define EM_GETOPTIONS
Definition: richedit.h:111
WNDCLASSW wnd_class
Definition: startup.c:16
static int indent_tls_index
Definition: spy.c:2022
#define TB_GETBUTTONTEXTW
Definition: commctrl.h:1119
#define TCM_SETITEMW
Definition: commctrl.h:4012
#define PSM_SETTITLEA
Definition: prsht.h:168
#define HDN_ITEMCHANGEDW
Definition: commctrl.h:825
#define TB_DELETEBUTTON
Definition: commctrl.h:1080
#define TVN_ITEMEXPANDINGA
Definition: commctrl.h:3671
#define RB_BEGINDRAG
Definition: commctrl.h:1577
int * LPINT
Definition: windef.h:178
#define TB_GETBITMAP
Definition: commctrl.h:1117