mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 09:25:10 +00:00
[User32]
- 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:
parent
6027ff60e6
commit
3581e033d0
1 changed files with 33 additions and 20 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue