Santosh Siddheshwar wrote:
Change Log: windows/defdlg.c - Added code for allocating DIALOGINFO structure and storing it as an attribute of the window windows/dialog.c - Removed code for allocating DIALOGINFO structure and moved initialization of DIALOGINFO structure to after CreateWindowEx has been called. <<patch.diff>>
diff -urN wine-20040408/windows/defdlg.c wine-bin/windows/defdlg.c --- wine-20040408/windows/defdlg.c 2003-09-06 04:45:40.000000000 +0530 +++ wine-bin/windows/defdlg.c 2004-04-13 11:53:02.000000000 +0530 @@ -168,6 +168,27 @@ { switch(msg) {
case WM_CREATE:
{
/* Allocate memory for DIALOGINFO structure and store in
DWL_DIALOGINFO
structure. Also flag the window as a dialog type */
WND* wndPtr;
DIALOGINFO* dlgInfo;
if (!(dlgInfo = HeapAlloc( GetProcessHeap(), 0,
sizeof(*dlgInfo) ))) return 0;
Minor point, but you probably want to return -1 here to say that window creation failed.
dlgInfo->hwndFocus = 0;
dlgInfo->hUserFont = 0;
dlgInfo->hMenu = 0;
dlgInfo->xBaseUnit = 0;
dlgInfo->yBaseUnit = 0;
Rob
"Robert Shearman" R.J.Shearman@warwick.ac.uk wrote:
if (!(dlgInfo = HeapAlloc( GetProcessHeap(), 0,
sizeof(*dlgInfo) ))) return 0;
Minor point, but you probably want to return -1 here to say that window creation failed.
Good catch. Another one might be that WM_CREATE must be always passed to DEFDLG_Proc regardless of what result an application returned to DefDlgProc16/A/W.