No subject


Fri Sep 18 15:31:18 CDT 2009


001c:Call
user32.DialogBoxIndirectParamW(00000000,0050096c,00020022,00442a06,00500638)
ret=00442ccf
...
001c:Call window proc 0x7a50ac7c
(hwnd=0x10066,msg=WM_INITDIALOG,wp=00000000,lp=00500638)
001c:Call dialog proc 0x442a06
(hwnd=0x10066,msg=WM_INITDIALOG,wp=00000000,lp=00500638)
...
001c:Call KERNEL32.RaiseException(e06d7363,00000001,00000003,0032f0c0)
ret=0044ccd1
001c:trace:seh:raise_exception code=e06d7363 flags=1 addr=0x7b835e12
ip=7b835e12 tid=001c
...

For the WM_INITDIALOG message, MSDN states that the wParam value is:

"Handle to the control to receive the default keyboard focus. The system
assigns the default keyboard focus only if the dialog box procedure returns
TRUE."

In DIALOG_CreateIndirect in dlls/user32/dialog.c however:

    /* moved this from the top of the method to here as DIALOGINFO structure
    will be valid only after WM_CREATE message has been handled in DefDlgProc
    All the members of the structure get filled here using temp variables */
    dlgInfo = DIALOG_get_info( hwnd, TRUE );
    dlgInfo->hwndFocus   = 0;
...
    if (DIALOG_CreateControls32( hwnd, dlgTemplate, &template, hInst, unicode
))
    {
        /* Send initialisation messages and set focus */

        if (dlgProc)
        {
            if (SendMessageW( hwnd, WM_INITDIALOG, (WPARAM)dlgInfo->hwndFocus,
param ) &&
                ((~template.style & DS_CONTROL) || (template.style &
WS_VISIBLE)))
...

it seems that dlgInfo->hwndFocus is never initialized to an appropriate handle
value, causing the application to assert. Initializing dlgInfo->hwndFocus makes
the assertion failure go away, although the application simply terminates
silently after doing this.

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list