user32/tests: Add layered window child painting test when WS_CLIPCHILDREN flag is specified.
Signed-off-by: Piotr Caban <piotr@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
34b108dd1d
commit
f7402accc4
|
@ -7317,7 +7317,7 @@ static void test_hwnd_message(void)
|
||||||
|
|
||||||
static void test_layered_window(void)
|
static void test_layered_window(void)
|
||||||
{
|
{
|
||||||
HWND hwnd;
|
HWND hwnd, child;
|
||||||
COLORREF key = 0;
|
COLORREF key = 0;
|
||||||
BYTE alpha = 0;
|
BYTE alpha = 0;
|
||||||
DWORD flags = 0;
|
DWORD flags = 0;
|
||||||
|
@ -7326,6 +7326,7 @@ static void test_layered_window(void)
|
||||||
HDC hdc;
|
HDC hdc;
|
||||||
HBITMAP hbm;
|
HBITMAP hbm;
|
||||||
BOOL ret;
|
BOOL ret;
|
||||||
|
MSG msg;
|
||||||
|
|
||||||
if (!pGetLayeredWindowAttributes || !pSetLayeredWindowAttributes || !pUpdateLayeredWindow)
|
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( alpha == 0 || alpha == 55, "wrong alpha %u\n", alpha );
|
||||||
ok( flags == 0, "wrong flags %x\n", flags );
|
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 );
|
DestroyWindow( hwnd );
|
||||||
DeleteDC( hdc );
|
DeleteDC( hdc );
|
||||||
DeleteObject( hbm );
|
DeleteObject( hbm );
|
||||||
|
|
Loading…
Reference in New Issue