user32: Reimplement DefDlgProc16 using message mapping functions.

This commit is contained in:
Alexandre Julliard 2009-11-13 11:11:31 +01:00
parent 0bc1eaac76
commit 76dcb0ecb9
2 changed files with 19 additions and 54 deletions

View File

@ -23,7 +23,7 @@
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "wine/winuser16.h"
#include "winuser.h"
#include "controls.h"
#include "win.h"
#include "user_private.h"
@ -373,59 +373,6 @@ out:
return dlgInfo;
}
/***********************************************************************
* DefDlgProc (USER.308)
*/
LRESULT WINAPI DefDlgProc16( HWND16 hwnd, UINT16 msg, WPARAM16 wParam,
LPARAM lParam )
{
DIALOGINFO *dlgInfo;
DLGPROC16 dlgproc;
HWND hwnd32 = WIN_Handle32( hwnd );
BOOL result = FALSE;
/* Perform DIALOGINFO initialization if not done */
if(!(dlgInfo = DIALOG_get_info(hwnd32, TRUE))) return 0;
SetWindowLongPtrW( hwnd32, DWLP_MSGRESULT, 0 );
if ((dlgproc = (DLGPROC16)DEFDLG_GetDlgProc( hwnd32 ))) /* Call dialog procedure */
result = WINPROC_CallDlgProc16( dlgproc, hwnd, msg, wParam, lParam );
if (!result && IsWindow(hwnd32))
{
/* callback didn't process this message */
switch(msg)
{
case WM_ERASEBKGND:
case WM_SHOWWINDOW:
case WM_ACTIVATE:
case WM_SETFOCUS:
case DM_SETDEFID:
case DM_GETDEFID:
case WM_NEXTDLGCTL:
case WM_GETFONT:
case WM_CLOSE:
case WM_NCDESTROY:
case WM_ENTERMENULOOP:
case WM_LBUTTONDOWN:
case WM_NCLBUTTONDOWN:
return DEFDLG_Proc( hwnd32, msg, (WPARAM)wParam, lParam, dlgInfo );
case WM_INITDIALOG:
case WM_VKEYTOITEM:
case WM_COMPAREITEM:
case WM_CHARTOITEM:
break;
default:
return DefWindowProc16( hwnd, msg, wParam, lParam );
}
}
return DEFDLG_Epilog( hwnd32, msg, result);
}
/***********************************************************************
* DefDlgProcA (USER32.@)
*/

View File

@ -77,6 +77,13 @@ static LRESULT get_message_callback( HWND16 hwnd, UINT16 msg, WPARAM16 wp, LPARA
return 0;
}
static LRESULT defdlg_proc_callback( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp,
LRESULT *result, void *arg )
{
*result = DefDlgProcA( hwnd, msg, wp, lp );
return *result;
}
/***********************************************************************
* SendMessage (USER.111)
@ -269,6 +276,17 @@ LRESULT WINAPI DefWindowProc16( HWND16 hwnd16, UINT16 msg, WPARAM16 wParam, LPAR
}
/***********************************************************************
* DefDlgProc (USER.308)
*/
LRESULT WINAPI DefDlgProc16( HWND16 hwnd, UINT16 msg, WPARAM16 wParam, LPARAM lParam )
{
LRESULT result;
WINPROC_CallProc16To32A( defdlg_proc_callback, hwnd, msg, wParam, lParam, &result, 0 );
return result;
}
/***********************************************************************
* PeekMessage (USER.109)
*/