- Use SetWindowTextA/W so that it passes through defwnd to be processed for themes.
- Fix validation of the dialog window and procedure.

svn path=/trunk/; revision=54248
This commit is contained in:
James Tabor 2011-10-24 14:16:53 +00:00
parent 6027ff60e6
commit 3581e033d0

View file

@ -138,27 +138,34 @@ DIALOGINFO * DIALOG_get_info( HWND hWnd, BOOL create )
PWND pWindow; PWND pWindow;
DIALOGINFO* dlgInfo = (DIALOGINFO *)GetWindowLongPtrW( hWnd, DWLP_ROS_DIALOGINFO ); DIALOGINFO* dlgInfo = (DIALOGINFO *)GetWindowLongPtrW( hWnd, DWLP_ROS_DIALOGINFO );
if(!dlgInfo && create) pWindow = ValidateHwnd( hWnd );
if (!pWindow)
{ {
pWindow = ValidateHwnd( hWnd ); return NULL;
if (!pWindow) }
{
SetLastError( ERROR_INVALID_WINDOW_HANDLE ); if (!dlgInfo && create)
{
if (pWindow && pWindow->cbwndExtra >= DLGWINDOWEXTRA && hWnd != GetDesktopWindow())
{
if (!(dlgInfo = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*dlgInfo) )))
return NULL;
SETDLGINFO( hWnd, dlgInfo );
NtUserxSetDialogPointer( hWnd, dlgInfo );
}
else
{
return NULL; return NULL;
} }
}
if (pWindow && pWindow->cbwndExtra >= DLGWINDOWEXTRA && hWnd != GetDesktopWindow()) else
{
if (!(pWindow->state & WNDS_DIALOGWINDOW) || pWindow->fnid != FNID_DIALOG)
{ {
if (!(dlgInfo = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*dlgInfo) ))) ERR("Wrong window class for Dialog!\n");
return NULL; return NULL;
SETDLGINFO( hWnd, dlgInfo );
NtUserxSetDialogPointer( hWnd, dlgInfo );
}
else
{
return NULL;
} }
} }
return dlgInfo; return dlgInfo;
@ -2573,6 +2580,7 @@ SendDlgItemMessageA(
WPARAM wParam, WPARAM wParam,
LPARAM lParam) LPARAM lParam)
{ {
if ( hDlg == HWND_TOPMOST || hDlg == HWND_BROADCAST ) return 0; // ReactOS
HWND hwndCtrl = GetDlgItem( hDlg, nIDDlgItem ); HWND hwndCtrl = GetDlgItem( hDlg, nIDDlgItem );
if (hwndCtrl) return SendMessageA( hwndCtrl, Msg, wParam, lParam ); if (hwndCtrl) return SendMessageA( hwndCtrl, Msg, wParam, lParam );
else return 0; else return 0;
@ -2591,6 +2599,7 @@ SendDlgItemMessageW(
WPARAM wParam, WPARAM wParam,
LPARAM lParam) LPARAM lParam)
{ {
if ( hDlg == HWND_TOPMOST || hDlg == HWND_BROADCAST ) return 0; // ReactOS
HWND hwndCtrl = GetDlgItem( hDlg, nIDDlgItem ); HWND hwndCtrl = GetDlgItem( hDlg, nIDDlgItem );
if (hwndCtrl) return SendMessageW( hwndCtrl, Msg, wParam, lParam ); if (hwndCtrl) return SendMessageW( hwndCtrl, Msg, wParam, lParam );
else return 0; else return 0;
@ -2627,7 +2636,9 @@ SetDlgItemTextA(
int nIDDlgItem, int nIDDlgItem,
LPCSTR lpString) LPCSTR lpString)
{ {
return SendDlgItemMessageA( hDlg, nIDDlgItem, WM_SETTEXT, 0, (LPARAM)lpString ); HWND hwndCtrl = GetDlgItem( hDlg, nIDDlgItem ); // ReactOS Themes
if (hwndCtrl) return SetWindowTextA( hwndCtrl, lpString );
return FALSE;
} }
@ -2641,7 +2652,9 @@ SetDlgItemTextW(
int nIDDlgItem, int nIDDlgItem,
LPCWSTR lpString) LPCWSTR lpString)
{ {
return SendDlgItemMessageW( hDlg, nIDDlgItem, WM_SETTEXT, 0, (LPARAM)lpString ); HWND hwndCtrl = GetDlgItem( hDlg, nIDDlgItem ); // ReactOS Themes
if (hwndCtrl) return SetWindowTextW( hwndCtrl, lpString );
return FALSE;
} }