Commit 748acbb0 authored by Ove Kaaven's avatar Ove Kaaven Committed by Alexandre Julliard

Fixed IsDialogMessage16.

parent 8b21f28d
...@@ -91,7 +91,7 @@ file user.exe ...@@ -91,7 +91,7 @@ file user.exe
87 pascal16 DialogBox(word segstr word segptr) DialogBox16 87 pascal16 DialogBox(word segstr word segptr) DialogBox16
88 pascal16 EndDialog(word s_word) EndDialog16 88 pascal16 EndDialog(word s_word) EndDialog16
89 pascal16 CreateDialog(word segstr word segptr) CreateDialog16 89 pascal16 CreateDialog(word segstr word segptr) CreateDialog16
90 pascal16 IsDialogMessage(word ptr) IsDialogMessage16 90 pascal16 IsDialogMessage(word segptr) WIN16_IsDialogMessage16
91 pascal16 GetDlgItem(word word) GetDlgItem16 91 pascal16 GetDlgItem(word word) GetDlgItem16
92 pascal16 SetDlgItemText(word word segstr) SetDlgItemText16 92 pascal16 SetDlgItemText(word word segstr) SetDlgItemText16
93 pascal16 GetDlgItemText(word word segptr word) GetDlgItemText16 93 pascal16 GetDlgItemText(word word segptr word) GetDlgItemText16
......
...@@ -1193,16 +1193,16 @@ static BOOL32 DIALOG_IsDialogMessage( HWND32 hwnd, HWND32 hwndDlg, ...@@ -1193,16 +1193,16 @@ static BOOL32 DIALOG_IsDialogMessage( HWND32 hwnd, HWND32 hwndDlg,
/*********************************************************************** /***********************************************************************
* IsDialogMessage16 (USER.90) * IsDialogMessage16 (USER.90)
*/ */
BOOL16 WINAPI IsDialogMessage16( HWND16 hwndDlg, LPMSG16 msg ) BOOL16 WINAPI WIN16_IsDialogMessage16( HWND16 hwndDlg, SEGPTR msg16 )
{ {
LPMSG16 msg = PTR_SEG_TO_LIN(msg16);
BOOL32 ret, translate, dispatch; BOOL32 ret, translate, dispatch;
INT32 dlgCode; INT32 dlgCode;
if ((hwndDlg != msg->hwnd) && !IsChild16( hwndDlg, msg->hwnd )) if ((hwndDlg != msg->hwnd) && !IsChild16( hwndDlg, msg->hwnd ))
return FALSE; return FALSE;
dlgCode = SendMessage16( msg->hwnd, WM_GETDLGCODE, 0, (LPARAM)msg16);
dlgCode = SendMessage16( msg->hwnd, WM_GETDLGCODE, 0, (LPARAM)msg);
ret = DIALOG_IsDialogMessage( msg->hwnd, hwndDlg, msg->message, ret = DIALOG_IsDialogMessage( msg->hwnd, hwndDlg, msg->message,
msg->wParam, msg->lParam, msg->wParam, msg->lParam,
&translate, &dispatch, dlgCode ); &translate, &dispatch, dlgCode );
...@@ -1212,6 +1212,17 @@ BOOL16 WINAPI IsDialogMessage16( HWND16 hwndDlg, LPMSG16 msg ) ...@@ -1212,6 +1212,17 @@ BOOL16 WINAPI IsDialogMessage16( HWND16 hwndDlg, LPMSG16 msg )
} }
BOOL16 WINAPI IsDialogMessage16( HWND16 hwndDlg, LPMSG16 msg )
{
LPMSG16 msg16 = SEGPTR_NEW(MSG16);
BOOL32 ret;
*msg16 = *msg;
ret = WIN16_IsDialogMessage16( hwndDlg, SEGPTR_GET(msg16) );
SEGPTR_FREE(msg16);
return ret;
}
/*********************************************************************** /***********************************************************************
* IsDialogMessage32A (USER32.342) * IsDialogMessage32A (USER32.342)
*/ */
......
...@@ -800,6 +800,7 @@ INT32 WINPROC_MapMsg16To32A( UINT16 msg16, WPARAM16 wParam16, UINT32 *pmsg32, ...@@ -800,6 +800,7 @@ INT32 WINPROC_MapMsg16To32A( UINT16 msg16, WPARAM16 wParam16, UINT32 *pmsg32,
} }
return 1; return 1;
case WM_GETTEXT: case WM_GETTEXT:
case WM_SETTEXT:
*plparam = (LPARAM)PTR_SEG_TO_LIN(*plparam); *plparam = (LPARAM)PTR_SEG_TO_LIN(*plparam);
return 0; return 0;
case WM_MDICREATE: case WM_MDICREATE:
...@@ -883,9 +884,6 @@ INT32 WINPROC_MapMsg16To32A( UINT16 msg16, WPARAM16 wParam16, UINT32 *pmsg32, ...@@ -883,9 +884,6 @@ INT32 WINPROC_MapMsg16To32A( UINT16 msg16, WPARAM16 wParam16, UINT32 *pmsg32,
*plparam = (LPARAM)(HWND32)LOWORD(*plparam); *plparam = (LPARAM)(HWND32)LOWORD(*plparam);
} }
return 0; return 0;
case WM_SETTEXT:
*plparam = (LPARAM)PTR_SEG_TO_LIN(*plparam);
return 0;
case WM_WINDOWPOSCHANGING: case WM_WINDOWPOSCHANGING:
case WM_WINDOWPOSCHANGED: case WM_WINDOWPOSCHANGED:
{ {
...@@ -898,6 +896,26 @@ INT32 WINPROC_MapMsg16To32A( UINT16 msg16, WPARAM16 wParam16, UINT32 *pmsg32, ...@@ -898,6 +896,26 @@ INT32 WINPROC_MapMsg16To32A( UINT16 msg16, WPARAM16 wParam16, UINT32 *pmsg32,
*plparam = (LPARAM)wp; *plparam = (LPARAM)wp;
} }
return 1; return 1;
case WM_GETDLGCODE:
{
LPMSG16 msg16 = (LPMSG16)PTR_SEG_TO_LIN(*plparam);
LPMSG32 msg32 = (LPMSG32)HeapAlloc( SystemHeap, 0, sizeof(MSG32) );
if (!msg32) return -1;
msg32->hwnd = msg16->hwnd;
msg32->lParam = msg16->lParam;
msg32->time = msg16->time;
CONV_POINT16TO32(&msg16->pt,&msg32->pt);
/* this is right, right? */
if (WINPROC_MapMsg16To32A(msg16->message,msg16->wParam,
&msg32->message,&msg32->wParam,
&msg32->lParam)<0) {
HeapFree( SystemHeap, 0, msg32 );
return -1;
}
*plparam = (LPARAM)msg32;
}
return 1;
case WM_NOTIFY: case WM_NOTIFY:
*plparam = (LPARAM)PTR_SEG_TO_LIN(*plparam); *plparam = (LPARAM)PTR_SEG_TO_LIN(*plparam);
return 1; return 1;
...@@ -1003,6 +1021,15 @@ LRESULT WINPROC_UnmapMsg16To32A( UINT32 msg, WPARAM32 wParam, LPARAM lParam, ...@@ -1003,6 +1021,15 @@ LRESULT WINPROC_UnmapMsg16To32A( UINT32 msg, WPARAM32 wParam, LPARAM lParam,
HeapFree( SystemHeap, 0, wp ); HeapFree( SystemHeap, 0, wp );
} }
break; break;
case WM_GETDLGCODE:
{
LPMSG32 msg32 = (LPMSG32)lParam;
WINPROC_UnmapMsg16To32A( msg32->message, msg32->wParam, msg32->lParam,
result);
HeapFree( SystemHeap, 0, msg32 );
}
break;
} }
return result; return result;
} }
...@@ -1064,6 +1091,26 @@ INT32 WINPROC_MapMsg16To32W( UINT16 msg16, WPARAM16 wParam16, UINT32 *pmsg32, ...@@ -1064,6 +1091,26 @@ INT32 WINPROC_MapMsg16To32W( UINT16 msg16, WPARAM16 wParam16, UINT32 *pmsg32,
*plparam = (LPARAM)cs; *plparam = (LPARAM)cs;
} }
return 1; return 1;
case WM_GETDLGCODE:
{
LPMSG16 msg16 = (LPMSG16)PTR_SEG_TO_LIN(*plparam);
LPMSG32 msg32 = (LPMSG32)HeapAlloc( SystemHeap, 0, sizeof(MSG32) );
if (!msg32) return -1;
msg32->hwnd = msg16->hwnd;
msg32->lParam = msg16->lParam;
msg32->time = msg16->time;
CONV_POINT16TO32(&msg16->pt,&msg32->pt);
/* this is right, right? */
if (WINPROC_MapMsg16To32W(msg16->message,msg16->wParam,
&msg32->message,&msg32->wParam,
&msg32->lParam)<0) {
HeapFree( SystemHeap, 0, msg32 );
return -1;
}
*plparam = (LPARAM)msg32;
}
return 1;
default: /* No Unicode translation needed */ default: /* No Unicode translation needed */
return WINPROC_MapMsg16To32A( msg16, wParam16, pmsg32, return WINPROC_MapMsg16To32A( msg16, wParam16, pmsg32,
pwparam32, plparam ); pwparam32, plparam );
...@@ -1112,6 +1159,15 @@ LRESULT WINPROC_UnmapMsg16To32W( UINT32 msg, WPARAM32 wParam, LPARAM lParam, ...@@ -1112,6 +1159,15 @@ LRESULT WINPROC_UnmapMsg16To32W( UINT32 msg, WPARAM32 wParam, LPARAM lParam,
HeapFree( SystemHeap, 0, cs ); HeapFree( SystemHeap, 0, cs );
} }
break; break;
case WM_GETDLGCODE:
{
LPMSG32 msg32 = (LPMSG32)lParam;
WINPROC_UnmapMsg16To32W( msg32->message, msg32->wParam, msg32->lParam,
result);
HeapFree( SystemHeap, 0, msg32 );
}
break;
default: default:
return WINPROC_UnmapMsg16To32A( msg, wParam, lParam, result ); return WINPROC_UnmapMsg16To32A( msg, wParam, lParam, result );
} }
...@@ -1526,7 +1582,8 @@ INT32 WINPROC_MapMsg32ATo16( HWND32 hwnd, UINT32 msg32, WPARAM32 wParam32, ...@@ -1526,7 +1582,8 @@ INT32 WINPROC_MapMsg32ATo16( HWND32 hwnd, UINT32 msg32, WPARAM32 wParam32,
case WM_PAINTCLIPBOARD: case WM_PAINTCLIPBOARD:
case WM_SIZECLIPBOARD: case WM_SIZECLIPBOARD:
case WM_WININICHANGE: case WM_WININICHANGE:
WARN( msg, "message %04x needs translation\n", msg32 ); case WM_GETDLGCODE:
FIXME( msg, "message %04x needs translation\n", msg32 );
return -1; return -1;
default: /* No translation needed */ default: /* No translation needed */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment