Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenspy.c
Go to the documentation of this file.
00001 /* 00002 * Message spying routines 00003 * 00004 * Copyright 1994, Bob Amstadt 00005 * 1995, Alex Korobka 00006 * 00007 * This library is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU Lesser General Public 00009 * License as published by the Free Software Foundation; either 00010 * version 2.1 of the License, or (at your option) any later version. 00011 * 00012 * This library is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * Lesser General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Lesser General Public 00018 * License along with this library; if not, write to the Free Software 00019 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 00020 */ 00021 00022 #include <user32.h> 00023 #include <commctrl.h> 00024 #include <richedit.h> 00025 #include <prsht.h> 00026 00027 #include <wine/debug.h> 00028 00029 WINE_DEFAULT_DEBUG_CHANNEL(message); 00030 00031 #define SPY_MAX_MSGNUM WM_USER 00032 #define SPY_INDENT_UNIT 4 /* 4 spaces */ 00033 00034 #define DEBUG_SPY 0 00035 00036 static const char * const ClassLongOffsetNames[] = 00037 { 00038 "GCLP_MENUNAME", /* -8 */ 00039 "GCLP_HBRBACKGROUND", /* -10 */ 00040 "GCLP_HCURSOR", /* -12 */ 00041 "GCLP_HICON", /* -14 */ 00042 "GCLP_HMODULE", /* -16 */ 00043 "GCL_CBWNDEXTRA", /* -18 */ 00044 "GCL_CBCLSEXTRA", /* -20 */ 00045 "?", 00046 "GCLP_WNDPROC", /* -24 */ 00047 "GCL_STYLE", /* -26 */ 00048 "?", 00049 "?", 00050 "GCW_ATOM", /* -32 */ 00051 "GCLP_HICONSM", /* -34 */ 00052 }; 00053 00054 static const char * const MessageTypeNames[SPY_MAX_MSGNUM + 1] = 00055 { 00056 "WM_NULL", /* 0x00 */ 00057 "WM_CREATE", 00058 "WM_DESTROY", 00059 "WM_MOVE", 00060 "wm_sizewait", 00061 "WM_SIZE", 00062 "WM_ACTIVATE", 00063 "WM_SETFOCUS", 00064 "WM_KILLFOCUS", 00065 "WM_SETVISIBLE", 00066 "WM_ENABLE", 00067 "WM_SETREDRAW", 00068 "WM_SETTEXT", 00069 "WM_GETTEXT", 00070 "WM_GETTEXTLENGTH", 00071 "WM_PAINT", 00072 "WM_CLOSE", /* 0x10 */ 00073 "WM_QUERYENDSESSION", 00074 "WM_QUIT", 00075 "WM_QUERYOPEN", 00076 "WM_ERASEBKGND", 00077 "WM_SYSCOLORCHANGE", 00078 "WM_ENDSESSION", 00079 "wm_systemerror", 00080 "WM_SHOWWINDOW", 00081 "WM_CTLCOLOR", 00082 "WM_WININICHANGE", 00083 "WM_DEVMODECHANGE", 00084 "WM_ACTIVATEAPP", 00085 "WM_FONTCHANGE", 00086 "WM_TIMECHANGE", 00087 "WM_CANCELMODE", 00088 "WM_SETCURSOR", /* 0x20 */ 00089 "WM_MOUSEACTIVATE", 00090 "WM_CHILDACTIVATE", 00091 "WM_QUEUESYNC", 00092 "WM_GETMINMAXINFO", 00093 "wm_unused3", 00094 "wm_painticon", 00095 "WM_ICONERASEBKGND", 00096 "WM_NEXTDLGCTL", 00097 "wm_alttabactive", 00098 "WM_SPOOLERSTATUS", 00099 "WM_DRAWITEM", 00100 "WM_MEASUREITEM", 00101 "WM_DELETEITEM", 00102 "WM_VKEYTOITEM", 00103 "WM_CHARTOITEM", 00104 "WM_SETFONT", /* 0x30 */ 00105 "WM_GETFONT", 00106 "WM_SETHOTKEY", 00107 "WM_GETHOTKEY", 00108 "wm_filesyschange", 00109 "wm_isactiveicon", 00110 "wm_queryparkicon", 00111 "WM_QUERYDRAGICON", 00112 "wm_querysavestate", 00113 "WM_COMPAREITEM", 00114 "wm_testing", 00115 NULL, 00116 NULL, 00117 "WM_GETOBJECT", /* 0x3d */ 00118 "wm_activateshellwindow", 00119 NULL, 00120 00121 NULL, /* 0x40 */ 00122 "wm_compacting", NULL, NULL, 00123 "WM_COMMNOTIFY", NULL, 00124 "WM_WINDOWPOSCHANGING", /* 0x0046 */ 00125 "WM_WINDOWPOSCHANGED", /* 0x0047 */ 00126 "WM_POWER", NULL, 00127 "WM_COPYDATA", 00128 "WM_CANCELJOURNAL", NULL, NULL, 00129 "WM_NOTIFY", NULL, 00130 00131 /* 0x0050 */ 00132 "WM_INPUTLANGCHANGEREQUEST", 00133 "WM_INPUTLANGCHANGE", 00134 "WM_TCARD", 00135 "WM_HELP", 00136 "WM_USERCHANGED", 00137 "WM_NOTIFYFORMAT", NULL, NULL, 00138 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00139 00140 /* 0x0060 */ 00141 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00142 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00143 00144 /* 0x0070 */ 00145 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00146 NULL, NULL, NULL, 00147 "WM_CONTEXTMENU", 00148 "WM_STYLECHANGING", 00149 "WM_STYLECHANGED", 00150 "WM_DISPLAYCHANGE", 00151 "WM_GETICON", 00152 00153 "WM_SETICON", /* 0x0080 */ 00154 "WM_NCCREATE", /* 0x0081 */ 00155 "WM_NCDESTROY", /* 0x0082 */ 00156 "WM_NCCALCSIZE", /* 0x0083 */ 00157 "WM_NCHITTEST", /* 0x0084 */ 00158 "WM_NCPAINT", /* 0x0085 */ 00159 "WM_NCACTIVATE", /* 0x0086 */ 00160 "WM_GETDLGCODE", /* 0x0087 */ 00161 "WM_SYNCPAINT", 00162 "WM_SYNCTASK", NULL, NULL, NULL, NULL, NULL, NULL, 00163 00164 /* 0x0090 */ 00165 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00166 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00167 00168 /* 0x00A0 */ 00169 "WM_NCMOUSEMOVE", /* 0x00a0 */ 00170 "WM_NCLBUTTONDOWN", /* 0x00a1 */ 00171 "WM_NCLBUTTONUP", /* 0x00a2 */ 00172 "WM_NCLBUTTONDBLCLK", /* 0x00a3 */ 00173 "WM_NCRBUTTONDOWN", /* 0x00a4 */ 00174 "WM_NCRBUTTONUP", /* 0x00a5 */ 00175 "WM_NCRBUTTONDBLCLK", /* 0x00a6 */ 00176 "WM_NCMBUTTONDOWN", /* 0x00a7 */ 00177 "WM_NCMBUTTONUP", /* 0x00a8 */ 00178 "WM_NCMBUTTONDBLCLK", /* 0x00a9 */ 00179 NULL, /* 0x00aa */ 00180 "WM_NCXBUTTONDOWN", /* 0x00ab */ 00181 "WM_NCXBUTTONUP", /* 0x00ac */ 00182 "WM_NCXBUTTONDBLCLK", /* 0x00ad */ 00183 NULL, /* 0x00ae */ 00184 NULL, /* 0x00af */ 00185 00186 /* 0x00B0 - Win32 Edit controls */ 00187 "EM_GETSEL", /* 0x00b0 */ 00188 "EM_SETSEL", /* 0x00b1 */ 00189 "EM_GETRECT", /* 0x00b2 */ 00190 "EM_SETRECT", /* 0x00b3 */ 00191 "EM_SETRECTNP", /* 0x00b4 */ 00192 "EM_SCROLL", /* 0x00b5 */ 00193 "EM_LINESCROLL", /* 0x00b6 */ 00194 "EM_SCROLLCARET", /* 0x00b7 */ 00195 "EM_GETMODIFY", /* 0x00b8 */ 00196 "EM_SETMODIFY", /* 0x00b9 */ 00197 "EM_GETLINECOUNT", /* 0x00ba */ 00198 "EM_LINEINDEX", /* 0x00bb */ 00199 "EM_SETHANDLE", /* 0x00bc */ 00200 "EM_GETHANDLE", /* 0x00bd */ 00201 "EM_GETTHUMB", /* 0x00be */ 00202 NULL, /* 0x00bf */ 00203 00204 NULL, /* 0x00c0 */ 00205 "EM_LINELENGTH", /* 0x00c1 */ 00206 "EM_REPLACESEL", /* 0x00c2 */ 00207 NULL, /* 0x00c3 */ 00208 "EM_GETLINE", /* 0x00c4 */ 00209 "EM_LIMITTEXT", /* 0x00c5 */ 00210 "EM_CANUNDO", /* 0x00c6 */ 00211 "EM_UNDO", /* 0x00c7 */ 00212 "EM_FMTLINES", /* 0x00c8 */ 00213 "EM_LINEFROMCHAR", /* 0x00c9 */ 00214 NULL, /* 0x00ca */ 00215 "EM_SETTABSTOPS", /* 0x00cb */ 00216 "EM_SETPASSWORDCHAR", /* 0x00cc */ 00217 "EM_EMPTYUNDOBUFFER", /* 0x00cd */ 00218 "EM_GETFIRSTVISIBLELINE", /* 0x00ce */ 00219 "EM_SETREADONLY", /* 0x00cf */ 00220 00221 "EM_SETWORDBREAKPROC", /* 0x00d0 */ 00222 "EM_GETWORDBREAKPROC", /* 0x00d1 */ 00223 "EM_GETPASSWORDCHAR", /* 0x00d2 */ 00224 "EM_SETMARGINS", /* 0x00d3 */ 00225 "EM_GETMARGINS", /* 0x00d4 */ 00226 "EM_GETLIMITTEXT", /* 0x00d5 */ 00227 "EM_POSFROMCHAR", /* 0x00d6 */ 00228 "EM_CHARFROMPOS", /* 0x00d7 */ 00229 "EM_SETIMESTATUS", /* 0x00d8 */ 00230 "EM_GETIMESTATUS", /* 0x00d9 */ 00231 NULL, NULL, NULL, NULL, NULL, NULL, 00232 00233 /* 0x00E0 - Win32 Scrollbars */ 00234 "SBM_SETPOS", /* 0x00e0 */ 00235 "SBM_GETPOS", /* 0x00e1 */ 00236 "SBM_SETRANGE", /* 0x00e2 */ 00237 "SBM_GETRANGE", /* 0x00e3 */ 00238 "SBM_ENABLE_ARROWS", /* 0x00e4 */ 00239 NULL, 00240 "SBM_SETRANGEREDRAW", /* 0x00e6 */ 00241 NULL, NULL, 00242 "SBM_SETSCROLLINFO", /* 0x00e9 */ 00243 "SBM_GETSCROLLINFO", /* 0x00ea */ 00244 NULL, NULL, NULL, NULL, NULL, 00245 00246 /* 0x00F0 - Win32 Buttons */ 00247 "BM_GETCHECK", /* 0x00f0 */ 00248 "BM_SETCHECK", /* 0x00f1 */ 00249 "BM_GETSTATE", /* 0x00f2 */ 00250 "BM_SETSTATE", /* 0x00f3 */ 00251 "BM_SETSTYLE", /* 0x00f4 */ 00252 "BM_CLICK", /* 0x00f5 */ 00253 "BM_GETIMAGE", /* 0x00f6 */ 00254 "BM_SETIMAGE", /* 0x00f7 */ 00255 NULL, NULL, NULL, NULL, NULL, NULL, 00256 "WM_INPUT_DEVICE_CHANGE", /* 0x00fe */ 00257 "WM_INPUT", /* 0x00ff */ 00258 00259 "WM_KEYDOWN", /* 0x0100 */ 00260 "WM_KEYUP", /* 0x0101 */ 00261 "WM_CHAR", /* 0x0102 */ 00262 "WM_DEADCHAR", /* 0x0103 */ 00263 "WM_SYSKEYDOWN", /* 0x0104 */ 00264 "WM_SYSKEYUP", /* 0x0105 */ 00265 "WM_SYSCHAR", /* 0x0106 */ 00266 "WM_SYSDEADCHAR", /* 0x0107 */ 00267 "WM_KEYLAST", /* 0x0108 */ 00268 "WM_UNICHAR", /* 0x0109 */ 00269 "WM_CONVERTREQUEST", /* 0x010a */ 00270 "WM_CONVERTRESULT", /* 0x010b */ 00271 "WM_INTERIM", /* 0x010c */ 00272 "WM_IME_STARTCOMPOSITION", /* 0x010d */ 00273 "WM_IME_ENDCOMPOSITION", /* 0x010e */ 00274 "WM_IME_COMPOSITION", /* 0x010f */ 00275 00276 "WM_INITDIALOG", /* 0x0110 */ 00277 "WM_COMMAND", /* 0x0111 */ 00278 "WM_SYSCOMMAND", /* 0x0112 */ 00279 "WM_TIMER", /* 0x0113 */ 00280 "WM_HSCROLL", /* 0x0114 */ 00281 "WM_VSCROLL", /* 0x0115 */ 00282 "WM_INITMENU", /* 0x0116 */ 00283 "WM_INITMENUPOPUP", /* 0x0117 */ 00284 "WM_SYSTIMER", /* 0x0118 */ 00285 NULL, NULL, NULL, NULL, NULL, NULL, 00286 "WM_MENUSELECT", /* 0x011f */ 00287 00288 "WM_MENUCHAR", /* 0x0120 */ 00289 "WM_ENTERIDLE", /* 0x0121 */ 00290 00291 "WM_MENURBUTTONUP", /* 0x0122 */ 00292 "WM_MENUDRAG", /* 0x0123 */ 00293 "WM_MENUGETOBJECT", /* 0x0124 */ 00294 "WM_UNINITMENUPOPUP", /* 0x0125 */ 00295 "WM_MENUCOMMAND", /* 0x0126 */ 00296 "WM_CHANGEUISTATE", /* 0x0127 */ 00297 "WM_UPDATEUISTATE", /* 0x0128 */ 00298 "WM_QUERYUISTATE", /* 0x0129 */ 00299 00300 NULL, NULL, NULL, NULL, NULL, NULL, 00301 00302 /* 0x0130 */ 00303 NULL, 00304 "WM_LBTRACKPOINT", /* 0x0131 */ 00305 "WM_CTLCOLORMSGBOX", /* 0x0132 */ 00306 "WM_CTLCOLOREDIT", /* 0x0133 */ 00307 "WM_CTLCOLORLISTBOX", /* 0x0134 */ 00308 "WM_CTLCOLORBTN", /* 0x0135 */ 00309 "WM_CTLCOLORDLG", /* 0x0136 */ 00310 "WM_CTLCOLORSCROLLBAR", /* 0x0137 */ 00311 "WM_CTLCOLORSTATIC", /* 0x0138 */ 00312 NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00313 00314 /* 0x0140 - Win32 Comboboxes */ 00315 "CB_GETEDITSEL", /* 0x0140 */ 00316 "CB_LIMITTEXT", /* 0x0141 */ 00317 "CB_SETEDITSEL", /* 0x0142 */ 00318 "CB_ADDSTRING", /* 0x0143 */ 00319 "CB_DELETESTRING", /* 0x0144 */ 00320 "CB_DIR", /* 0x0145 */ 00321 "CB_GETCOUNT", /* 0x0146 */ 00322 "CB_GETCURSEL", /* 0x0147 */ 00323 "CB_GETLBTEXT", /* 0x0148 */ 00324 "CB_GETLBTEXTLEN", /* 0x0149 */ 00325 "CB_INSERTSTRING", /* 0x014a */ 00326 "CB_RESETCONTENT", /* 0x014b */ 00327 "CB_FINDSTRING", /* 0x014c */ 00328 "CB_SELECTSTRING", /* 0x014d */ 00329 "CB_SETCURSEL", /* 0x014e */ 00330 "CB_SHOWDROPDOWN", /* 0x014f */ 00331 00332 "CB_GETITEMDATA", /* 0x0150 */ 00333 "CB_SETITEMDATA", /* 0x0151 */ 00334 "CB_GETDROPPEDCONTROLRECT", /* 0x0152 */ 00335 "CB_SETITEMHEIGHT", /* 0x0153 */ 00336 "CB_GETITEMHEIGHT", /* 0x0154 */ 00337 "CB_SETEXTENDEDUI", /* 0x0155 */ 00338 "CB_GETEXTENDEDUI", /* 0x0156 */ 00339 "CB_GETDROPPEDSTATE", /* 0x0157 */ 00340 "CB_FINDSTRINGEXACT", /* 0x0158 */ 00341 "CB_SETLOCALE", /* 0x0159 */ 00342 "CB_GETLOCALE", /* 0x015a */ 00343 "CB_GETTOPINDEX", /* 0x015b */ 00344 "CB_SETTOPINDEX", /* 0x015c */ 00345 "CB_GETHORIZONTALEXTENT", /* 0x015d */ 00346 "CB_SETHORIZONTALEXTENT", /* 0x015e */ 00347 "CB_GETDROPPEDWIDTH", /* 0x015f */ 00348 00349 "CB_SETDROPPEDWIDTH", /* 0x0160 */ 00350 "CB_INITSTORAGE", /* 0x0161 */ 00351 NULL, NULL, NULL, NULL, NULL, NULL, 00352 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00353 00354 /* 0x0170 - Win32 Static controls */ 00355 "STM_SETICON", /* 0x0170 */ 00356 "STM_GETICON", /* 0x0171 */ 00357 "STM_SETIMAGE", /* 0x0172 */ 00358 "STM_GETIMAGE", /* 0x0173 */ 00359 NULL, NULL, NULL, NULL, 00360 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00361 00362 /* 0x0180 - Win32 Listboxes */ 00363 "LB_ADDSTRING", /* 0x0180 */ 00364 "LB_INSERTSTRING", /* 0x0181 */ 00365 "LB_DELETESTRING", /* 0x0182 */ 00366 "LB_SELITEMRANGEEX", /* 0x0183 */ 00367 "LB_RESETCONTENT", /* 0x0184 */ 00368 "LB_SETSEL", /* 0x0185 */ 00369 "LB_SETCURSEL", /* 0x0186 */ 00370 "LB_GETSEL", /* 0x0187 */ 00371 "LB_GETCURSEL", /* 0x0188 */ 00372 "LB_GETTEXT", /* 0x0189 */ 00373 "LB_GETTEXTLEN", /* 0x018a */ 00374 "LB_GETCOUNT", /* 0x018b */ 00375 "LB_SELECTSTRING", /* 0x018c */ 00376 "LB_DIR", /* 0x018d */ 00377 "LB_GETTOPINDEX", /* 0x018e */ 00378 "LB_FINDSTRING", /* 0x018f */ 00379 00380 "LB_GETSELCOUNT", /* 0x0190 */ 00381 "LB_GETSELITEMS", /* 0x0191 */ 00382 "LB_SETTABSTOPS", /* 0x0192 */ 00383 "LB_GETHORIZONTALEXTENT", /* 0x0193 */ 00384 "LB_SETHORIZONTALEXTENT", /* 0x0194 */ 00385 "LB_SETCOLUMNWIDTH", /* 0x0195 */ 00386 "LB_ADDFILE", /* 0x0196 */ 00387 "LB_SETTOPINDEX", /* 0x0197 */ 00388 "LB_GETITEMRECT", /* 0x0198 */ 00389 "LB_GETITEMDATA", /* 0x0199 */ 00390 "LB_SETITEMDATA", /* 0x019a */ 00391 "LB_SELITEMRANGE", /* 0x019b */ 00392 "LB_SETANCHORINDEX", /* 0x019c */ 00393 "LB_GETANCHORINDEX", /* 0x019d */ 00394 "LB_SETCARETINDEX", /* 0x019e */ 00395 "LB_GETCARETINDEX", /* 0x019f */ 00396 00397 "LB_SETITEMHEIGHT", /* 0x01a0 */ 00398 "LB_GETITEMHEIGHT", /* 0x01a1 */ 00399 "LB_FINDSTRINGEXACT", /* 0x01a2 */ 00400 "LB_CARETON", /* 0x01a3 */ 00401 "LB_CARETOFF", /* 0x01a4 */ 00402 "LB_SETLOCALE", /* 0x01a5 */ 00403 "LB_GETLOCALE", /* 0x01a6 */ 00404 "LB_SETCOUNT", /* 0x01a7 */ 00405 "LB_INITSTORAGE", /* 0x01a8 */ 00406 "LB_ITEMFROMPOINT", /* 0x01a9 */ 00407 NULL, NULL, NULL, NULL, NULL, NULL, 00408 00409 /* 0x01B0 */ 00410 NULL, NULL, 00411 "LB_GETLISTBOXINFO", /* 0x01b2 */ 00412 NULL, NULL, NULL, NULL, NULL, 00413 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00414 00415 /* 0x01C0 */ 00416 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00417 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00418 00419 /* 0x01D0 */ 00420 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00421 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00422 00423 /* 0x01E0 */ 00424 NULL, 00425 "MN_GETHMENU", /* 0x01E1 */ 00426 NULL, NULL, NULL, NULL, NULL, NULL, 00427 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00428 00429 /* 0x01F0 */ 00430 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00431 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00432 00433 "WM_MOUSEMOVE", /* 0x0200 */ 00434 "WM_LBUTTONDOWN", /* 0x0201 */ 00435 "WM_LBUTTONUP", /* 0x0202 */ 00436 "WM_LBUTTONDBLCLK", /* 0x0203 */ 00437 "WM_RBUTTONDOWN", /* 0x0204 */ 00438 "WM_RBUTTONUP", /* 0x0205 */ 00439 "WM_RBUTTONDBLCLK", /* 0x0206 */ 00440 "WM_MBUTTONDOWN", /* 0x0207 */ 00441 "WM_MBUTTONUP", /* 0x0208 */ 00442 "WM_MBUTTONDBLCLK", /* 0x0209 */ 00443 "WM_MOUSEWHEEL", /* 0x020A */ 00444 "WM_XBUTTONDOWN", /* 0x020B */ 00445 "WM_XBUTTONUP", /* 0x020C */ 00446 "WM_XBUTTONDBLCLK", /* 0x020D */ 00447 "WM_MOUSEHWHEEL", /* 0x020E */ 00448 NULL, 00449 00450 "WM_PARENTNOTIFY", /* 0x0210 */ 00451 "WM_ENTERMENULOOP", /* 0x0211 */ 00452 "WM_EXITMENULOOP", /* 0x0212 */ 00453 "WM_NEXTMENU", /* 0x0213 */ 00454 "WM_SIZING", 00455 "WM_CAPTURECHANGED", 00456 "WM_MOVING", NULL, 00457 "WM_POWERBROADCAST", 00458 "WM_DEVICECHANGE", NULL, NULL, NULL, NULL, NULL, NULL, 00459 00460 "WM_MDICREATE", /* 0x0220 */ 00461 "WM_MDIDESTROY", /* 0x0221 */ 00462 "WM_MDIACTIVATE", /* 0x0222 */ 00463 "WM_MDIRESTORE", /* 0x0223 */ 00464 "WM_MDINEXT", /* 0x0224 */ 00465 "WM_MDIMAXIMIZE", /* 0x0225 */ 00466 "WM_MDITILE", /* 0x0226 */ 00467 "WM_MDICASCADE", /* 0x0227 */ 00468 "WM_MDIICONARRANGE", /* 0x0228 */ 00469 "WM_MDIGETACTIVE", /* 0x0229 */ 00470 00471 "WM_DROPOBJECT", 00472 "WM_QUERYDROPOBJECT", 00473 "WM_BEGINDRAG", 00474 "WM_DRAGLOOP", 00475 "WM_DRAGSELECT", 00476 "WM_DRAGMOVE", 00477 00478 /* 0x0230*/ 00479 "WM_MDISETMENU", /* 0x0230 */ 00480 "WM_ENTERSIZEMOVE", /* 0x0231 */ 00481 "WM_EXITSIZEMOVE", /* 0x0232 */ 00482 "WM_DROPFILES", /* 0x0233 */ 00483 "WM_MDIREFRESHMENU", NULL, NULL, NULL, 00484 /* 0x0238*/ 00485 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00486 00487 /* 0x0240 */ 00488 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00489 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00490 00491 /* 0x0250 */ 00492 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00493 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00494 00495 /* 0x0260 */ 00496 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00497 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00498 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00499 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00500 00501 /* 0x0280 */ 00502 NULL, 00503 "WM_IME_SETCONTEXT", /* 0x0281 */ 00504 "WM_IME_NOTIFY", /* 0x0282 */ 00505 "WM_IME_CONTROL", /* 0x0283 */ 00506 "WM_IME_COMPOSITIONFULL", /* 0x0284 */ 00507 "WM_IME_SELECT", /* 0x0285 */ 00508 "WM_IME_CHAR", /* 0x0286 */ 00509 NULL, 00510 "WM_IME_REQUEST", /* 0x0288 */ 00511 NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00512 "WM_IME_KEYDOWN", /* 0x0290 */ 00513 "WM_IME_KEYUP", /* 0x0291 */ 00514 NULL, NULL, NULL, NULL, NULL, NULL, 00515 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00516 00517 /* 0x02a0 */ 00518 "WM_NCMOUSEHOVER", /* 0x02A0 */ 00519 "WM_MOUSEHOVER", /* 0x02A1 */ 00520 "WM_NCMOUSELEAVE", /* 0x02A2 */ 00521 "WM_MOUSELEAVE", /* 0x02A3 */ 00522 NULL, NULL, NULL, NULL, NULL, NULL, 00523 NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00524 "WM_WTSSESSION_CHANGE", /* 0x02B1 */ 00525 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00526 NULL, NULL, NULL, NULL, NULL, NULL, 00527 00528 /* 0x02c0 */ 00529 "WM_TABLET_FIRST", /* 0x02c0 */ 00530 "WM_TABLET_FIRST+1", /* 0x02c1 */ 00531 "WM_TABLET_FIRST+2", /* 0x02c2 */ 00532 "WM_TABLET_FIRST+3", /* 0x02c3 */ 00533 "WM_TABLET_FIRST+4", /* 0x02c4 */ 00534 "WM_TABLET_FIRST+5", /* 0x02c5 */ 00535 "WM_TABLET_FIRST+7", /* 0x02c6 */ 00536 "WM_TABLET_FIRST+8", /* 0x02c7 */ 00537 "WM_TABLET_FIRST+9", /* 0x02c8 */ 00538 "WM_TABLET_FIRST+10", /* 0x02c9 */ 00539 "WM_TABLET_FIRST+11", /* 0x02ca */ 00540 "WM_TABLET_FIRST+12", /* 0x02cb */ 00541 "WM_TABLET_FIRST+13", /* 0x02cc */ 00542 "WM_TABLET_FIRST+14", /* 0x02cd */ 00543 "WM_TABLET_FIRST+15", /* 0x02ce */ 00544 "WM_TABLET_FIRST+16", /* 0x02cf */ 00545 "WM_TABLET_FIRST+17", /* 0x02d0 */ 00546 "WM_TABLET_FIRST+18", /* 0x02d1 */ 00547 "WM_TABLET_FIRST+19", /* 0x02d2 */ 00548 "WM_TABLET_FIRST+20", /* 0x02d3 */ 00549 "WM_TABLET_FIRST+21", /* 0x02d4 */ 00550 "WM_TABLET_FIRST+22", /* 0x02d5 */ 00551 "WM_TABLET_FIRST+23", /* 0x02d6 */ 00552 "WM_TABLET_FIRST+24", /* 0x02d7 */ 00553 "WM_TABLET_FIRST+25", /* 0x02d8 */ 00554 "WM_TABLET_FIRST+26", /* 0x02d9 */ 00555 "WM_TABLET_FIRST+27", /* 0x02da */ 00556 "WM_TABLET_FIRST+28", /* 0x02db */ 00557 "WM_TABLET_FIRST+29", /* 0x02dc */ 00558 "WM_TABLET_FIRST+30", /* 0x02dd */ 00559 "WM_TABLET_FIRST+31", /* 0x02de */ 00560 "WM_TABLET_LAST", /* 0x02df */ 00561 00562 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00563 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00564 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00565 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00566 00567 "WM_CUT", /* 0x0300 */ 00568 "WM_COPY", 00569 "WM_PASTE", 00570 "WM_CLEAR", 00571 "WM_UNDO", 00572 "WM_RENDERFORMAT", 00573 "WM_RENDERALLFORMATS", 00574 "WM_DESTROYCLIPBOARD", 00575 "WM_DRAWCLIPBOARD", 00576 "WM_PAINTCLIPBOARD", 00577 "WM_VSCROLLCLIPBOARD", 00578 "WM_SIZECLIPBOARD", 00579 "WM_ASKCBFORMATNAME", 00580 "WM_CHANGECBCHAIN", 00581 "WM_HSCROLLCLIPBOARD", 00582 "WM_QUERYNEWPALETTE", /* 0x030f*/ 00583 00584 "WM_PALETTEISCHANGING", 00585 "WM_PALETTECHANGED", 00586 "WM_HOTKEY", /* 0x0312 */ 00587 "WM_POPUPSYSTEMMENU", /* 0x0313 */ 00588 NULL, NULL, NULL, 00589 "WM_PRINT", /* 0x0317 */ 00590 "WM_PRINTCLIENT", /* 0x0318 */ 00591 "WM_APPCOMMAND", /* 0x0319 */ 00592 "WM_THEMECHANGED", /* 0x031A */ 00593 NULL, NULL, 00594 "WM_CLIPBOARDUPDATE", /* 0x031D */ 00595 "WM_DWMCOMPOSITIONCHANGED", /* 0x031E */ 00596 "WM_DWMNCRENDERINGCHANGED", /* 0x031F */ 00597 00598 "WM_DWMCOLORIZATIONCOLORCHANGED", /* 0x0320 */ 00599 "WM_DWMWINDOWMAXIMIZEDCHANGE", /* 0x0321 */ 00600 NULL, NULL, NULL, NULL, NULL, NULL, 00601 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00602 00603 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00604 NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00605 "WM_GETTITLEBARINFOEX", /* 0x033F */ 00606 00607 /* 0x0340 */ 00608 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00609 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00610 /* 0x0350 */ 00611 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00612 "WM_HANDHELDFIRST", /* 0x0358 */ 00613 "WM_HANDHELDFIRST+1", /* 0x0359 */ 00614 "WM_HANDHELDFIRST+2", /* 0x035A */ 00615 "WM_HANDHELDFIRST+3", /* 0x035B */ 00616 "WM_HANDHELDFIRST+4", /* 0x035C */ 00617 "WM_HANDHELDFIRST+5", /* 0x035D */ 00618 "WM_HANDHELDFIRST+6", /* 0x035E */ 00619 "WM_HANDHELDLAST", /* 0x035F */ 00620 00621 "WM_QUERYAFXWNDPROC", /* 0x0360 WM_AFXFIRST */ 00622 "WM_SIZEPARENT", /* 0x0361 */ 00623 "WM_SETMESSAGESTRING", /* 0x0362 */ 00624 "WM_IDLEUPDATECMDUI", /* 0x0363 */ 00625 "WM_INITIALUPDATE", /* 0x0364 */ 00626 "WM_COMMANDHELP", /* 0x0365 */ 00627 "WM_HELPHITTEST", /* 0x0366 */ 00628 "WM_EXITHELPMODE", /* 0x0367 */ 00629 "WM_RECALCPARENT", /* 0x0368 */ 00630 "WM_SIZECHILD", /* 0x0369 */ 00631 "WM_KICKIDLE", /* 0x036A */ 00632 "WM_QUERYCENTERWND", /* 0x036B */ 00633 "WM_DISABLEMODAL", /* 0x036C */ 00634 "WM_FLOATSTATUS", /* 0x036D */ 00635 "WM_ACTIVATETOPLEVEL", /* 0x036E */ 00636 "WM_QUERY3DCONTROLS", /* 0x036F */ 00637 NULL,NULL,NULL, 00638 "WM_SOCKET_NOTIFY", /* 0x0373 */ 00639 "WM_SOCKET_DEAD", /* 0x0374 */ 00640 "WM_POPMESSAGESTRING", /* 0x0375 */ 00641 "WM_OCC_LOADFROMSTREAM", /* 0x0376 */ 00642 "WM_OCC_LOADFROMSTORAGE", /* 0x0377 */ 00643 "WM_OCC_INITNEW", /* 0x0378 */ 00644 "WM_QUEUE_SENTINEL", /* 0x0379 */ 00645 "WM_OCC_LOADFROMSTREAM_EX", /* 0x037A */ 00646 "WM_OCC_LOADFROMSTORAGE_EX", /* 0x037B */ 00647 00648 NULL,NULL,NULL, 00649 "WM_AFXLAST", /* 0x037F */ 00650 00651 "WM_PENWINFIRST", /* 0x0380 */ 00652 "WM_RCRESULT", /* 0x0381 */ 00653 "WM_HOOKRCRESULT", /* 0x0382 */ 00654 "WM_GLOBALRCCHANGE", /* 0x0383 */ 00655 "WM_SKB", /* 0x0384 */ 00656 "WM_HEDITCTL", /* 0x0385 */ 00657 NULL, NULL, 00658 NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00659 "WM_PENWINLAST", /* 0x038F */ 00660 00661 "WM_COALESCE_FIRST", /* 0x0390 */ 00662 NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00663 NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00664 "WM_COALESCE_LAST", /* 0x039F */ 00665 00666 /* 0x03a0 */ 00667 "MM_JOY1MOVE", 00668 "MM_JOY2MOVE", 00669 "MM_JOY1ZMOVE", 00670 "MM_JOY2ZMOVE", 00671 NULL, NULL, NULL, NULL, 00672 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00673 00674 /* 0x03b0 */ 00675 NULL, NULL, NULL, NULL, NULL, 00676 "MM_JOY1BUTTONDOWN", 00677 "MM_JOY2BUTTONDOWN", 00678 "MM_JOY1BUTTONUP", 00679 "MM_JOY2BUTTONUP", 00680 "MM_MCINOTIFY", 00681 NULL, 00682 "MM_WOM_OPEN", 00683 "MM_WOM_CLOSE", 00684 "MM_WOM_DONE", 00685 "MM_WIM_OPEN", 00686 "MM_WIM_CLOSE", 00687 00688 /* 0x03c0 */ 00689 "MM_WIM_DATA", 00690 "MM_MIM_OPEN", 00691 "MM_MIM_CLOSE", 00692 "MM_MIM_DATA", 00693 "MM_MIM_LONGDATA", 00694 "MM_MIM_ERROR", 00695 "MM_MIM_LONGERROR", 00696 "MM_MOM_OPEN", 00697 "MM_MOM_CLOSE", 00698 "MM_MOM_DONE", 00699 NULL, NULL, NULL, NULL, NULL, NULL, 00700 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00701 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00702 00703 /* 0x03e0 */ 00704 "WM_DDE_INITIATE", /* 0x3E0 */ 00705 "WM_DDE_TERMINATE", /* 0x3E1 */ 00706 "WM_DDE_ADVISE", /* 0x3E2 */ 00707 "WM_DDE_UNADVISE", /* 0x3E3 */ 00708 "WM_DDE_ACK", /* 0x3E4 */ 00709 "WM_DDE_DATA", /* 0x3E5 */ 00710 "WM_DDE_REQUEST", /* 0x3E6 */ 00711 "WM_DDE_POKE", /* 0x3E7 */ 00712 "WM_DDE_EXECUTE", /* 0x3E8 */ 00713 NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00714 00715 00716 /* 0x03f0 */ 00717 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00718 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 00719 00720 "WM_USER" /* 0x0400 */ 00721 }; 00722 00723 00724 #define SPY_MAX_LVMMSGNUM 182 00725 static const char * const LVMMessageTypeNames[SPY_MAX_LVMMSGNUM + 1] = 00726 { 00727 "LVM_GETBKCOLOR", /* 1000 */ 00728 "LVM_SETBKCOLOR", 00729 "LVM_GETIMAGELIST", 00730 "LVM_SETIMAGELIST", 00731 "LVM_GETITEMCOUNT", 00732 "LVM_GETITEMA", 00733 "LVM_SETITEMA", 00734 "LVM_INSERTITEMA", 00735 "LVM_DELETEITEM", 00736 "LVM_DELETEALLITEMS", 00737 "LVM_GETCALLBACKMASK", 00738 "LVM_SETCALLBACKMASK", 00739 "LVM_GETNEXTITEM", 00740 "LVM_FINDITEMA", 00741 "LVM_GETITEMRECT", 00742 "LVM_SETITEMPOSITION", 00743 "LVM_GETITEMPOSITION", 00744 "LVM_GETSTRINGWIDTHA", 00745 "LVM_HITTEST", 00746 "LVM_ENSUREVISIBLE", 00747 "LVM_SCROLL", 00748 "LVM_REDRAWITEMS", 00749 "LVM_ARRANGE", 00750 "LVM_EDITLABELA", 00751 "LVM_GETEDITCONTROL", 00752 "LVM_GETCOLUMNA", 00753 "LVM_SETCOLUMNA", 00754 "LVM_INSERTCOLUMNA", 00755 "LVM_DELETECOLUMN", 00756 "LVM_GETCOLUMNWIDTH", 00757 "LVM_SETCOLUMNWIDTH", 00758 "LVM_GETHEADER", 00759 NULL, 00760 "LVM_CREATEDRAGIMAGE", 00761 "LVM_GETVIEWRECT", 00762 "LVM_GETTEXTCOLOR", 00763 "LVM_SETTEXTCOLOR", 00764 "LVM_GETTEXTBKCOLOR", 00765 "LVM_SETTEXTBKCOLOR", 00766 "LVM_GETTOPINDEX", 00767 "LVM_GETCOUNTPERPAGE", 00768 "LVM_GETORIGIN", 00769 "LVM_UPDATE", 00770 "LVM_SETITEMSTATE", 00771 "LVM_GETITEMSTATE", 00772 "LVM_GETITEMTEXTA", 00773 "LVM_SETITEMTEXTA", 00774 "LVM_SETITEMCOUNT", 00775 "LVM_SORTITEMS", 00776 "LVM_SETITEMPOSITION32", 00777 "LVM_GETSELECTEDCOUNT", 00778 "LVM_GETITEMSPACING", 00779 "LVM_GETISEARCHSTRINGA", 00780 "LVM_SETICONSPACING", 00781 "LVM_SETEXTENDEDLISTVIEWSTYLE", 00782 "LVM_GETEXTENDEDLISTVIEWSTYLE", 00783 "LVM_GETSUBITEMRECT", 00784 "LVM_SUBITEMHITTEST", 00785 "LVM_SETCOLUMNORDERARRAY", 00786 "LVM_GETCOLUMNORDERARRAY", 00787 "LVM_SETHOTITEM", 00788 "LVM_GETHOTITEM", 00789 "LVM_SETHOTCURSOR", 00790 "LVM_GETHOTCURSOR", 00791 "LVM_APPROXIMATEVIEWRECT", 00792 "LVM_SETWORKAREAS", 00793 "LVM_GETSELECTIONMARK", 00794 "LVM_SETSELECTIONMARK", 00795 "LVM_SETBKIMAGEA", 00796 "LVM_GETBKIMAGEA", 00797 "LVM_GETWORKAREAS", 00798 "LVM_SETHOVERTIME", 00799 "LVM_GETHOVERTIME", 00800 "LVM_GETNUMBEROFWORKAREAS", 00801 "LVM_SETTOOLTIPS", 00802 "LVM_GETITEMW", 00803 "LVM_SETITEMW", 00804 "LVM_INSERTITEMW", 00805 "LVM_GETTOOLTIPS", 00806 NULL, 00807 NULL, 00808 NULL, 00809 NULL, 00810 "LVM_FINDITEMW", 00811 NULL, 00812 NULL, 00813 NULL, 00814 "LVM_GETSTRINGWIDTHW", 00815 NULL, 00816 NULL, 00817 NULL, 00818 NULL, 00819 NULL, 00820 NULL, 00821 NULL, 00822 "LVM_GETCOLUMNW", 00823 "LVM_SETCOLUMNW", 00824 "LVM_INSERTCOLUMNW", 00825 NULL, 00826 NULL, 00827 NULL, 00828 NULL, 00829 NULL, 00830 NULL, 00831 NULL, 00832 NULL, 00833 NULL, 00834 NULL, 00835 NULL, 00836 NULL, 00837 NULL, 00838 NULL, 00839 NULL, 00840 NULL, 00841 NULL, 00842 "LVM_GETITEMTEXTW", 00843 "LVM_SETITEMTEXTW", 00844 "LVM_GETISEARCHSTRINGW", 00845 "LVM_EDITLABELW", 00846 NULL, 00847 NULL, 00848 NULL, 00849 NULL, 00850 NULL, 00851 NULL, 00852 NULL, 00853 NULL, 00854 NULL, 00855 NULL, 00856 NULL, 00857 NULL, 00858 NULL, 00859 NULL, 00860 NULL, 00861 NULL, 00862 NULL, 00863 NULL, 00864 NULL, 00865 NULL, 00866 "LVM_SETBKIMAGEW", 00867 "LVM_GETBKIMAGEW" /* 0x108B */ 00868 "LVM_SETSELECTEDCOLUMN", 00869 "LVM_SETTILEWIDTH", 00870 "LVM_SETVIEW", 00871 "LVM_GETVIEW", 00872 NULL, 00873 "LVM_INSERTGROUP", 00874 NULL, 00875 "LVM_SETGROUPINFO", 00876 NULL, 00877 "LVM_GETGROUPINFO", 00878 "LVM_REMOVEGROUP", 00879 "LVM_MOVEGROUP", 00880 NULL, 00881 NULL, 00882 "LVM_MOVEITEMTOGROUP", 00883 "LVM_SETGROUPMETRICS", 00884 "LVM_GETGROUPMETRICS", 00885 "LVM_ENABLEGROUPVIEW", 00886 "LVM_SORTGROUPS", 00887 "LVM_INSERTGROUPSORTED", 00888 "LVM_REMOVEALLGROUPS", 00889 "LVM_HASGROUP", 00890 "LVM_SETTILEVIEWINFO", 00891 "LVM_GETTILEVIEWINFO", 00892 "LVM_SETTILEINFO", 00893 "LVM_GETTILEINFO", 00894 "LVM_SETINSERTMARK", 00895 "LVM_GETINSERTMARK", 00896 "LVM_INSERTMARKHITTEST", 00897 "LVM_GETINSERTMARKRECT", 00898 "LVM_SETINSERTMARKCOLOR", 00899 "LVM_GETINSERTMARKCOLOR", 00900 NULL, 00901 "LVM_SETINFOTIP", 00902 "LVM_GETSELECTEDCOLUMN", 00903 "LVM_ISGROUPVIEWENABLED", 00904 "LVM_GETOUTLINECOLOR", 00905 "LVM_SETOUTLINECOLOR", 00906 NULL, 00907 "LVM_CANCELEDITLABEL", 00908 "LVM_MAPINDEXTOID", 00909 "LVM_MAPIDTOINDEX", 00910 "LVM_ISITEMVISIBLE" 00911 }; 00912 00913 00914 #define SPY_MAX_TVMSGNUM 65 00915 static const char * const TVMessageTypeNames[SPY_MAX_TVMSGNUM + 1] = 00916 { 00917 "TVM_INSERTITEMA", /* 1100 */ 00918 "TVM_DELETEITEM", 00919 "TVM_EXPAND", 00920 NULL, 00921 "TVM_GETITEMRECT", 00922 "TVM_GETCOUNT", 00923 "TVM_GETINDENT", 00924 "TVM_SETINDENT", 00925 "TVM_GETIMAGELIST", 00926 "TVM_SETIMAGELIST", 00927 "TVM_GETNEXTITEM", 00928 "TVM_SELECTITEM", 00929 "TVM_GETITEMA", 00930 "TVM_SETITEMA", 00931 "TVM_EDITLABELA", 00932 "TVM_GETEDITCONTROL", 00933 "TVM_GETVISIBLECOUNT", 00934 "TVM_HITTEST", 00935 "TVM_CREATEDRAGIMAGE", 00936 "TVM_SORTCHILDREN", 00937 "TVM_ENSUREVISIBLE", 00938 "TVM_SORTCHILDRENCB", 00939 "TVM_ENDEDITLABELNOW", 00940 "TVM_GETISEARCHSTRINGA", 00941 "TVM_SETTOOLTIPS", 00942 "TVM_GETTOOLTIPS", 00943 "TVM_SETINSERTMARK", 00944 "TVM_SETITEMHEIGHT", 00945 "TVM_GETITEMHEIGHT", 00946 "TVM_SETBKCOLOR", 00947 "TVM_SETTEXTCOLOR", 00948 "TVM_GETBKCOLOR", 00949 "TVM_GETTEXTCOLOR", 00950 "TVM_SETSCROLLTIME", 00951 "TVM_GETSCROLLTIME", 00952 "TVM_UNKNOWN35", 00953 "TVM_UNKNOWN36", 00954 "TVM_SETINSERTMARKCOLOR", 00955 "TVM_GETINSERTMARKCOLOR", 00956 "TVM_GETITEMSTATE", 00957 "TVM_SETLINECOLOR", 00958 "TVM_GETLINECOLOR", 00959 NULL, 00960 NULL, 00961 NULL, 00962 NULL, 00963 NULL, 00964 NULL, 00965 NULL, 00966 NULL, 00967 "TVM_INSERTITEMW", 00968 NULL, 00969 NULL, 00970 NULL, 00971 NULL, 00972 NULL, 00973 NULL, 00974 NULL, 00975 NULL, 00976 NULL, 00977 NULL, 00978 NULL, 00979 "TVM_GETITEMW", 00980 "TVM_SETITEMW", 00981 "TVM_GETISEARCHSTRINGW", 00982 "TVM_EDITLABELW" 00983 }; 00984 00985 00986 #define SPY_MAX_HDMMSGNUM 19 00987 static const char * const HDMMessageTypeNames[SPY_MAX_HDMMSGNUM + 1] = 00988 { 00989 "HDM_GETITEMCOUNT", /* 1200 */ 00990 "HDM_INSERTITEMA", 00991 "HDM_DELETEITEM", 00992 "HDM_GETITEMA", 00993 "HDM_SETITEMA", 00994 "HDM_LAYOUT", 00995 "HDM_HITTEST", 00996 "HDM_GETITEMRECT", 00997 "HDM_SETIMAGELIST", 00998 "HDM_GETIMAGELIST", 00999 "HDM_INSERTITEMW", 01000 "HDM_GETITEMW", 01001 "HDM_SETITEMW", 01002 NULL, 01003 NULL, 01004 "HDM_ORDERTOINDEX", 01005 "HDM_CREATEDRAGIMAGE", 01006 "GETORDERARRAYINDEX", 01007 "SETORDERARRAYINDEX", 01008 "SETHOTDIVIDER" 01009 }; 01010 01011 01012 #define SPY_MAX_TCMMSGNUM 62 01013 static const char * const TCMMessageTypeNames[SPY_MAX_TCMMSGNUM + 1] = 01014 { 01015 NULL, /* 1300 */ 01016 NULL, 01017 "TCM_SETIMAGELIST", 01018 "TCM_GETIMAGELIST", 01019 "TCM_GETITEMCOUNT", 01020 "TCM_GETITEMA", 01021 "TCM_SETITEMA", 01022 "TCM_INSERTITEMA", 01023 "TCM_DELETEITEM", 01024 "TCM_DELETEALLITEMS", 01025 "TCM_GETITEMRECT", 01026 "TCM_GETCURSEL", 01027 "TCM_SETCURSEL", 01028 "TCM_HITTEST", 01029 "TCM_SETITEMEXTRA", 01030 NULL, 01031 NULL, 01032 NULL, 01033 NULL, 01034 NULL, 01035 NULL, 01036 NULL, 01037 NULL, 01038 NULL, 01039 NULL, 01040 NULL, 01041 NULL, 01042 NULL, 01043 NULL, 01044 NULL, 01045 NULL, 01046 NULL, 01047 NULL, 01048 NULL, 01049 NULL, 01050 NULL, 01051 NULL, 01052 NULL, 01053 NULL, 01054 NULL, 01055 "TCM_ADJUSTRECT", 01056 "TCM_SETITEMSIZE", 01057 "TCM_REMOVEIMAGE", 01058 "TCM_SETPADDING", 01059 "TCM_GETROWCOUNT", 01060 "TCM_GETTOOLTIPS", 01061 "TCM_SETTOOLTIPS", 01062 "TCM_GETCURFOCUS", 01063 "TCM_SETCURFOCUS", 01064 "TCM_SETMINTABWIDTH", 01065 "TCM_DESELECTALL", 01066 "TCM_HIGHLIGHTITEM", 01067 "TCM_SETEXTENDEDSTYLE", 01068 "TCM_GETEXTENDEDSTYLE", 01069 NULL, 01070 NULL, 01071 NULL, 01072 NULL, 01073 NULL, 01074 NULL, 01075 "TCM_GETITEMW", 01076 "TCM_SETITEMW", 01077 "TCM_INSERTITEMW" 01078 }; 01079 01080 #define SPY_MAX_PGMMSGNUM 13 01081 static const char * const PGMMessageTypeNames[SPY_MAX_PGMMSGNUM + 1] = 01082 { 01083 NULL, /* 1400 */ 01084 "PGM_SETCHILD", 01085 "PGM_RECALCSIZE", 01086 "PGM_FORWARDMOUSE", 01087 "PGM_SETBKCOLOR", 01088 "PGM_GETBKCOLOR", 01089 "PGM_SETBORDER", 01090 "PGM_GETBORDER", 01091 "PGM_SETPOS", 01092 "PGM_GETPOS", 01093 "PGM_SETBUTTONSIZE", 01094 "PGM_GETBUTTONSIZE", 01095 "PGM_GETBUTTONSTATE", 01096 "PGM_GETDROPTARGET" 01097 }; 01098 01099 01100 #define SPY_MAX_CCMMSGNUM 9 01101 static const char * const CCMMessageTypeNames[SPY_MAX_CCMMSGNUM + 1] = 01102 { 01103 NULL, /* 0x2000 */ 01104 "CCM_SETBKCOLOR", 01105 "CCM_SETCOLORSCHEME", 01106 "CCM_GETCOLORSCHEME", 01107 "CCM_GETDROPTARGET", 01108 "CCM_SETUNICODEFORMAT", 01109 "CCM_GETUNICODEFORMAT", 01110 "CCM_SETVERSION", 01111 "CCM_GETVERSION", 01112 "CCM_SETNOTIFYWINDOW" 01113 }; 01114 01115 #define SPY_MAX_WINEMSGNUM 9 01116 static const char * const WINEMessageTypeNames[SPY_MAX_WINEMSGNUM + 1] = 01117 { 01118 "WM_WINE_DESTROYWINDOW", 01119 "WM_WINE_SETWINDOWPOS", 01120 "WM_WINE_SHOWWINDOW", 01121 "WM_WINE_SETPARENT", 01122 "WM_WINE_SETWINDOWLONG", 01123 "WM_WINE_ENABLEWINDOW" 01124 "WM_WINE_SETACTIVEWINDOW", 01125 "WM_WINE_KEYBOARD_LL_HOOK", 01126 "WM_WINE_MOUSE_LL_HOOK", 01127 }; 01128 01129 /* Virtual key names */ 01130 #define SPY_MAX_VKKEYSNUM 255 01131 static const char * const VK_KeyNames[SPY_MAX_VKKEYSNUM + 1] = 01132 { 01133 NULL, /* 0x00 */ 01134 "VK_LBUTTON", /* 0x01 */ 01135 "VK_RBUTTON", /* 0x02 */ 01136 "VK_CANCEL", /* 0x03 */ 01137 "VK_MBUTTON", /* 0x04 */ 01138 "VK_XBUTTON1", /* 0x05 */ 01139 "VK_XBUTTON2", /* 0x06 */ 01140 NULL, /* 0x07 */ 01141 "VK_BACK", /* 0x08 */ 01142 "VK_TAB", /* 0x09 */ 01143 NULL, /* 0x0A */ 01144 NULL, /* 0x0B */ 01145 "VK_CLEAR", /* 0x0C */ 01146 "VK_RETURN", /* 0x0D */ 01147 NULL, /* 0x0E */ 01148 NULL, /* 0x0F */ 01149 "VK_SHIFT", /* 0x10 */ 01150 "VK_CONTROL", /* 0x11 */ 01151 "VK_MENU", /* 0x12 */ 01152 "VK_PAUSE", /* 0x13 */ 01153 "VK_CAPITAL", /* 0x14 */ 01154 NULL, /* 0x15 */ 01155 NULL, /* 0x16 */ 01156 NULL, /* 0x17 */ 01157 NULL, /* 0x18 */ 01158 NULL, /* 0x19 */ 01159 NULL, /* 0x1A */ 01160 "VK_ESCAPE", /* 0x1B */ 01161 "VK_CONVERT", /* 0x1C */ 01162 "VK_NONCONVERT", /* 0x1D */ 01163 "VK_ACCEPT", /* 0x1E */ 01164 "VK_MODECHANGE", /* 0x1F */ 01165 "VK_SPACE", /* 0x20 */ 01166 "VK_PRIOR", /* 0x21 */ 01167 "VK_NEXT", /* 0x22 */ 01168 "VK_END", /* 0x23 */ 01169 "VK_HOME", /* 0x24 */ 01170 "VK_LEFT", /* 0x25 */ 01171 "VK_UP", /* 0x26 */ 01172 "VK_RIGHT", /* 0x27 */ 01173 "VK_DOWN", /* 0x28 */ 01174 "VK_SELECT", /* 0x29 */ 01175 "VK_PRINT", /* 0x2A */ 01176 "VK_EXECUTE", /* 0x2B */ 01177 "VK_SNAPSHOT", /* 0x2C */ 01178 "VK_INSERT", /* 0x2D */ 01179 "VK_DELETE", /* 0x2E */ 01180 "VK_HELP", /* 0x2F */ 01181 "VK_0", /* 0x30 */ 01182 "VK_1", /* 0x31 */ 01183 "VK_2", /* 0x32 */ 01184 "VK_3", /* 0x33 */ 01185 "VK_4", /* 0x34 */ 01186 "VK_5", /* 0x35 */ 01187 "VK_6", /* 0x36 */ 01188 "VK_7", /* 0x37 */ 01189 "VK_8", /* 0x38 */ 01190 "VK_9", /* 0x39 */ 01191 NULL, /* 0x3A */ 01192 NULL, /* 0x3B */ 01193 NULL, /* 0x3C */ 01194 NULL, /* 0x3D */ 01195 NULL, /* 0x3E */ 01196 NULL, /* 0x3F */ 01197 NULL, /* 0x40 */ 01198 "VK_A", /* 0x41 */ 01199 "VK_B", /* 0x42 */ 01200 "VK_C", /* 0x43 */ 01201 "VK_D", /* 0x44 */ 01202 "VK_E", /* 0x45 */ 01203 "VK_F", /* 0x46 */ 01204 "VK_G", /* 0x47 */ 01205 "VK_H", /* 0x48 */ 01206 "VK_I", /* 0x49 */ 01207 "VK_J", /* 0x4A */ 01208 "VK_K", /* 0x4B */ 01209 "VK_L", /* 0x4C */ 01210 "VK_M", /* 0x4D */ 01211 "VK_N", /* 0x4E */ 01212 "VK_O", /* 0x4F */ 01213 "VK_P", /* 0x50 */ 01214 "VK_Q", /* 0x51 */ 01215 "VK_R", /* 0x52 */ 01216 "VK_S", /* 0x53 */ 01217 "VK_T", /* 0x54 */ 01218 "VK_U", /* 0x55 */ 01219 "VK_V", /* 0x56 */ 01220 "VK_W", /* 0x57 */ 01221 "VK_X", /* 0x58 */ 01222 "VK_Y", /* 0x59 */ 01223 "VK_Z", /* 0x5A */ 01224 "VK_LWIN", /* 0x5B */ 01225 "VK_RWIN", /* 0x5C */ 01226 "VK_APPS", /* 0x5D */ 01227 NULL, /* 0x5E */ 01228 "VK_SLEEP", /* 0x5F */ 01229 "VK_NUMPAD0", /* 0x60 */ 01230 "VK_NUMPAD1", /* 0x61 */ 01231 "VK_NUMPAD2", /* 0x62 */ 01232 "VK_NUMPAD3", /* 0x63 */ 01233 "VK_NUMPAD4", /* 0x64 */ 01234 "VK_NUMPAD5", /* 0x65 */ 01235 "VK_NUMPAD6", /* 0x66 */ 01236 "VK_NUMPAD7", /* 0x67 */ 01237 "VK_NUMPAD8", /* 0x68 */ 01238 "VK_NUMPAD9", /* 0x69 */ 01239 "VK_MULTIPLY", /* 0x6A */ 01240 "VK_ADD", /* 0x6B */ 01241 "VK_SEPARATOR", /* 0x6C */ 01242 "VK_SUBTRACT", /* 0x6D */ 01243 "VK_DECIMAL", /* 0x6E */ 01244 "VK_DIVIDE", /* 0x6F */ 01245 "VK_F1", /* 0x70 */ 01246 "VK_F2", /* 0x71 */ 01247 "VK_F3", /* 0x72 */ 01248 "VK_F4", /* 0x73 */ 01249 "VK_F5", /* 0x74 */ 01250 "VK_F6", /* 0x75 */ 01251 "VK_F7", /* 0x76 */ 01252 "VK_F8", /* 0x77 */ 01253 "VK_F9", /* 0x78 */ 01254 "VK_F10", /* 0x79 */ 01255 "VK_F11", /* 0x7A */ 01256 "VK_F12", /* 0x7B */ 01257 "VK_F13", /* 0x7C */ 01258 "VK_F14", /* 0x7D */ 01259 "VK_F15", /* 0x7E */ 01260 "VK_F16", /* 0x7F */ 01261 "VK_F17", /* 0x80 */ 01262 "VK_F18", /* 0x81 */ 01263 "VK_F19", /* 0x82 */ 01264 "VK_F20", /* 0x83 */ 01265 "VK_F21", /* 0x84 */ 01266 "VK_F22", /* 0x85 */ 01267 "VK_F23", /* 0x86 */ 01268 "VK_F24", /* 0x87 */ 01269 NULL, /* 0x88 */ 01270 NULL, /* 0x89 */ 01271 NULL, /* 0x8A */ 01272 NULL, /* 0x8B */ 01273 NULL, /* 0x8C */ 01274 NULL, /* 0x8D */ 01275 NULL, /* 0x8E */ 01276 NULL, /* 0x8F */ 01277 "VK_NUMLOCK", /* 0x90 */ 01278 "VK_SCROLL", /* 0x91 */ 01279 "VK_OEM_NEC_EQUAL", /* 0x92 aka. VK_OEM_FJ_JISHO */ 01280 "VK_OEM_FJ_MASSHOU", /* 0x93 */ 01281 "VK_OEM_FJ_TOUROKU", /* 0x94 */ 01282 "VK_OEM_FJ_LOYA", /* 0x95 */ 01283 "VK_OEM_FJ_ROYA", /* 0x96 */ 01284 NULL, /* 0x97 */ 01285 NULL, /* 0x98 */ 01286 NULL, /* 0x99 */ 01287 NULL, /* 0x9A */ 01288 NULL, /* 0x9B */ 01289 NULL, /* 0x9C */ 01290 NULL, /* 0x9D */ 01291 NULL, /* 0x9E */ 01292 NULL, /* 0x9F */ 01293 "VK_LSHIFT", /* 0xA0 */ 01294 "VK_RSHIFT", /* 0xA1 */ 01295 "VK_LCONTROL", /* 0xA2 */ 01296 "VK_RCONTROL", /* 0xA3 */ 01297 "VK_LMENU", /* 0xA4 */ 01298 "VK_RMENU", /* 0xA5 */ 01299 "VK_BROWSER_BACK", /* 0xA6 */ 01300 "VK_BROWSER_FORWARD", /* 0xA7 */ 01301 "VK_BROWSER_REFRESH", /* 0xA8 */ 01302 "VK_BROWSER_STOP", /* 0xA9 */ 01303 "VK_BROWSER_SEARCH", /* 0xAA */ 01304 "VK_BROWSER_FAVORITES", /* 0xAB */ 01305 "VK_BROWSER_HOME", /* 0xAC */ 01306 "VK_VOLUME_MUTE", /* 0xAD */ 01307 "VK_VOLUME_DOWN", /* 0xAE */ 01308 "VK_VOLUME_UP", /* 0xAF */ 01309 "VK_MEDIA_NEXT_TRACK", /* 0xB0 */ 01310 "VK_MEDIA_PREV_TRACK", /* 0xB1 */ 01311 "VK_MEDIA_STOP", /* 0xB2 */ 01312 "VK_MEDIA_PLAY_PAUSE", /* 0xB3 */ 01313 "VK_LAUNCH_MAIL", /* 0xB4 */ 01314 "VK_LAUNCH_MEDIA_SELECT", /* 0xB5 */ 01315 "VK_LAUNCH_APP1", /* 0xB6 */ 01316 "VK_LAUNCH_APP2", /* 0xB7 */ 01317 NULL, /* 0xB8 */ 01318 NULL, /* 0xB9 */ 01319 "VK_OEM_1", /* 0xBA */ 01320 "VK_OEM_PLUS", /* 0xBB */ 01321 "VK_OEM_COMMA", /* 0xBC */ 01322 "VK_OEM_MINUS", /* 0xBD */ 01323 "VK_OEM_PERIOD", /* 0xBE */ 01324 "VK_OEM_2", /* 0xBF */ 01325 "VK_OEM_3", /* 0xC0 */ 01326 NULL, /* 0xC1 */ 01327 NULL, /* 0xC2 */ 01328 NULL, /* 0xC3 */ 01329 NULL, /* 0xC4 */ 01330 NULL, /* 0xC5 */ 01331 NULL, /* 0xC6 */ 01332 NULL, /* 0xC7 */ 01333 NULL, /* 0xC8 */ 01334 NULL, /* 0xC9 */ 01335 NULL, /* 0xCA */ 01336 NULL, /* 0xCB */ 01337 NULL, /* 0xCC */ 01338 NULL, /* 0xCD */ 01339 NULL, /* 0xCE */ 01340 NULL, /* 0xCF */ 01341 NULL, /* 0xD0 */ 01342 NULL, /* 0xD1 */ 01343 NULL, /* 0xD2 */ 01344 NULL, /* 0xD3 */ 01345 NULL, /* 0xD4 */ 01346 NULL, /* 0xD5 */ 01347 NULL, /* 0xD6 */ 01348 NULL, /* 0xD7 */ 01349 NULL, /* 0xD8 */ 01350 NULL, /* 0xD9 */ 01351 NULL, /* 0xDA */ 01352 "VK_OEM_4", /* 0xDB */ 01353 "VK_OEM_5", /* 0xDC */ 01354 "VK_OEM_6", /* 0xDD */ 01355 "VK_OEM_7", /* 0xDE */ 01356 "VK_OEM_8", /* 0xDF */ 01357 NULL, /* 0xE0 */ 01358 "VK_OEM_AX", /* 0xE1 */ 01359 "VK_OEM_102", /* 0xE2 */ 01360 "VK_ICO_HELP", /* 0xE3 */ 01361 "VK_ICO_00", /* 0xE4 */ 01362 "VK_PROCESSKEY", /* 0xE5 */ 01363 NULL, /* 0xE6 */ 01364 "VK_PACKET", /* 0xE7 */ 01365 NULL, /* 0xE8 */ 01366 NULL, /* 0xE9 */ 01367 NULL, /* 0xEA */ 01368 NULL, /* 0xEB */ 01369 NULL, /* 0xEC */ 01370 NULL, /* 0xED */ 01371 NULL, /* 0xEE */ 01372 NULL, /* 0xEF */ 01373 NULL, /* 0xF0 */ 01374 NULL, /* 0xF1 */ 01375 NULL, /* 0xF2 */ 01376 NULL, /* 0xF3 */ 01377 NULL, /* 0xF4 */ 01378 NULL, /* 0xF5 */ 01379 "VK_ATTN", /* 0xF6 */ 01380 "VK_CRSEL", /* 0xF7 */ 01381 "VK_EXSEL", /* 0xF8 */ 01382 "VK_EREOF", /* 0xF9 */ 01383 "VK_PLAY", /* 0xFA */ 01384 "VK_ZOOM", /* 0xFB */ 01385 "VK_NONAME", /* 0xFC */ 01386 "VK_PA1", /* 0xFD */ 01387 "VK_OEM_CLEAR", /* 0xFE */ 01388 NULL /* 0xFF */ 01389 }; 01390 01391 01392 /************************************************************************/ 01393 01394 01395 /* WM_USER+n message values for "common controls" */ 01396 01397 typedef struct 01398 { 01399 const char *name; /* name of control message */ 01400 UINT value; /* message number (0x0401-0x0fff */ 01401 UINT len; /* length of space at lParam to dump */ 01402 } USER_MSG; 01403 01404 01405 typedef struct 01406 { 01407 const WCHAR *classname; /* class name to match */ 01408 const USER_MSG *classmsg; /* pointer to first USER_MSG for class */ 01409 const USER_MSG *lastmsg; /* pointer to last USER_MSG for class */ 01410 } CONTROL_CLASS; 01411 01412 #define USM(a,b) { #a ,a,b} 01413 #define SZOF(a) sizeof(a) 01414 01415 /* To dump memory at the lParam for any of these messages, */ 01416 /* replace the "0" with a "SZOF(structure)", or with a */ 01417 /* number. (First method preferred.) */ 01418 01419 #define RB_GETBANDINFO_OLD (WM_USER+5) /* obsoleted after IE3, but we have to support it anyway */ 01420 01421 static const USER_MSG rebar_array[] = { 01422 USM(RB_INSERTBANDA, 0), 01423 USM(RB_DELETEBAND, 0), 01424 USM(RB_GETBARINFO, 0), 01425 USM(RB_SETBARINFO, 0), 01426 USM(RB_GETBANDINFO_OLD, 0), 01427 USM(RB_SETBANDINFOA, 0), 01428 USM(RB_SETPARENT, 0), 01429 USM(RB_HITTEST, 0), 01430 USM(RB_GETRECT, 0), 01431 USM(RB_INSERTBANDW, 0), 01432 USM(RB_SETBANDINFOW, 0), 01433 USM(RB_GETBANDCOUNT, 0), 01434 USM(RB_GETROWCOUNT, 0), 01435 USM(RB_GETROWHEIGHT, 0), 01436 USM(RB_IDTOINDEX, 0), 01437 USM(RB_GETTOOLTIPS, 0), 01438 USM(RB_SETTOOLTIPS, 0), 01439 USM(RB_SETBKCOLOR, 0), 01440 USM(RB_GETBKCOLOR, 0), 01441 USM(RB_SETTEXTCOLOR, 0), 01442 USM(RB_GETTEXTCOLOR, 0), 01443 USM(RB_SIZETORECT, 0), 01444 USM(RB_BEGINDRAG, 0), 01445 USM(RB_ENDDRAG, 0), 01446 USM(RB_DRAGMOVE, 0), 01447 USM(RB_GETBARHEIGHT, 0), 01448 USM(RB_GETBANDINFOW, 0), 01449 USM(RB_GETBANDINFOA, 0), 01450 USM(RB_MINIMIZEBAND, 0), 01451 USM(RB_MAXIMIZEBAND, 0), 01452 USM(RB_GETBANDBORDERS, 0), 01453 USM(RB_SHOWBAND, 0), 01454 USM(RB_SETPALETTE, 0), 01455 USM(RB_GETPALETTE, 0), 01456 USM(RB_MOVEBAND, 0), 01457 {0,0,0} }; 01458 01459 static const USER_MSG toolbar_array[] = { 01460 USM(TB_ENABLEBUTTON ,0), 01461 USM(TB_CHECKBUTTON ,0), 01462 USM(TB_PRESSBUTTON ,0), 01463 USM(TB_HIDEBUTTON ,0), 01464 USM(TB_INDETERMINATE ,0), 01465 USM(TB_MARKBUTTON ,0), 01466 USM(TB_ISBUTTONENABLED ,0), 01467 USM(TB_ISBUTTONCHECKED ,0), 01468 USM(TB_ISBUTTONPRESSED ,0), 01469 USM(TB_ISBUTTONHIDDEN ,0), 01470 USM(TB_ISBUTTONINDETERMINATE ,0), 01471 USM(TB_ISBUTTONHIGHLIGHTED ,0), 01472 USM(TB_SETSTATE ,0), 01473 USM(TB_GETSTATE ,0), 01474 USM(TB_ADDBITMAP ,0), 01475 USM(TB_ADDBUTTONSA ,0), 01476 USM(TB_INSERTBUTTONA ,0), 01477 USM(TB_DELETEBUTTON ,0), 01478 USM(TB_GETBUTTON ,0), 01479 USM(TB_BUTTONCOUNT ,0), 01480 USM(TB_COMMANDTOINDEX ,0), 01481 USM(TB_SAVERESTOREA ,0), 01482 USM(TB_CUSTOMIZE ,0), 01483 USM(TB_ADDSTRINGA ,0), 01484 USM(TB_GETITEMRECT ,0), 01485 USM(TB_BUTTONSTRUCTSIZE ,0), 01486 USM(TB_SETBUTTONSIZE ,0), 01487 USM(TB_SETBITMAPSIZE ,0), 01488 USM(TB_AUTOSIZE ,0), 01489 USM(TB_GETTOOLTIPS ,0), 01490 USM(TB_SETTOOLTIPS ,0), 01491 USM(TB_SETPARENT ,0), 01492 USM(TB_SETROWS ,0), 01493 USM(TB_GETROWS ,0), 01494 USM(TB_GETBITMAPFLAGS ,0), 01495 USM(TB_SETCMDID ,0), 01496 USM(TB_CHANGEBITMAP ,0), 01497 USM(TB_GETBITMAP ,0), 01498 USM(TB_GETBUTTONTEXTA ,0), 01499 USM(TB_REPLACEBITMAP ,0), 01500 USM(TB_SETINDENT ,0), 01501 USM(TB_SETIMAGELIST ,0), 01502 USM(TB_GETIMAGELIST ,0), 01503 USM(TB_LOADIMAGES ,0), 01504 USM(TB_GETRECT ,0), 01505 USM(TB_SETHOTIMAGELIST ,0), 01506 USM(TB_GETHOTIMAGELIST ,0), 01507 USM(TB_SETDISABLEDIMAGELIST ,0), 01508 USM(TB_GETDISABLEDIMAGELIST ,0), 01509 USM(TB_SETSTYLE ,0), 01510 USM(TB_GETSTYLE ,0), 01511 USM(TB_GETBUTTONSIZE ,0), 01512 USM(TB_SETBUTTONWIDTH ,0), 01513 USM(TB_SETMAXTEXTROWS ,0), 01514 USM(TB_GETTEXTROWS ,0), 01515 USM(TB_GETOBJECT ,0), 01516 USM(TB_GETBUTTONINFOW ,0), 01517 USM(TB_SETBUTTONINFOW ,0), 01518 USM(TB_GETBUTTONINFOA ,0), 01519 USM(TB_SETBUTTONINFOA ,0), 01520 USM(TB_INSERTBUTTONW ,0), 01521 USM(TB_ADDBUTTONSW ,0), 01522 USM(TB_HITTEST ,0), 01523 USM(TB_SETDRAWTEXTFLAGS ,0), 01524 USM(TB_GETHOTITEM ,0), 01525 USM(TB_SETHOTITEM ,0), 01526 USM(TB_SETANCHORHIGHLIGHT ,0), 01527 USM(TB_GETANCHORHIGHLIGHT ,0), 01528 USM(TB_GETBUTTONTEXTW ,0), 01529 USM(TB_SAVERESTOREW ,0), 01530 USM(TB_ADDSTRINGW ,0), 01531 USM(TB_MAPACCELERATORA ,0), 01532 USM(TB_GETINSERTMARK ,0), 01533 USM(TB_SETINSERTMARK ,0), 01534 USM(TB_INSERTMARKHITTEST ,0), 01535 USM(TB_MOVEBUTTON ,0), 01536 USM(TB_GETMAXSIZE ,0), 01537 USM(TB_SETEXTENDEDSTYLE ,0), 01538 USM(TB_GETEXTENDEDSTYLE ,0), 01539 USM(TB_GETPADDING ,0), 01540 USM(TB_SETPADDING ,0), 01541 USM(TB_SETINSERTMARKCOLOR ,0), 01542 USM(TB_GETINSERTMARKCOLOR ,0), 01543 USM(TB_MAPACCELERATORW ,0), 01544 USM(TB_GETSTRINGW ,0), 01545 USM(TB_GETSTRINGA ,0), 01546 USM(TB_UNKWN45D ,8), 01547 USM(TB_SETHOTITEM2 ,0), 01548 USM(TB_SETLISTGAP ,0), 01549 USM(TB_GETIMAGELISTCOUNT ,0), 01550 USM(TB_GETIDEALSIZE ,0), 01551 USM(TB_UNKWN464 ,0), 01552 {0,0,0} }; 01553 01554 static const USER_MSG tooltips_array[] = { 01555 USM(TTM_ACTIVATE ,0), 01556 USM(TTM_SETDELAYTIME ,0), 01557 USM(TTM_ADDTOOLA ,0), 01558 USM(TTM_DELTOOLA ,0), 01559 USM(TTM_NEWTOOLRECTA ,0), 01560 USM(TTM_RELAYEVENT ,0), 01561 USM(TTM_GETTOOLINFOA ,0), 01562 USM(TTM_HITTESTA ,0), 01563 USM(TTM_GETTEXTA ,0), 01564 USM(TTM_UPDATETIPTEXTA ,0), 01565 USM(TTM_GETTOOLCOUNT ,0), 01566 USM(TTM_ENUMTOOLSA ,0), 01567 USM(TTM_GETCURRENTTOOLA ,0), 01568 USM(TTM_WINDOWFROMPOINT ,0), 01569 USM(TTM_TRACKACTIVATE ,0), 01570 USM(TTM_TRACKPOSITION ,0), 01571 USM(TTM_SETTIPBKCOLOR ,0), 01572 USM(TTM_SETTIPTEXTCOLOR ,0), 01573 USM(TTM_GETDELAYTIME ,0), 01574 USM(TTM_GETTIPBKCOLOR ,0), 01575 USM(TTM_GETTIPTEXTCOLOR ,0), 01576 USM(TTM_SETMAXTIPWIDTH ,0), 01577 USM(TTM_GETMAXTIPWIDTH ,0), 01578 USM(TTM_SETMARGIN ,0), 01579 USM(TTM_GETMARGIN ,0), 01580 USM(TTM_POP ,0), 01581 USM(TTM_UPDATE ,0), 01582 USM(TTM_GETBUBBLESIZE ,0), 01583 USM(TTM_ADDTOOLW ,0), 01584 USM(TTM_DELTOOLW ,0), 01585 USM(TTM_NEWTOOLRECTW ,0), 01586 USM(TTM_GETTOOLINFOW ,0), 01587 USM(TTM_SETTOOLINFOW ,0), 01588 USM(TTM_HITTESTW ,0), 01589 USM(TTM_GETTEXTW ,0), 01590 USM(TTM_UPDATETIPTEXTW ,0), 01591 USM(TTM_ENUMTOOLSW ,0), 01592 USM(TTM_GETCURRENTTOOLW ,0), 01593 {0,0,0} }; 01594 01595 static const USER_MSG comboex_array[] = { 01596 USM(CBEM_INSERTITEMA ,0), 01597 USM(CBEM_SETIMAGELIST ,0), 01598 USM(CBEM_GETIMAGELIST ,0), 01599 USM(CBEM_GETITEMA ,0), 01600 USM(CBEM_SETITEMA ,0), 01601 USM(CBEM_GETCOMBOCONTROL ,0), 01602 USM(CBEM_GETEDITCONTROL ,0), 01603 USM(CBEM_SETEXSTYLE ,0), 01604 USM(CBEM_GETEXTENDEDSTYLE ,0), 01605 USM(CBEM_HASEDITCHANGED ,0), 01606 USM(CBEM_INSERTITEMW ,0), 01607 USM(CBEM_SETITEMW ,0), 01608 USM(CBEM_GETITEMW ,0), 01609 USM(CBEM_SETEXTENDEDSTYLE ,0), 01610 {0,0,0} }; 01611 01612 static const USER_MSG propsht_array[] = { 01613 USM(PSM_SETCURSEL ,0), 01614 USM(PSM_REMOVEPAGE ,0), 01615 USM(PSM_ADDPAGE ,0), 01616 USM(PSM_CHANGED ,0), 01617 USM(PSM_RESTARTWINDOWS ,0), 01618 USM(PSM_REBOOTSYSTEM ,0), 01619 USM(PSM_CANCELTOCLOSE ,0), 01620 USM(PSM_QUERYSIBLINGS ,0), 01621 USM(PSM_UNCHANGED ,0), 01622 USM(PSM_APPLY ,0), 01623 USM(PSM_SETTITLEA ,0), 01624 USM(PSM_SETWIZBUTTONS ,0), 01625 USM(PSM_PRESSBUTTON ,0), 01626 USM(PSM_SETCURSELID ,0), 01627 USM(PSM_SETFINISHTEXTA ,0), 01628 USM(PSM_GETTABCONTROL ,0), 01629 USM(PSM_ISDIALOGMESSAGE ,0), 01630 USM(PSM_GETCURRENTPAGEHWND ,0), 01631 USM(PSM_SETTITLEW ,0), 01632 USM(PSM_SETFINISHTEXTW ,0), 01633 {0,0,0} }; 01634 const WCHAR PropSheetInfoStr[] = 01635 {'P','r','o','p','e','r','t','y','S','h','e','e','t','I','n','f','o',0 }; 01636 01637 static const USER_MSG updown_array[] = { 01638 USM(UDM_SETRANGE ,0), 01639 USM(UDM_GETRANGE ,0), 01640 USM(UDM_SETPOS ,0), 01641 USM(UDM_GETPOS ,0), 01642 USM(UDM_SETBUDDY ,0), 01643 USM(UDM_GETBUDDY ,0), 01644 USM(UDM_SETACCEL ,0), 01645 USM(UDM_GETACCEL ,0), 01646 USM(UDM_SETBASE ,0), 01647 USM(UDM_GETBASE ,0), 01648 USM(UDM_SETRANGE32 ,0), 01649 USM(UDM_GETRANGE32 ,0), 01650 USM(UDM_SETPOS32 ,0), 01651 USM(UDM_GETPOS32 ,0), 01652 {0,0,0} }; 01653 01654 /* generated from: 01655 * $ for i in `grep EM_ include/richedit.h | cut -d' ' -f2 | cut -f1`; do echo -e " USM($i\t\t,0),"; done 01656 */ 01657 static const USER_MSG richedit_array[] = { 01658 {"EM_SCROLLCARET", WM_USER+49 ,0}, 01659 USM(EM_CANPASTE ,0), 01660 USM(EM_DISPLAYBAND ,0), 01661 USM(EM_EXGETSEL ,0), 01662 USM(EM_EXLIMITTEXT ,0), 01663 USM(EM_EXLINEFROMCHAR ,0), 01664 USM(EM_EXSETSEL ,0), 01665 USM(EM_FINDTEXT ,0), 01666 USM(EM_FORMATRANGE ,0), 01667 USM(EM_GETCHARFORMAT ,0), 01668 USM(EM_GETEVENTMASK ,0), 01669 USM(EM_GETOLEINTERFACE ,0), 01670 USM(EM_GETPARAFORMAT ,0), 01671 USM(EM_GETSELTEXT ,0), 01672 USM(EM_HIDESELECTION ,0), 01673 USM(EM_PASTESPECIAL ,0), 01674 USM(EM_REQUESTRESIZE ,0), 01675 USM(EM_SELECTIONTYPE ,0), 01676 USM(EM_SETBKGNDCOLOR ,0), 01677 USM(EM_SETCHARFORMAT ,0), 01678 USM(EM_SETEVENTMASK ,0), 01679 USM(EM_SETOLECALLBACK ,0), 01680 USM(EM_SETPARAFORMAT ,0), 01681 USM(EM_SETTARGETDEVICE ,0), 01682 USM(EM_STREAMIN ,0), 01683 USM(EM_STREAMOUT ,0), 01684 USM(EM_GETTEXTRANGE ,0), 01685 USM(EM_FINDWORDBREAK ,0), 01686 USM(EM_SETOPTIONS ,0), 01687 USM(EM_GETOPTIONS ,0), 01688 USM(EM_FINDTEXTEX ,0), 01689 USM(EM_GETWORDBREAKPROCEX ,0), 01690 USM(EM_SETWORDBREAKPROCEX ,0), 01691 USM(EM_SETUNDOLIMIT ,0), 01692 USM(EM_REDO ,0), 01693 USM(EM_CANREDO ,0), 01694 USM(EM_GETUNDONAME ,0), 01695 USM(EM_GETREDONAME ,0), 01696 USM(EM_STOPGROUPTYPING ,0), 01697 USM(EM_SETTEXTMODE ,0), 01698 USM(EM_GETTEXTMODE ,0), 01699 USM(EM_AUTOURLDETECT ,0), 01700 USM(EM_GETAUTOURLDETECT ,0), 01701 USM(EM_SETPALETTE ,0), 01702 USM(EM_GETTEXTEX ,0), 01703 USM(EM_GETTEXTLENGTHEX ,0), 01704 USM(EM_SHOWSCROLLBAR ,0), 01705 USM(EM_SETTEXTEX ,0), 01706 USM(EM_SETPUNCTUATION ,0), 01707 USM(EM_GETPUNCTUATION ,0), 01708 USM(EM_SETWORDWRAPMODE ,0), 01709 USM(EM_GETWORDWRAPMODE ,0), 01710 USM(EM_SETIMECOLOR ,0), 01711 USM(EM_GETIMECOLOR ,0), 01712 USM(EM_SETIMEOPTIONS ,0), 01713 USM(EM_GETIMEOPTIONS ,0), 01714 USM(EM_CONVPOSITION ,0), 01715 USM(EM_SETLANGOPTIONS ,0), 01716 USM(EM_GETLANGOPTIONS ,0), 01717 USM(EM_GETIMECOMPMODE ,0), 01718 USM(EM_FINDTEXTW ,0), 01719 USM(EM_FINDTEXTEXW ,0), 01720 USM(EM_RECONVERSION ,0), 01721 USM(EM_SETIMEMODEBIAS ,0), 01722 USM(EM_GETIMEMODEBIAS ,0), 01723 USM(EM_SETBIDIOPTIONS ,0), 01724 USM(EM_GETBIDIOPTIONS ,0), 01725 USM(EM_SETTYPOGRAPHYOPTIONS ,0), 01726 USM(EM_GETTYPOGRAPHYOPTIONS ,0), 01727 USM(EM_SETEDITSTYLE ,0), 01728 USM(EM_GETEDITSTYLE ,0), 01729 USM(EM_OUTLINE ,0), 01730 USM(EM_GETSCROLLPOS ,0), 01731 USM(EM_SETSCROLLPOS ,0), 01732 USM(EM_SETFONTSIZE ,0), 01733 USM(EM_GETZOOM ,0), 01734 USM(EM_SETZOOM ,0), 01735 {0,0,0} }; 01736 01737 #undef SZOF 01738 #undef USM 01739 01740 static CONTROL_CLASS cc_array[] = { 01741 {WC_COMBOBOXEXW, comboex_array, 0}, 01742 {WC_PROPSHEETW, propsht_array, 0}, 01743 {REBARCLASSNAMEW, rebar_array, 0}, 01744 {TOOLBARCLASSNAMEW, toolbar_array, 0}, 01745 {TOOLTIPS_CLASSW, tooltips_array, 0}, 01746 {UPDOWN_CLASSW, updown_array, 0}, 01747 {RICHEDIT_CLASS20W, richedit_array, 0}, 01748 {0, 0, 0} }; 01749 01750 01751 /************************************************************************/ 01752 01753 01754 /* WM_NOTIFY function codes display */ 01755 01756 typedef struct 01757 { 01758 const char *name; /* name of notify message */ 01759 UINT value; /* notify code value */ 01760 UINT len; /* length of extra space to dump */ 01761 } SPY_NOTIFY; 01762 01763 #define SPNFY(a,b) { #a ,a,sizeof(b)-sizeof(NMHDR)} 01764 01765 /* Array MUST be in descending order by the 'value' field */ 01766 /* (since value is UNSIGNED, 0xffffffff is largest and */ 01767 /* 0xfffffffe is smaller). A binary search is used to */ 01768 /* locate the correct 'value'. */ 01769 static const SPY_NOTIFY spnfy_array[] = { 01770 /* common 0U to 0U-99U */ 01771 SPNFY(NM_OUTOFMEMORY, NMHDR), 01772 SPNFY(NM_CLICK, NMHDR), 01773 SPNFY(NM_DBLCLK, NMHDR), 01774 SPNFY(NM_RETURN, NMHDR), 01775 SPNFY(NM_RCLICK, NMHDR), 01776 SPNFY(NM_RDBLCLK, NMHDR), 01777 SPNFY(NM_SETFOCUS, NMHDR), 01778 SPNFY(NM_KILLFOCUS, NMHDR), 01779 SPNFY(NM_CUSTOMDRAW, NMCUSTOMDRAW), 01780 SPNFY(NM_HOVER, NMHDR), 01781 SPNFY(NM_NCHITTEST, NMMOUSE), 01782 SPNFY(NM_KEYDOWN, NMKEY), 01783 SPNFY(NM_RELEASEDCAPTURE, NMHDR), 01784 SPNFY(NM_SETCURSOR, NMMOUSE), 01785 SPNFY(NM_CHAR, NMCHAR), 01786 SPNFY(NM_TOOLTIPSCREATED, NMTOOLTIPSCREATED), 01787 /* Listview 0U-100U to 0U-199U */ 01788 SPNFY(LVN_ITEMCHANGING, NMLISTVIEW), 01789 SPNFY(LVN_ITEMCHANGED, NMLISTVIEW), 01790 SPNFY(LVN_INSERTITEM, NMLISTVIEW), 01791 SPNFY(LVN_DELETEITEM, NMLISTVIEW), 01792 SPNFY(LVN_DELETEALLITEMS, NMLISTVIEW), 01793 SPNFY(LVN_BEGINLABELEDITA, NMLVDISPINFOA), 01794 SPNFY(LVN_ENDLABELEDITA, NMLVDISPINFOA), 01795 SPNFY(LVN_COLUMNCLICK, NMLISTVIEW), 01796 SPNFY(LVN_BEGINDRAG, NMLISTVIEW), 01797 SPNFY(LVN_BEGINRDRAG, NMLISTVIEW), 01798 SPNFY(LVN_ODCACHEHINT, NMLVCACHEHINT), 01799 SPNFY(LVN_ITEMACTIVATE, NMITEMACTIVATE), 01800 SPNFY(LVN_ODSTATECHANGED, NMLVODSTATECHANGE), 01801 SPNFY(LVN_HOTTRACK, NMLISTVIEW), 01802 SPNFY(LVN_GETDISPINFOA, NMLVDISPINFOA), 01803 SPNFY(LVN_SETDISPINFOA, NMLVDISPINFOA), 01804 SPNFY(LVN_ODFINDITEMA, NMLVFINDITEMA), 01805 SPNFY(LVN_KEYDOWN, NMLVKEYDOWN), 01806 SPNFY(LVN_MARQUEEBEGIN, NMLISTVIEW), 01807 SPNFY(LVN_GETINFOTIPA, NMLVGETINFOTIPA), 01808 SPNFY(LVN_GETINFOTIPW, NMLVGETINFOTIPW), 01809 SPNFY(LVN_BEGINLABELEDITW, NMLVDISPINFOW), 01810 SPNFY(LVN_ENDLABELEDITW, NMLVDISPINFOW), 01811 SPNFY(LVN_GETDISPINFOW, NMLVDISPINFOW), 01812 SPNFY(LVN_SETDISPINFOW, NMLVDISPINFOW), 01813 SPNFY(LVN_ODFINDITEMW, NMLVFINDITEMW), 01814 /* PropertySheet 0U-200U to 0U-299U */ 01815 SPNFY(PSN_SETACTIVE, PSHNOTIFY), 01816 SPNFY(PSN_KILLACTIVE, PSHNOTIFY), 01817 SPNFY(PSN_APPLY, PSHNOTIFY), 01818 SPNFY(PSN_RESET, PSHNOTIFY), 01819 SPNFY(PSN_HELP, PSHNOTIFY), 01820 SPNFY(PSN_WIZBACK, PSHNOTIFY), 01821 SPNFY(PSN_WIZNEXT, PSHNOTIFY), 01822 SPNFY(PSN_WIZFINISH, PSHNOTIFY), 01823 SPNFY(PSN_QUERYCANCEL, PSHNOTIFY), 01824 SPNFY(PSN_GETOBJECT, NMOBJECTNOTIFY), 01825 SPNFY(PSN_TRANSLATEACCELERATOR, PSHNOTIFY), 01826 SPNFY(PSN_QUERYINITIALFOCUS, PSHNOTIFY), 01827 /* Header 0U-300U to 0U-399U */ 01828 SPNFY(HDN_ITEMCHANGINGA, NMHEADERA), 01829 SPNFY(HDN_ITEMCHANGEDA, NMHEADERA), 01830 SPNFY(HDN_ITEMCLICKA, NMHEADERA), 01831 SPNFY(HDN_ITEMDBLCLICKA, NMHEADERA), 01832 SPNFY(HDN_DIVIDERDBLCLICKA, NMHEADERA), 01833 SPNFY(HDN_BEGINTRACKA, NMHEADERA), 01834 SPNFY(HDN_ENDTRACKA, NMHEADERA), 01835 SPNFY(HDN_TRACKA, NMHEADERA), 01836 SPNFY(HDN_GETDISPINFOA, NMHEADERA), 01837 SPNFY(HDN_BEGINDRAG, NMHDR), 01838 SPNFY(HDN_ENDDRAG, NMHDR), 01839 SPNFY(HDN_ITEMCHANGINGW, NMHDR), 01840 SPNFY(HDN_ITEMCHANGEDW, NMHDR), 01841 SPNFY(HDN_ITEMCLICKW, NMHDR), 01842 SPNFY(HDN_ITEMDBLCLICKW, NMHDR), 01843 SPNFY(HDN_DIVIDERDBLCLICKW, NMHDR), 01844 SPNFY(HDN_BEGINTRACKW, NMHDR), 01845 SPNFY(HDN_ENDTRACKW, NMHDR), 01846 SPNFY(HDN_TRACKW, NMHDR), 01847 SPNFY(HDN_GETDISPINFOW, NMHDR), 01848 /* Treeview 0U-400U to 0U-499U */ 01849 SPNFY(TVN_SELCHANGINGA, NMTREEVIEWA), 01850 SPNFY(TVN_SELCHANGEDA, NMTREEVIEWA), 01851 SPNFY(TVN_GETDISPINFOA, NMTVDISPINFOA), 01852 SPNFY(TVN_SETDISPINFOA, NMTVDISPINFOA), 01853 SPNFY(TVN_ITEMEXPANDINGA, NMTREEVIEWA), 01854 SPNFY(TVN_ITEMEXPANDEDA, NMTREEVIEWA), 01855 SPNFY(TVN_BEGINDRAGA, NMTREEVIEWA), 01856 SPNFY(TVN_BEGINRDRAGA, NMTREEVIEWA), 01857 SPNFY(TVN_DELETEITEMA, NMTREEVIEWA), 01858 SPNFY(TVN_BEGINLABELEDITA, NMTVDISPINFOA), 01859 SPNFY(TVN_ENDLABELEDITA, NMTVDISPINFOA), 01860 SPNFY(TVN_KEYDOWN, NMTVKEYDOWN), 01861 SPNFY(TVN_SELCHANGINGW, NMTREEVIEWW), 01862 SPNFY(TVN_SELCHANGEDW, NMTREEVIEWW), 01863 SPNFY(TVN_GETDISPINFOW, NMTVDISPINFOW), 01864 SPNFY(TVN_SETDISPINFOW, NMTVDISPINFOW), 01865 SPNFY(TVN_ITEMEXPANDINGW, NMTREEVIEWW), 01866 SPNFY(TVN_ITEMEXPANDEDW, NMTREEVIEWW), 01867 SPNFY(TVN_BEGINDRAGW, NMTREEVIEWW), 01868 SPNFY(TVN_BEGINRDRAGW, NMTREEVIEWW), 01869 SPNFY(TVN_DELETEITEMW, NMTREEVIEWW), 01870 SPNFY(TVN_BEGINLABELEDITW, NMTVDISPINFOW), 01871 SPNFY(TVN_ENDLABELEDITW, NMTVDISPINFOW), 01872 /* Tooltips 0U-520U to 0U-549U */ 01873 SPNFY(TTN_GETDISPINFOA, NMHDR), 01874 SPNFY(TTN_SHOW, NMHDR), 01875 SPNFY(TTN_POP, NMHDR), 01876 SPNFY(TTN_GETDISPINFOW, NMHDR), 01877 /* Tab 0U-550U to 0U-580U */ 01878 SPNFY(TCN_KEYDOWN, NMHDR), 01879 SPNFY(TCN_SELCHANGE, NMHDR), 01880 SPNFY(TCN_SELCHANGING, NMHDR), 01881 SPNFY(TCN_GETOBJECT, NMHDR), 01882 /* Common Dialog 0U-601U to 0U-699U */ 01883 SPNFY(CDN_INITDONE, OFNOTIFYA), 01884 SPNFY(CDN_SELCHANGE, OFNOTIFYA), 01885 SPNFY(CDN_FOLDERCHANGE, OFNOTIFYA), 01886 SPNFY(CDN_SHAREVIOLATION, OFNOTIFYA), 01887 SPNFY(CDN_HELP, OFNOTIFYA), 01888 SPNFY(CDN_FILEOK, OFNOTIFYA), 01889 SPNFY(CDN_TYPECHANGE, OFNOTIFYA), 01890 /* Toolbar 0U-700U to 0U-720U */ 01891 SPNFY(TBN_GETBUTTONINFOA, NMTOOLBARA), 01892 SPNFY(TBN_BEGINDRAG, NMTOOLBARA), 01893 SPNFY(TBN_ENDDRAG, NMTOOLBARA), 01894 SPNFY(TBN_BEGINADJUST, NMHDR), 01895 SPNFY(TBN_ENDADJUST, NMHDR), 01896 SPNFY(TBN_RESET, NMHDR), 01897 SPNFY(TBN_QUERYINSERT, NMTOOLBARA), 01898 SPNFY(TBN_QUERYDELETE, NMTOOLBARA), 01899 SPNFY(TBN_TOOLBARCHANGE, NMHDR), 01900 SPNFY(TBN_CUSTHELP, NMHDR), 01901 SPNFY(TBN_DROPDOWN, NMTOOLBARA), 01902 SPNFY(TBN_GETOBJECT, NMOBJECTNOTIFY), 01903 SPNFY(TBN_HOTITEMCHANGE, NMTBHOTITEM), 01904 SPNFY(TBN_DRAGOUT, NMTOOLBARA), 01905 SPNFY(TBN_DELETINGBUTTON, NMTOOLBARA), 01906 SPNFY(TBN_GETDISPINFOA, NMTBDISPINFOA), 01907 SPNFY(TBN_GETDISPINFOW, NMTBDISPINFOW), 01908 SPNFY(TBN_GETINFOTIPA, NMTBGETINFOTIPA), 01909 SPNFY(TBN_GETINFOTIPW, NMTBGETINFOTIPW), 01910 SPNFY(TBN_GETBUTTONINFOW, NMTOOLBARW), 01911 /* Up/Down 0U-721U to 0U-740U */ 01912 SPNFY(UDN_DELTAPOS, NM_UPDOWN), 01913 /* Month Calendar 0U-750U to 0U-759U */ 01914 /* ******************* WARNING ***************************** */ 01915 /* The following appear backwards but needs to be this way. */ 01916 /* The reason is that MS (and us) define the MCNs as */ 01917 /* MCN_FIRST + n */ 01918 /* instead of the way ALL other notifications are */ 01919 /* TBN_FIRST - n */ 01920 /* The only place that this is important is in this list */ 01921 /* */ 01922 /* Also since the same error was made with the DTN_ items, */ 01923 /* they overlay the MCN_ and need to be inserted in the */ 01924 /* other section of the table so that it is in order for */ 01925 /* the binary search. */ 01926 /* */ 01927 /* Thank you MS for your obvious quality control!! */ 01928 /* ******************* WARNING ***************************** */ 01929 /* Date/Time 0U-760U to 0U-799U */ 01930 /* SPNFY(MCN_SELECT, NMHDR), */ 01931 /* SPNFY(MCN_GETDAYSTATE, NMHDR), */ 01932 /* SPNFY(MCN_SELCHANGE, NMHDR), */ 01933 /* ******************* WARNING ***************************** */ 01934 /* The following appear backwards but needs to be this way. */ 01935 /* The reason is that MS (and us) define the MCNs as */ 01936 /* DTN_FIRST + n */ 01937 /* instead of the way ALL other notifications are */ 01938 /* TBN_FIRST - n */ 01939 /* The only place that this is important is in this list */ 01940 /* ******************* WARNING ***************************** */ 01941 SPNFY(DTN_FORMATQUERYW, NMHDR), 01942 SPNFY(DTN_FORMATW, NMHDR), 01943 SPNFY(DTN_WMKEYDOWNW, NMHDR), 01944 SPNFY(DTN_USERSTRINGW, NMHDR), 01945 SPNFY(MCN_SELECT, NMHDR), 01946 SPNFY(MCN_GETDAYSTATE, NMHDR), 01947 SPNFY(MCN_SELCHANGE, NMHDR), 01948 SPNFY(DTN_CLOSEUP, NMHDR), 01949 SPNFY(DTN_DROPDOWN, NMHDR), 01950 SPNFY(DTN_FORMATQUERYA, NMHDR), 01951 SPNFY(DTN_FORMATA, NMHDR), 01952 SPNFY(DTN_WMKEYDOWNA, NMHDR), 01953 SPNFY(DTN_USERSTRINGA, NMHDR), 01954 SPNFY(DTN_DATETIMECHANGE, NMHDR), 01955 /* ComboBoxEx 0U-800U to 0U-830U */ 01956 SPNFY(CBEN_GETDISPINFOA, NMCOMBOBOXEXA), 01957 SPNFY(CBEN_INSERTITEM, NMCOMBOBOXEXA), 01958 SPNFY(CBEN_DELETEITEM, NMCOMBOBOXEXA), 01959 SPNFY(CBEN_BEGINEDIT, NMHDR), 01960 SPNFY(CBEN_ENDEDITA, NMCBEENDEDITA), 01961 SPNFY(CBEN_ENDEDITW, NMCBEENDEDITW), 01962 SPNFY(CBEN_GETDISPINFOW, NMCOMBOBOXEXW), 01963 SPNFY(CBEN_DRAGBEGINA, NMCBEDRAGBEGINA), 01964 SPNFY(CBEN_DRAGBEGINW, NMCBEDRAGBEGINW), 01965 /* Rebar 0U-831U to 0U-859U */ 01966 SPNFY(RBN_HEIGHTCHANGE, NMHDR), 01967 SPNFY(RBN_GETOBJECT, NMOBJECTNOTIFY), 01968 SPNFY(RBN_LAYOUTCHANGED, NMHDR), 01969 SPNFY(RBN_AUTOSIZE, NMRBAUTOSIZE), 01970 SPNFY(RBN_BEGINDRAG, NMREBAR), 01971 SPNFY(RBN_ENDDRAG, NMREBAR), 01972 SPNFY(RBN_DELETINGBAND, NMREBAR), 01973 SPNFY(RBN_DELETEDBAND, NMREBAR), 01974 SPNFY(RBN_CHILDSIZE, NMREBARCHILDSIZE), 01975 /* IP Adderss 0U-860U to 0U-879U */ 01976 SPNFY(IPN_FIELDCHANGED, NMHDR), 01977 /* Status bar 0U-880U to 0U-899U */ 01978 SPNFY(SBN_SIMPLEMODECHANGE, NMHDR), 01979 /* Pager 0U-900U to 0U-950U */ 01980 SPNFY(PGN_SCROLL, NMPGSCROLL), 01981 SPNFY(PGN_CALCSIZE, NMPGCALCSIZE), 01982 {0,0,0}}; 01983 static const SPY_NOTIFY *end_spnfy_array; /* ptr to last good entry in array */ 01984 #undef SPNFY 01985 01986 static BOOL SPY_Exclude[SPY_MAX_MSGNUM+1]; 01987 static BOOL SPY_ExcludeDWP = 0; 01988 01989 #define SPY_EXCLUDE(msg) \ 01990 (SPY_Exclude[(msg) > SPY_MAX_MSGNUM ? SPY_MAX_MSGNUM : (msg)]) 01991 01992 01993 typedef struct 01994 { 01995 UINT msgnum; /* message number */ 01996 HWND msg_hwnd; /* window handle for message */ 01997 WPARAM wParam; /* message parameter */ 01998 LPARAM lParam; /* message parameter */ 01999 INT data_len; /* length of data to dump */ 02000 char msg_name[60]; /* message name (see SPY_GetMsgName) */ 02001 WCHAR wnd_class[60]; /* window class name (full) */ 02002 WCHAR wnd_name[16]; /* window name for message */ 02003 } SPY_INSTANCE; 02004 02005 static int indent_tls_index; 02006 02007 /*********************************************************************** 02008 * get_indent_level 02009 */ 02010 __inline static INT_PTR get_indent_level(void) 02011 { 02012 return (INT_PTR)TlsGetValue( indent_tls_index ); 02013 } 02014 02015 02016 /*********************************************************************** 02017 * set_indent_level 02018 */ 02019 __inline static void set_indent_level( INT_PTR level ) 02020 { 02021 TlsSetValue( indent_tls_index, (void *)level ); 02022 } 02023 02024 02025 /*********************************************************************** 02026 * SPY_GetMsgInternal 02027 */ 02028 static const char *SPY_GetMsgInternal( UINT msg ) 02029 { 02030 if (msg <= SPY_MAX_MSGNUM) 02031 return MessageTypeNames[msg]; 02032 02033 if (msg >= LVM_FIRST && msg <= LVM_FIRST + SPY_MAX_LVMMSGNUM) 02034 return LVMMessageTypeNames[msg-LVM_FIRST]; 02035 02036 if (msg >= TV_FIRST && msg <= TV_FIRST + SPY_MAX_TVMSGNUM) 02037 return TVMessageTypeNames[msg-TV_FIRST]; 02038 02039 if (msg >= HDM_FIRST && msg <= HDM_FIRST + SPY_MAX_HDMMSGNUM) 02040 return HDMMessageTypeNames[msg-HDM_FIRST]; 02041 02042 if (msg >= TCM_FIRST && msg <= TCM_FIRST + SPY_MAX_TCMMSGNUM) 02043 return TCMMessageTypeNames[msg-TCM_FIRST]; 02044 02045 if (msg >= PGM_FIRST && msg <= PGM_FIRST + SPY_MAX_PGMMSGNUM) 02046 return PGMMessageTypeNames[msg-PGM_FIRST]; 02047 02048 if (msg >= CCM_FIRST && msg <= CCM_FIRST + SPY_MAX_CCMMSGNUM) 02049 return CCMMessageTypeNames[msg-CCM_FIRST]; 02050 #ifndef __REACTOS__ 02051 if (msg >= WM_WINE_DESTROYWINDOW && msg <= WM_WINE_DESTROYWINDOW + SPY_MAX_WINEMSGNUM) 02052 return WINEMessageTypeNames[msg-WM_WINE_DESTROYWINDOW]; 02053 #endif 02054 return NULL; 02055 } 02056 02057 /*********************************************************************** 02058 * SPY_Bsearch_Msg 02059 */ 02060 static const USER_MSG *SPY_Bsearch_Msg( const USER_MSG *first, const USER_MSG *last, UINT code) 02061 { 02062 INT count; 02063 const USER_MSG *test; 02064 02065 while (last >= first) { 02066 count = 1 + last - first; 02067 if (count < 3) { 02068 #if DEBUG_SPY 02069 TRACE("code=%d, f-value=%d, f-name=%s, l-value=%d, l-name=%s, l-len=%d,\n", 02070 code, first->value, first->name, last->value, last->name, last->len); 02071 #endif 02072 if (first->value == code) return first; 02073 if (last->value == code) return last; 02074 return NULL; 02075 } 02076 count = count / 2; 02077 test = first + count; 02078 #if DEBUG_SPY 02079 TRACE("first=%p, last=%p, test=%p, t-value=%d, code=%d, count=%d\n", 02080 first, last, test, test->value, code, count); 02081 #endif 02082 if (test->value == code) return test; 02083 if (test->value > code) 02084 last = test - 1; 02085 else 02086 first = test + 1; 02087 } 02088 return NULL; 02089 } 02090 02091 /*********************************************************************** 02092 * SPY_GetClassLongOffsetName 02093 * 02094 * Gets the name of a class long offset. 02095 */ 02096 const char *SPY_GetClassLongOffsetName( INT offset ) 02097 { 02098 INT index; 02099 if (offset < 0 && offset % 2 == 0 && ((index = -(offset + 8) / 2) < 02100 sizeof(ClassLongOffsetNames) / sizeof(*ClassLongOffsetNames))) 02101 { 02102 return ClassLongOffsetNames[index]; 02103 } 02104 02105 return "?"; 02106 } 02107 02108 /*********************************************************************** 02109 * SPY_GetClassName 02110 * 02111 * Sets the value of "wnd_class" member of the instance structure. 02112 */ 02113 static void SPY_GetClassName( SPY_INSTANCE *sp_e ) 02114 { 02115 DWORD save_error; 02116 02117 /* save and restore error code over the next call */ 02118 save_error = GetLastError(); 02119 /* special code to detect a property sheet dialog */ 02120 if ((GetClassLongPtrW(sp_e->msg_hwnd, GCW_ATOM) == (ULONG_PTR)WC_DIALOG) && 02121 (GetPropW(sp_e->msg_hwnd, PropSheetInfoStr))) { 02122 strcpyW(sp_e->wnd_class, WC_PROPSHEETW); 02123 } 02124 else { 02125 GetClassNameW(sp_e->msg_hwnd, sp_e->wnd_class, sizeof(sp_e->wnd_class)/sizeof(WCHAR)); 02126 } 02127 SetLastError(save_error); 02128 } 02129 02130 /*********************************************************************** 02131 * SPY_GetMsgStuff 02132 * 02133 * Get message name and other information for dumping 02134 */ 02135 static void SPY_GetMsgStuff( SPY_INSTANCE *sp_e ) 02136 { 02137 const USER_MSG *p; 02138 const char *msg_name = SPY_GetMsgInternal( sp_e->msgnum ); 02139 02140 sp_e->data_len = 0; 02141 if (!msg_name) 02142 { 02143 INT i = 0; 02144 02145 if (sp_e->msgnum >= 0xc000) 02146 { 02147 if (GlobalGetAtomNameA( sp_e->msgnum, sp_e->msg_name+1, sizeof(sp_e->msg_name)-2 )) 02148 { 02149 sp_e->msg_name[0] = '\"'; 02150 strcat( sp_e->msg_name, "\"" ); 02151 return; 02152 } 02153 } 02154 if (!sp_e->wnd_class[0]) SPY_GetClassName(sp_e); 02155 02156 #if DEBUG_SPY 02157 TRACE("looking class %s\n", debugstr_w(sp_e->wnd_class)); 02158 #endif 02159 02160 while (cc_array[i].classname && 02161 strcmpiW(cc_array[i].classname, sp_e->wnd_class) != 0) i++; 02162 02163 if (cc_array[i].classname) 02164 { 02165 #if DEBUG_SPY 02166 TRACE("process class %s, first %p, last %p\n", 02167 debugstr_w(cc_array[i].classname), cc_array[i].classmsg, 02168 cc_array[i].lastmsg); 02169 #endif 02170 p = SPY_Bsearch_Msg (cc_array[i].classmsg, cc_array[i].lastmsg, 02171 sp_e->msgnum); 02172 if (p) { 02173 lstrcpynA (sp_e->msg_name, p->name, sizeof(sp_e->msg_name)); 02174 sp_e->data_len = p->len; 02175 return; 02176 } 02177 } 02178 if (sp_e->msgnum >= WM_USER && sp_e->msgnum <= WM_APP) 02179 sprintf( sp_e->msg_name, "WM_USER+%d", sp_e->msgnum - WM_USER ); 02180 else 02181 sprintf( sp_e->msg_name, "%04x", sp_e->msgnum ); 02182 } 02183 else 02184 { 02185 lstrcpynA(sp_e->msg_name, msg_name, sizeof(sp_e->msg_name)); 02186 } 02187 } 02188 02189 /*********************************************************************** 02190 * SPY_GetWndName 02191 * 02192 * Sets the value of "wnd_name" and "wnd_class" members of the 02193 * instance structure. 02194 * 02195 */ 02196 static void SPY_GetWndName( SPY_INSTANCE *sp_e ) 02197 { 02198 INT len; 02199 02200 SPY_GetClassName( sp_e ); 02201 02202 len = InternalGetWindowText(sp_e->msg_hwnd, sp_e->wnd_name, sizeof(sp_e->wnd_name)/sizeof(WCHAR)); 02203 if(!len) /* get class name */ 02204 { 02205 LPWSTR dst = sp_e->wnd_name; 02206 LPWSTR src = sp_e->wnd_class; 02207 int n = sizeof(sp_e->wnd_name)/sizeof(WCHAR) - 3; 02208 *dst++ = '{'; 02209 while ((n-- > 0) && *src) *dst++ = *src++; 02210 *dst++ = '}'; 02211 *dst = 0; 02212 } 02213 } 02214 02215 /*********************************************************************** 02216 * SPY_GetMsgName 02217 * 02218 * **** External function **** 02219 * 02220 * Get message name 02221 */ 02222 const char *SPY_GetMsgName( UINT msg, HWND hWnd ) 02223 { 02224 SPY_INSTANCE ext_sp_e; 02225 02226 ext_sp_e.msgnum = msg; 02227 ext_sp_e.msg_hwnd = hWnd; 02228 ext_sp_e.lParam = 0; 02229 ext_sp_e.wParam = 0; 02230 ext_sp_e.wnd_class[0] = 0; 02231 SPY_GetMsgStuff(&ext_sp_e); 02232 return wine_dbg_sprintf("%s", ext_sp_e.msg_name); 02233 } 02234 02235 /*********************************************************************** 02236 * SPY_GetVKeyName 02237 */ 02238 const char *SPY_GetVKeyName(WPARAM wParam) 02239 { 02240 const char *vk_key_name; 02241 02242 if(wParam <= SPY_MAX_VKKEYSNUM && VK_KeyNames[wParam]) 02243 vk_key_name = VK_KeyNames[wParam]; 02244 else 02245 vk_key_name = "VK_???"; 02246 02247 return vk_key_name; 02248 } 02249 02250 /*********************************************************************** 02251 * SPY_Bsearch_Notify 02252 */ 02253 static const SPY_NOTIFY *SPY_Bsearch_Notify( const SPY_NOTIFY *first, const SPY_NOTIFY *last, UINT code) 02254 { 02255 INT count; 02256 const SPY_NOTIFY *test; 02257 02258 while (last >= first) { 02259 count = 1 + last - first; 02260 if (count < 3) { 02261 #if DEBUG_SPY 02262 TRACE("code=%d, f-value=%d, f-name=%s, l-value=%d, l-name=%s, l-len=%d,\n", 02263 code, first->value, first->name, last->value, last->name, last->len); 02264 #endif 02265 if (first->value == code) return first; 02266 if (last->value == code) return last; 02267 return NULL; 02268 } 02269 count = count / 2; 02270 test = first + count; 02271 #if DEBUG_SPY 02272 TRACE("first=%p, last=%p, test=%p, t-value=%d, code=%d, count=%d\n", 02273 first, last, test, test->value, code, count); 02274 #endif 02275 if (test->value == code) return test; 02276 if (test->value < code) 02277 last = test - 1; 02278 else 02279 first = test + 1; 02280 } 02281 return NULL; 02282 } 02283 02284 /*********************************************************************** 02285 * SPY_DumpMem 02286 */ 02287 static void SPY_DumpMem (LPCSTR header, const UINT *q, INT len) 02288 { 02289 int i; 02290 02291 for(i=0; i<len-12; i+=16) { 02292 TRACE("%s [%04x] %08x %08x %08x %08x\n", 02293 header, i, *q, *(q+1), *(q+2), *(q+3)); 02294 q += 4; 02295 } 02296 switch ((len - i + 3) & (~3)) { 02297 case 16: 02298 TRACE("%s [%04x] %08x %08x %08x %08x\n", 02299 header, i, *q, *(q+1), *(q+2), *(q+3)); 02300 break; 02301 case 12: 02302 TRACE("%s [%04x] %08x %08x %08x\n", 02303 header, i, *q, *(q+1), *(q+2)); 02304 break; 02305 case 8: 02306 TRACE("%s [%04x] %08x %08x\n", 02307 header, i, *q, *(q+1)); 02308 break; 02309 case 4: 02310 TRACE("%s [%04x] %08x\n", 02311 header, i, *q); 02312 break; 02313 default: 02314 break; 02315 } 02316 } 02317 02318 /*********************************************************************** 02319 * SPY_DumpStructure 02320 */ 02321 static void SPY_DumpStructure(const SPY_INSTANCE *sp_e, BOOL enter) 02322 { 02323 switch (sp_e->msgnum) 02324 { 02325 case LVM_INSERTITEMW: 02326 case LVM_INSERTITEMA: 02327 case LVM_SETITEMW: 02328 case LVM_SETITEMA: 02329 if (!enter) break; 02330 /* fall through */ 02331 case LVM_GETITEMW: 02332 case LVM_GETITEMA: 02333 { 02334 LPLVITEMA item = (LPLVITEMA) sp_e->lParam; 02335 if (item) { 02336 SPY_DumpMem ("LVITEM", (UINT*)item, sizeof(LVITEMA)); 02337 } 02338 break; 02339 } 02340 case TCM_INSERTITEMW: 02341 case TCM_INSERTITEMA: 02342 case TCM_SETITEMW: 02343 case TCM_SETITEMA: 02344 if (!enter) break; 02345 /* fall through */ 02346 case TCM_GETITEMW: 02347 case TCM_GETITEMA: 02348 { 02349 TCITEMA *item = (TCITEMA *) sp_e->lParam; 02350 if (item) { 02351 SPY_DumpMem ("TCITEM", (UINT*)item, sizeof(TCITEMA)); 02352 } 02353 break; 02354 } 02355 case TCM_ADJUSTRECT: 02356 case LVM_GETITEMRECT: 02357 case LVM_GETSUBITEMRECT: 02358 { 02359 LPRECT rc = (LPRECT) sp_e->lParam; 02360 if (rc) { 02361 TRACE("lParam rect (%ld,%ld)-(%ld,%ld)\n", 02362 rc->left, rc->top, rc->right, rc->bottom); 02363 } 02364 break; 02365 } 02366 case LVM_SETITEMPOSITION32: 02367 if (!enter) break; 02368 /* fall through */ 02369 case LVM_GETITEMPOSITION: 02370 case LVM_GETORIGIN: 02371 { 02372 LPPOINT point = (LPPOINT) sp_e->lParam; 02373 if (point) { 02374 TRACE("lParam point x=%ld, y=%ld\n", point->x, point->y); 02375 } 02376 break; 02377 } 02378 case SBM_SETRANGE: 02379 if (!enter && (sp_e->msgnum == SBM_SETRANGE)) break; 02380 TRACE("min=%d max=%d\n", (INT)sp_e->wParam, (INT)sp_e->lParam); 02381 break; 02382 case SBM_GETRANGE: 02383 if ((enter && (sp_e->msgnum == SBM_GETRANGE)) || 02384 (!enter && (sp_e->msgnum == SBM_SETRANGE))) break; 02385 { 02386 LPINT ptmin = (LPINT) sp_e->wParam; 02387 LPINT ptmax = (LPINT) sp_e->lParam; 02388 if (ptmin && ptmax) 02389 TRACE("min=%d max=%d\n", *ptmin, *ptmax); 02390 else if (ptmin) 02391 TRACE("min=%d max=n/a\n", *ptmin); 02392 else if (ptmax) 02393 TRACE("min=n/a max=%d\n", *ptmax); 02394 break; 02395 } 02396 case EM_EXSETSEL: 02397 if (enter && sp_e->lParam) 02398 { 02399 CHARRANGE *cr = (CHARRANGE *) sp_e->lParam; 02400 TRACE("CHARRANGE: cpMin=%ld cpMax=%ld\n", cr->cpMin, cr->cpMax); 02401 } 02402 break; 02403 case EM_SETCHARFORMAT: 02404 if (enter && sp_e->lParam) 02405 { 02406 CHARFORMATW *cf = (CHARFORMATW *) sp_e->lParam; 02407 TRACE("CHARFORMAT: dwMask=0x%08lx dwEffects=", cf->dwMask); 02408 if ((cf->dwMask & CFM_BOLD) && (cf->dwEffects & CFE_BOLD)) 02409 TRACE(" CFE_BOLD"); 02410 if ((cf->dwMask & CFM_COLOR) && (cf->dwEffects & CFE_AUTOCOLOR)) 02411 TRACE(" CFE_AUTOCOLOR"); 02412 if ((cf->dwMask & CFM_ITALIC) && (cf->dwEffects & CFE_ITALIC)) 02413 TRACE(" CFE_ITALIC"); 02414 if ((cf->dwMask & CFM_PROTECTED) && (cf->dwEffects & CFE_PROTECTED)) 02415 TRACE(" CFE_PROTECTED"); 02416 if ((cf->dwMask & CFM_STRIKEOUT) && (cf->dwEffects & CFE_STRIKEOUT)) 02417 TRACE(" CFE_STRIKEOUT"); 02418 if ((cf->dwMask & CFM_UNDERLINE) && (cf->dwEffects & CFE_UNDERLINE)) 02419 TRACE(" CFE_UNDERLINE"); 02420 TRACE("\n"); 02421 if (cf->dwMask & CFM_SIZE) 02422 TRACE("yHeight=%ld\n", cf->yHeight); 02423 if (cf->dwMask & CFM_OFFSET) 02424 TRACE("yOffset=%ld\n", cf->yOffset); 02425 if ((cf->dwMask & CFM_COLOR) && !(cf->dwEffects & CFE_AUTOCOLOR)) 02426 TRACE("crTextColor=%lx\n", cf->crTextColor); 02427 TRACE("bCharSet=%x bPitchAndFamily=%x\n", cf->bCharSet, cf->bPitchAndFamily); 02428 /* FIXME: we should try to be a bit more intelligent about 02429 * whether this is in ANSI or Unicode (it could be either) */ 02430 if (cf->dwMask & CFM_FACE) 02431 TRACE("szFaceName=%s\n", debugstr_wn(cf->szFaceName, LF_FACESIZE)); 02432 /* FIXME: handle CHARFORMAT2 too */ 02433 } 02434 break; 02435 case WM_DRAWITEM: 02436 if (!enter) break; 02437 { 02438 DRAWITEMSTRUCT *lpdis = (DRAWITEMSTRUCT*) sp_e->lParam; 02439 TRACE("DRAWITEMSTRUCT: CtlType=0x%08x CtlID=0x%08x\n", 02440 lpdis->CtlType, lpdis->CtlID); 02441 TRACE("itemID=0x%08x itemAction=0x%08x itemState=0x%08x\n", 02442 lpdis->itemID, lpdis->itemAction, lpdis->itemState); 02443 TRACE("hWnd=%p hDC=%p (%ld,%ld)-(%ld,%ld) itemData=0x%08lx\n", 02444 lpdis->hwndItem, lpdis->hDC, lpdis->rcItem.left, 02445 lpdis->rcItem.top, lpdis->rcItem.right, 02446 lpdis->rcItem.bottom, lpdis->itemData); 02447 } 02448 break; 02449 case WM_MEASUREITEM: 02450 { 02451 MEASUREITEMSTRUCT *lpmis = (MEASUREITEMSTRUCT*) sp_e->lParam; 02452 TRACE("MEASUREITEMSTRUCT: CtlType=0x%08x CtlID=0x%08x\n", 02453 lpmis->CtlType, lpmis->CtlID); 02454 TRACE("itemID=0x%08x itemWidth=0x%08x itemHeight=0x%08x\n", 02455 lpmis->itemID, lpmis->itemWidth, lpmis->itemHeight); 02456 TRACE("itemData=0x%08lx\n", lpmis->itemData); 02457 } 02458 break; 02459 case WM_NCCREATE: 02460 case WM_CREATE: 02461 { 02462 BOOL unicode; 02463 CREATESTRUCTA *cs; 02464 02465 if (!enter) break; 02466 02467 unicode = IsWindowUnicode(sp_e->msg_hwnd); 02468 cs = (CREATESTRUCTA *)sp_e->lParam; 02469 TRACE("%s %s ex=%08x style=%08x %d,%d %dx%d parent=%p menu=%p inst=%p params=%p\n", 02470 unicode ? debugstr_w((LPCWSTR)cs->lpszName) : debugstr_a(cs->lpszName), 02471 unicode ? debugstr_w((LPCWSTR)cs->lpszClass) : debugstr_a(cs->lpszClass), 02472 cs->dwExStyle, cs->style, cs->x, cs->y, cs->cx, cs->cy, 02473 cs->hwndParent, cs->hMenu, cs->hInstance, cs->lpCreateParams); 02474 break; 02475 } 02476 case WM_SIZE: 02477 if (!enter) break; 02478 TRACE("cx=%d cy=%d\n", LOWORD(sp_e->lParam), HIWORD(sp_e->lParam)); 02479 break; 02480 case WM_WINDOWPOSCHANGED: 02481 if (!enter) break; 02482 case WM_WINDOWPOSCHANGING: 02483 { 02484 WINDOWPOS *lpwp = (WINDOWPOS *)sp_e->lParam; 02485 TRACE("WINDOWPOS hwnd=%p, after=%p, at (%d,%d) w=%d h=%d, flags=0x%08x\n", 02486 lpwp->hwnd, lpwp->hwndInsertAfter, lpwp->x, lpwp->y, 02487 lpwp->cx, lpwp->cy, lpwp->flags); 02488 } 02489 break; 02490 case WM_STYLECHANGED: 02491 if (!enter) break; 02492 case WM_STYLECHANGING: 02493 { 02494 LPSTYLESTRUCT ss = (LPSTYLESTRUCT) sp_e->lParam; 02495 TRACE("STYLESTRUCT: StyleOld=0x%08lx, StyleNew=0x%08lx\n", 02496 ss->styleOld, ss->styleNew); 02497 } 02498 break; 02499 case WM_NCCALCSIZE: 02500 { 02501 RECT *rc = (RECT *)sp_e->lParam; 02502 TRACE("Rect (%ld,%ld)-(%ld,%ld)\n", 02503 rc->left, rc->top, rc->right, rc->bottom); 02504 } 02505 break; 02506 case WM_NOTIFY: 02507 /* if (!enter) break; */ 02508 { 02509 NMHDR * pnmh = (NMHDR*) sp_e->lParam; 02510 UINT *q, dumplen; 02511 const SPY_NOTIFY *p; 02512 WCHAR from_class[60]; 02513 DWORD save_error; 02514 02515 p = SPY_Bsearch_Notify (&spnfy_array[0], end_spnfy_array, 02516 pnmh->code); 02517 if (p) { 02518 TRACE("NMHDR hwndFrom=%p idFrom=0x%08lx code=%s<0x%08x>, extra=0x%x\n", 02519 pnmh->hwndFrom, pnmh->idFrom, p->name, pnmh->code, p->len); 02520 dumplen = p->len; 02521 02522 /* for CUSTOMDRAW, dump all the data for TOOLBARs */ 02523 if (pnmh->code == NM_CUSTOMDRAW) { 02524 /* save and restore error code over the next call */ 02525 save_error = GetLastError(); 02526 GetClassNameW(pnmh->hwndFrom, from_class, 02527 sizeof(from_class)/sizeof(WCHAR)); 02528 SetLastError(save_error); 02529 if (strcmpW(TOOLBARCLASSNAMEW, from_class) == 0) 02530 dumplen = sizeof(NMTBCUSTOMDRAW)-sizeof(NMHDR); 02531 } else if ((pnmh->code >= HDN_ITEMCHANGINGA) && (pnmh->code <= HDN_ENDDRAG)) { 02532 dumplen = sizeof(NMHEADERA)-sizeof(NMHDR); 02533 } 02534 if (dumplen > 0) { 02535 q = (UINT *)(pnmh + 1); 02536 SPY_DumpMem ("NM extra", q, (INT)dumplen); 02537 } 02538 } 02539 else 02540 TRACE("NMHDR hwndFrom=%p idFrom=0x%08lx code=0x%08x\n", 02541 pnmh->hwndFrom, pnmh->idFrom, pnmh->code); 02542 } 02543 default: 02544 if (sp_e->data_len > 0) 02545 SPY_DumpMem ("MSG lParam", (UINT *)sp_e->lParam, sp_e->data_len); 02546 break; 02547 } 02548 02549 } 02550 /*********************************************************************** 02551 * SPY_EnterMessage 02552 */ 02553 void SPY_EnterMessage( INT iFlag, HWND hWnd, UINT msg, 02554 WPARAM wParam, LPARAM lParam ) 02555 { 02556 SPY_INSTANCE sp_e; 02557 int indent; 02558 02559 if (!TRACE_ON(message) || SPY_EXCLUDE(msg)) return; 02560 02561 sp_e.msgnum = msg; 02562 sp_e.msg_hwnd = hWnd; 02563 sp_e.lParam = lParam; 02564 sp_e.wParam = wParam; 02565 SPY_GetWndName(&sp_e); 02566 SPY_GetMsgStuff(&sp_e); 02567 indent = get_indent_level(); 02568 02569 /* each SPY_SENDMESSAGE must be complemented by call to SPY_ExitMessage */ 02570 switch(iFlag) 02571 { 02572 case SPY_DISPATCHMESSAGE: 02573 TRACE("%*s(%p) %-16s message [%04x] %s dispatched wp=%08lx lp=%08lx\n", 02574 indent, "", hWnd, debugstr_w(sp_e.wnd_name), msg, 02575 sp_e.msg_name, wParam, lParam); 02576 break; 02577 02578 case SPY_SENDMESSAGE: 02579 { 02580 char taskName[20]; 02581 DWORD tid = GetWindowThreadProcessId( hWnd, NULL ); 02582 02583 if (tid == GetCurrentThreadId()) strcpy( taskName, "self" ); 02584 else sprintf( taskName, "tid %04lx", GetCurrentThreadId() ); 02585 02586 TRACE("%*s(%p) %-16s message [%04x] %s sent from %s wp=%08lx lp=%08lx\n", 02587 indent, "", hWnd, debugstr_w(sp_e.wnd_name), msg, 02588 sp_e.msg_name, taskName, wParam, lParam ); 02589 SPY_DumpStructure(&sp_e, TRUE); 02590 } 02591 break; 02592 02593 case SPY_DEFWNDPROC: 02594 if( SPY_ExcludeDWP ) return; 02595 TRACE("%*s(%p) DefWindowProc32: %s [%04x] wp=%08lx lp=%08lx\n", 02596 indent, "", hWnd, sp_e.msg_name, 02597 msg, wParam, lParam ); 02598 break; 02599 } 02600 set_indent_level( indent + SPY_INDENT_UNIT ); 02601 } 02602 02603 02604 /*********************************************************************** 02605 * SPY_ExitMessage 02606 */ 02607 void SPY_ExitMessage( INT iFlag, HWND hWnd, UINT msg, LRESULT lReturn, 02608 WPARAM wParam, LPARAM lParam ) 02609 { 02610 SPY_INSTANCE sp_e; 02611 int indent; 02612 DWORD save_error = GetLastError(); 02613 02614 if (!TRACE_ON(message) || SPY_EXCLUDE(msg) || 02615 (SPY_ExcludeDWP && (/*iFlag == SPY_RESULT_DEFWND16 || */iFlag == SPY_RESULT_DEFWND)) ) 02616 return; 02617 02618 sp_e.msgnum = msg; 02619 sp_e.msg_hwnd = hWnd; 02620 sp_e.lParam = lParam; 02621 sp_e.wParam = wParam; 02622 SPY_GetWndName(&sp_e); 02623 SPY_GetMsgStuff(&sp_e); 02624 02625 if ((indent = get_indent_level())) 02626 { 02627 indent -= SPY_INDENT_UNIT; 02628 set_indent_level( indent ); 02629 } 02630 02631 switch(iFlag) 02632 { 02633 case SPY_RESULT_DEFWND: 02634 TRACE(" %*s(%p) DefWindowProc32: %s [%04x] returned %08lx\n", 02635 indent, "", hWnd, sp_e.msg_name, msg, lReturn ); 02636 break; 02637 02638 case SPY_RESULT_OK: 02639 TRACE(" %*s(%p) %-16s message [%04x] %s returned %08lx\n", 02640 indent, "", hWnd, debugstr_w(sp_e.wnd_name), msg, 02641 sp_e.msg_name, lReturn ); 02642 SPY_DumpStructure(&sp_e, FALSE); 02643 break; 02644 } 02645 SetLastError( save_error ); 02646 } 02647 02648 02649 /*********************************************************************** 02650 * SPY_Init 02651 */ 02652 int SPY_Init(void) 02653 { 02654 int i; 02655 UINT j; 02656 char buffer[1024]; 02657 const SPY_NOTIFY *p; 02658 const USER_MSG *q; 02659 HKEY hkey; 02660 02661 if (!TRACE_ON(message)) return TRUE; 02662 02663 indent_tls_index = TlsAlloc(); 02664 /* @@ Wine registry key: HKCU\Software\Wine\Debug */ 02665 if(!RegOpenKeyA(HKEY_CURRENT_USER, "Software\\ReactOS\\Debug", &hkey)) 02666 { 02667 DWORD type, count = sizeof(buffer); 02668 02669 buffer[0] = 0; 02670 if (!RegQueryValueExA(hkey, "SpyInclude", 0, &type, (LPBYTE) buffer, &count) && 02671 strcmp( buffer, "INCLUDEALL" )) 02672 { 02673 TRACE("Include=%s\n", buffer ); 02674 for (i = 0; i <= SPY_MAX_MSGNUM; i++) 02675 SPY_Exclude[i] = (MessageTypeNames[i] && !strstr(buffer,MessageTypeNames[i])); 02676 } 02677 02678 count = sizeof(buffer); 02679 buffer[0] = 0; 02680 if (!RegQueryValueExA(hkey, "SpyExclude", 0, &type, (LPBYTE) buffer, &count)) 02681 { 02682 TRACE("Exclude=%s\n", buffer ); 02683 if (!strcmp( buffer, "EXCLUDEALL" )) 02684 for (i = 0; i <= SPY_MAX_MSGNUM; i++) SPY_Exclude[i] = TRUE; 02685 else 02686 for (i = 0; i <= SPY_MAX_MSGNUM; i++) 02687 SPY_Exclude[i] = (MessageTypeNames[i] && strstr(buffer,MessageTypeNames[i])); 02688 } 02689 02690 SPY_ExcludeDWP = 0; 02691 count = sizeof(buffer); 02692 if(!RegQueryValueExA(hkey, "SpyExcludeDWP", 0, &type, (LPBYTE) buffer, &count)) 02693 SPY_ExcludeDWP = atoi(buffer); 02694 02695 RegCloseKey(hkey); 02696 } 02697 02698 /* find last good entry in spy notify array and save addr for b-search */ 02699 p = &spnfy_array[0]; 02700 j = 0xffffffff; 02701 while (p->name) { 02702 if ((UINT)p->value > (UINT)j) { 02703 ERR("Notify message array out of order\n"); 02704 ERR(" between values [%08x] %s and [%08x] %s\n", 02705 j, (p-1)->name, p->value, p->name); 02706 break; 02707 } 02708 j = p->value; 02709 p++; 02710 } 02711 p--; 02712 end_spnfy_array = p; 02713 02714 /* find last good entry in each common control message array 02715 * and save addr for b-search. 02716 */ 02717 i = 0; 02718 while (cc_array[i].classname) { 02719 02720 j = 0x0400; /* minimum entry in array */ 02721 q = cc_array[i].classmsg; 02722 while(q->name) { 02723 if (q->value <= j) { 02724 ERR("Class message array out of order for class %s\n", 02725 debugstr_w(cc_array[i].classname)); 02726 ERR(" between values [%04x] %s and [%04x] %s\n", 02727 j, (q-1)->name, q->value, q->name); 02728 break; 02729 } 02730 j = q->value; 02731 q++; 02732 } 02733 q--; 02734 cc_array[i].lastmsg = (USER_MSG *)q; 02735 02736 i++; 02737 } 02738 02739 return 1; 02740 } Generated on Sat May 26 2012 04:37:32 for ReactOS by
1.7.6.1
|