Piotr Caban : user32/tests: Add layered window child painting test when WS_CLIPCHILDREN flag is specified.
Alexandre Julliard
julliard at winehq.org
Wed Apr 19 14:49:39 CDT 2017
Module: wine
Branch: master
Commit: f7402accc40b66140be4d27c5ad1b2fee8532dfc
URL: http://source.winehq.org/git/wine.git/?a=commit;h=f7402accc40b66140be4d27c5ad1b2fee8532dfc
Author: Piotr Caban <piotr at codeweavers.com>
Date: Tue Apr 18 18:43:29 2017 +0200
user32/tests: Add layered window child painting test when WS_CLIPCHILDREN flag is specified.
Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/user32/tests/win.c | 37 ++++++++++++++++++++++++++++++++++++-
1 file changed, 36 insertions(+), 1 deletion(-)
diff --git a/dlls/user32/tests/win.c b/dlls/user32/tests/win.c
index fef9cb0..e146e96 100644
--- a/dlls/user32/tests/win.c
+++ b/dlls/user32/tests/win.c
@@ -7317,7 +7317,7 @@ static void test_hwnd_message(void)
static void test_layered_window(void)
{
- HWND hwnd;
+ HWND hwnd, child;
COLORREF key = 0;
BYTE alpha = 0;
DWORD flags = 0;
@@ -7326,6 +7326,7 @@ static void test_layered_window(void)
HDC hdc;
HBITMAP hbm;
BOOL ret;
+ MSG msg;
if (!pGetLayeredWindowAttributes || !pSetLayeredWindowAttributes || !pUpdateLayeredWindow)
{
@@ -7465,6 +7466,40 @@ static void test_layered_window(void)
ok( alpha == 0 || alpha == 55, "wrong alpha %u\n", alpha );
ok( flags == 0, "wrong flags %x\n", flags );
+ /* test layered window with WS_CLIPCHILDREN flag */
+ SetWindowLongA( hwnd, GWL_STYLE, GetWindowLongA(hwnd, GWL_STYLE) | WS_CLIPCHILDREN );
+ SetWindowLongA( hwnd, GWL_EXSTYLE, GetWindowLongA(hwnd, GWL_EXSTYLE) & ~WS_EX_LAYERED );
+ SetWindowLongA( hwnd, GWL_EXSTYLE, GetWindowLongA(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED );
+ child = CreateWindowExA( 0, "button", "button", WS_VISIBLE | WS_CHILD,
+ 0, 0, 50, 50, hwnd, 0, 0, NULL );
+ ok( child != NULL, "CreateWindowEx error %u\n", GetLastError() );
+ ShowWindow( hwnd, SW_SHOW );
+
+ ret = pSetLayeredWindowAttributes( hwnd, 0, 255, LWA_ALPHA );
+ ok( ret, "SetLayeredWindowAttributes should succeed on layered window\n" );
+ while (GetMessageA(&msg, 0, 0, 0))
+ {
+ DispatchMessageA(&msg);
+
+ if (msg.message == WM_PAINT && msg.hwnd == child)
+ break;
+ }
+
+ SetWindowLongA( hwnd, GWL_EXSTYLE, GetWindowLongA(hwnd, GWL_EXSTYLE) & ~WS_EX_LAYERED );
+ SetWindowLongA( hwnd, GWL_EXSTYLE, GetWindowLongA(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED );
+ ret = pUpdateLayeredWindow( hwnd, 0, NULL, &sz, hdc, &pt, 0, NULL, ULW_OPAQUE );
+ ok( ret, "UpdateLayeredWindow should succeed on layered window\n" );
+
+ ret = pSetLayeredWindowAttributes( hwnd, 0, 255, LWA_ALPHA );
+ ok( ret, "SetLayeredWindowAttributes should succeed on layered window\n" );
+ while (GetMessageA(&msg, 0, 0, 0))
+ {
+ DispatchMessageA(&msg);
+
+ if (msg.message == WM_PAINT && msg.hwnd == child)
+ break;
+ }
+
DestroyWindow( hwnd );
DeleteDC( hdc );
DeleteObject( hbm );
More information about the wine-cvs
mailing list