From cfac33ce3b104b653f998f1039ce9138fe238518 Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Sun, 17 Aug 2003 23:48:36 +0000 Subject: [PATCH] Implemented AnimateWindow() svn path=/trunk/; revision=5629 --- reactos/include/defines.h | 11 +++++++++++ reactos/lib/user32/windows/window.c | 25 +++++++++++++++++++++---- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/reactos/include/defines.h b/reactos/include/defines.h index db43da3d809..8605c3caf49 100644 --- a/reactos/include/defines.h +++ b/reactos/include/defines.h @@ -2532,6 +2532,17 @@ extern "C" { #define WPF_RESTORETOMAXIMIZED (2) #define WPF_SETMINPOSITION (1) +/* AnimageWindow */ +#define AW_SLIDE (0x00040000) +#define AW_ACTIVATE (0x00020000) +#define AW_BLEND (0x00080000) +#define AW_HIDE (0x00010000) +#define AW_CENTER (0x00000010) +#define AW_HOR_POSITIVE (0x00000001) +#define AW_HOR_NEGATIVE (0x00000002) +#define AW_VER_POSITIVE (0x00000004) +#define AW_VER_NEGATIVE (0x00000008) + /* Sleep */ #define INFINITE 0xFFFFFFFF diff --git a/reactos/lib/user32/windows/window.c b/reactos/lib/user32/windows/window.c index 2c1382339e9..8bfd288731e 100644 --- a/reactos/lib/user32/windows/window.c +++ b/reactos/lib/user32/windows/window.c @@ -1,4 +1,4 @@ -/* $Id: window.c,v 1.63 2003/08/17 22:45:40 silverblade Exp $ +/* $Id: window.c,v 1.64 2003/08/17 23:48:36 weiden Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS user32.dll @@ -376,15 +376,32 @@ AllowSetForegroundWindow(DWORD dwProcessId) /* - * @unimplemented + * @implemented */ WINBOOL STDCALL AnimateWindow(HWND hwnd, DWORD dwTime, DWORD dwFlags) { - UNIMPLEMENTED; - return FALSE; + /* FIXME Add animation code */ + + /* If trying to show/hide and it's already * + * shown/hidden or invalid window, fail with * + * invalid parameter */ + + BOOL visible; + visible = IsWindowVisible(hwnd); + if(!IsWindow(hwnd) || + (visible && !(dwFlags & AW_HIDE)) || + (!visible && (dwFlags & AW_HIDE))) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + + ShowWindow(hwnd, (dwFlags & AW_HIDE) ? SW_HIDE : ((dwFlags & AW_ACTIVATE) ? SW_SHOW : SW_SHOWNA)); + + return TRUE; }