* PROJECT: ReactOS user32.dll
* FILE: win32ss/user/user32/windows/window.c
* PURPOSE: Window management
- * PROGRAMMER: Casper S. Hornstrup (chorns@users.sourceforge.net)
+ * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
+ * Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
* UPDATE HISTORY:
* 06-06-2001 CSH Created
*/
VOID WINAPI
-SwitchToThisWindow(HWND hwnd, BOOL fUnknown)
+SwitchToThisWindow(HWND hwnd, BOOL bUnknown)
{
- ShowWindow(hwnd, SW_SHOW);
+ NtUserxSwitchToThisWindow(hwnd, bUnknown);
}
BOOL WINAPI
CloseWindow(HWND hWnd)
{
- SendMessageA(hWnd, WM_SYSCOMMAND, SC_CLOSE, 0);
-
- return HandleToUlong(hWnd);
+ /* NOTE: CloseWindow does minimizes, and doesn't close. */
+ SetActiveWindow(hWnd);
+ return ShowWindow(hWnd, SW_SHOWMINIMIZED);
}
FORCEINLINE
lpString[0] = '\0';
- if (!TestWindowProcess( Wnd))
+ if (!TestWindowProcess(Wnd))
{
- _SEH2_TRY
- {
- Length = DefWindowProcA(hWnd, WM_GETTEXT, nMaxCount, (LPARAM)lpString);
- }
- _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
- {
- Length = 0;
- }
- _SEH2_END;
+ _SEH2_TRY
+ {
+ Length = DefWindowProcA(hWnd, WM_GETTEXT, nMaxCount, (LPARAM)lpString);
+ }
+ _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ {
+ Length = 0;
+ }
+ _SEH2_END;
}
else
- Length = SendMessageA(hWnd, WM_GETTEXT, nMaxCount, (LPARAM)lpString);
+ {
+ Length = SendMessageA(hWnd, WM_GETTEXT, nMaxCount, (LPARAM)lpString);
+ }
//ERR("GWTA Len %d : %s\n",Length,lpString);
return Length;
}
int WINAPI
GetWindowTextLengthA(HWND hWnd)
{
- return(SendMessageA(hWnd, WM_GETTEXTLENGTH, 0, 0));
+ PWND Wnd;
+
+ Wnd = ValidateHwnd(hWnd);
+ if (!Wnd)
+ return 0;
+
+ if (!TestWindowProcess(Wnd))
+ {
+ return DefWindowProcA(hWnd, WM_GETTEXTLENGTH, 0, 0);
+ }
+ else
+ {
+ return SendMessageA(hWnd, WM_GETTEXTLENGTH, 0, 0);
+ }
}
/*
int WINAPI
GetWindowTextLengthW(HWND hWnd)
{
- return(SendMessageW(hWnd, WM_GETTEXTLENGTH, 0, 0));
+ PWND Wnd;
+
+ Wnd = ValidateHwnd(hWnd);
+ if (!Wnd)
+ return 0;
+
+ if (!TestWindowProcess(Wnd))
+ {
+ return DefWindowProcW(hWnd, WM_GETTEXTLENGTH, 0, 0);
+ }
+ else
+ {
+ return SendMessageW(hWnd, WM_GETTEXTLENGTH, 0, 0);
+ }
}
/*
lpString[0] = L'\0';
- if (!TestWindowProcess( Wnd))
+ if (!TestWindowProcess(Wnd))
{
- _SEH2_TRY
- {
- Length = DefWindowProcW(hWnd, WM_GETTEXT, nMaxCount, (LPARAM)lpString);
- }
- _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
- {
- Length = 0;
- }
- _SEH2_END;
+ _SEH2_TRY
+ {
+ Length = DefWindowProcW(hWnd, WM_GETTEXT, nMaxCount, (LPARAM)lpString);
+ }
+ _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ {
+ Length = 0;
+ }
+ _SEH2_END;
}
else
- Length = SendMessageW(hWnd, WM_GETTEXT, nMaxCount, (LPARAM)lpString);
+ {
+ Length = SendMessageW(hWnd, WM_GETTEXT, nMaxCount, (LPARAM)lpString);
+ }
//ERR("GWTW Len %d : %S\n",Length,lpString);
return Length;
}
InternalGetWindowText(HWND hWnd, LPWSTR lpString, int nMaxCount)
{
INT Ret = NtUserInternalGetWindowText(hWnd, lpString, nMaxCount);
- if (Ret == 0)
+ if (Ret == 0 && lpString)
*lpString = L'\0';
return Ret;
}