Question about ToolbarWindowProc
Guy L. Albertelli
galberte at neo.lrun.com
Wed Feb 27 20:20:44 CST 2002
----- Original Message -----
From: "Jeremy Shaw" <jeremy at lindows.com>
To: "Wine Devel" <wine-devel at winehq.com>
Sent: Wednesday, February 27, 2002 7:30 PM
Subject: Re: Question about ToolbarWindowProc
> Now, If I use the WindomsME comctl32.dll BUT modify SendMessageA to block
the
> Favorites menu from receiving message 0x463, then the Favorites menu
reverts to
> only being 8 pixel tall.
Jeremy,
I do believe I have been totally wrong about toolbar message [0463].
0806f388:trace:message:SPY_EnterMessage (00010044) L"Menu"
message [043a] TB_GETBUTTONSIZE sent from self wp=00000000 lp=00000000
0806f388:trace:message:SPY_ExitMessage (00010044) L"Menu"
message [043a] TB_GETBUTTONSIZE returned 001500a5
0806f388:trace:message:SPY_EnterMessage (00010044) L"Menu"
message [0463] WM_USER+0063 sent from self wp=00000001 lp=405243ac
0806f388:trace:message:SPY_ExitMessage (00010044) L"Menu"
message [0463] WM_USER+0063 returned 00000000
0806f388:trace:message:SPY_EnterMessage (00010046) L"{ToolbarWindow}"
message [043a] TB_GETBUTTONSIZE sent from self wp=00000000 lp=00000000
0806f388:trace:message:SPY_ExitMessage (00010046) L"{ToolbarWindow}"
message [043a] TB_GETBUTTONSIZE returned 00150173
0806f388:trace:message:SPY_EnterMessage (00010046) L"{ToolbarWindow}"
message [0463] WM_USER+0063 sent from self wp=00000001 lp=405243ac
0806f388:trace:message:SPY_ExitMessage (00010046) L"{ToolbarWindow}"
message [0463] WM_USER+0063 returned 00000000
...
0806f388:Call user32.AdjustWindowRectEx(4052463c,86400000,00000000,00000088)
ret=7113f8d6
0806f388:trace:win:InflateRect r (-3,-3)-(374,4)
0806f388:Ret user32.AdjustWindowRectEx() retval=00000001 ret=7113f8d6
The above trace is from work I've been doing on IE5.5. It shows the entries
just before the first known point of failure. If I fudge AdjustWindowRectEx
and force the rectangle to be deeper (larger y value), it displays the
Favorites "menu" window. Note that the app code touches, with both
TB_GETBUTTONSIZE and [0463], both toolbars that are part of the rebar just
before the call.
Based on your note, I added some code (bottom) to toolbar.c to display the
data pointed to by the lParam of the [0463] message. I chose 2 dwords after
looking at memory with the debugger. The third and fourth dwords are the
stack pointer and return address, so the max size of the data must be 2
dwords.
The trace below shows the values displayed.
Then I guessed that the code in native probably sets the second word.
AND THAT STARTED TO WORK!!!!
No, not correctly, but it is definitely bigger.
err:toolbar:ToolbarWindowProc [0463] lParam 0x40523c70 -> 0x000000a5
0x00000000
err:toolbar:ToolbarWindowProc [0463] lParam 0x40523c68 -> 0x00000173
0x00000000
case 0x0463:
{
LPDWORD hoho = (LPDWORD)lParam;
ERR("[0463] lParam 0x%08lx -> 0x%08lx 0x%08lx\n",
lParam, *hoho, *(hoho+1));
/* guess - level 1 */
if (!*(hoho+1)) {
*(hoho+1) = *hoho; /* set second word to first */
}
return 0; /* really should be 1 */
}
BTW, The interior windowproc is the "real" toolbar windowproc. You can check
the windowproc addresses by running the ControlSpy samples with
"+relay,+message" and noting which addresses are used for which window
classes.
I really think we are closer.
If we add another case to windows/spy.c to trap the [0463] message and dump
the two dwords at the lParam on entry and exit, I think we can understand
what this thing really does.
Guy
More information about the wine-devel
mailing list