user32: Add stubs for GetWindowDisplayAffinity and SetWindowDisplayAffinity.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
afe14ab9b0
commit
76f135e599
|
@ -24,7 +24,7 @@
|
|||
@ stdcall GetPropW(long wstr) user32.GetPropW
|
||||
@ stdcall GetShellWindow() user32.GetShellWindow
|
||||
@ stdcall GetWindow(long long) user32.GetWindow
|
||||
@ stub GetWindowDisplayAffinity
|
||||
@ stdcall GetWindowDisplayAffinity(long ptr) user32.GetWindowDisplayAffinity
|
||||
@ stdcall GetWindowInfo(long ptr) user32.GetWindowInfo
|
||||
@ stdcall GetWindowPlacement(long ptr) user32.GetWindowPlacement
|
||||
@ stdcall GetWindowRect(long ptr) user32.GetWindowRect
|
||||
|
@ -43,7 +43,7 @@
|
|||
@ stdcall SetLayeredWindowAttributes(ptr long long long) user32.SetLayeredWindowAttributes
|
||||
@ stdcall SetParent(long long) user32.SetParent
|
||||
@ stdcall SetPropW(long wstr long) user32.SetPropW
|
||||
@ stub SetWindowDisplayAffinity
|
||||
@ stdcall SetWindowDisplayAffinity(long long) user32.SetWindowDisplayAffinity
|
||||
@ stdcall SetWindowPos(long long long long long long long) user32.SetWindowPos
|
||||
@ stdcall SetWindowTextW(long wstr) user32.SetWindowTextW
|
||||
@ stdcall SetWindowsHookExW(long long long long) user32.SetWindowsHookExW
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
@ stdcall GetPropW(long wstr) user32.GetPropW
|
||||
@ stdcall GetShellWindow() user32.GetShellWindow
|
||||
@ stdcall GetWindow(long long) user32.GetWindow
|
||||
@ stub GetWindowDisplayAffinity
|
||||
@ stdcall GetWindowDisplayAffinity(long ptr) user32.GetWindowDisplayAffinity
|
||||
@ stdcall GetWindowInfo(long ptr) user32.GetWindowInfo
|
||||
@ stdcall GetWindowPlacement(long ptr) user32.GetWindowPlacement
|
||||
@ stdcall GetWindowRect(long ptr) user32.GetWindowRect
|
||||
|
@ -43,7 +43,7 @@
|
|||
@ stdcall SetLayeredWindowAttributes(ptr long long long) user32.SetLayeredWindowAttributes
|
||||
@ stdcall SetParent(long long) user32.SetParent
|
||||
@ stdcall SetPropW(long wstr long) user32.SetPropW
|
||||
@ stub SetWindowDisplayAffinity
|
||||
@ stdcall SetWindowDisplayAffinity(long long) user32.SetWindowDisplayAffinity
|
||||
@ stdcall SetWindowPos(long long long long long long long) user32.SetWindowPos
|
||||
@ stdcall SetWindowTextW(long wstr) user32.SetWindowTextW
|
||||
@ stdcall SetWindowsHookExW(long long long long) user32.SetWindowsHookExW
|
||||
|
|
|
@ -67,6 +67,8 @@ static BOOL (WINAPI *pFlashWindowEx)( PFLASHWINFO pfwi );
|
|||
static DWORD (WINAPI *pSetLayout)(HDC hdc, DWORD layout);
|
||||
static DWORD (WINAPI *pGetLayout)(HDC hdc);
|
||||
static BOOL (WINAPI *pMirrorRgn)(HWND hwnd, HRGN hrgn);
|
||||
static BOOL (WINAPI *pGetWindowDisplayAffinity)(HWND hwnd, DWORD *affinity);
|
||||
static BOOL (WINAPI *pSetWindowDisplayAffinity)(HWND hwnd, DWORD affinity);
|
||||
|
||||
static BOOL test_lbuttondown_flag;
|
||||
static DWORD num_gettext_msgs;
|
||||
|
@ -10415,6 +10417,88 @@ if (!is_wine) /* FIXME: remove once Wine is fixed */
|
|||
DestroyWindow(owner);
|
||||
}
|
||||
|
||||
static void test_display_affinity( HWND win )
|
||||
{
|
||||
DWORD affinity;
|
||||
BOOL ret, dwm;
|
||||
LONG styleex;
|
||||
|
||||
if (!pGetWindowDisplayAffinity || !pSetWindowDisplayAffinity)
|
||||
{
|
||||
win_skip("GetWindowDisplayAffinity or SetWindowDisplayAffinity missing\n");
|
||||
return;
|
||||
}
|
||||
|
||||
ret = pGetWindowDisplayAffinity(NULL, NULL);
|
||||
ok(!ret, "GetWindowDisplayAffinity succeeded\n");
|
||||
ok(GetLastError() == ERROR_INVALID_WINDOW_HANDLE, "Expected ERROR_INVALID_WINDOW_HANDLE, got %u\n", GetLastError());
|
||||
|
||||
ret = pGetWindowDisplayAffinity(NULL, &affinity);
|
||||
ok(!ret, "GetWindowDisplayAffinity succeeded\n");
|
||||
ok(GetLastError() == ERROR_INVALID_WINDOW_HANDLE, "Expected ERROR_INVALID_WINDOW_HANDLE, got %u\n", GetLastError());
|
||||
|
||||
ret = pGetWindowDisplayAffinity(win, NULL);
|
||||
ok(!ret, "GetWindowDisplayAffinity succeeded\n");
|
||||
ok(GetLastError() == ERROR_NOACCESS, "Expected ERROR_NOACCESS, got %u\n", GetLastError());
|
||||
|
||||
styleex = GetWindowLongW(win, GWL_EXSTYLE);
|
||||
SetWindowLongW(win, GWL_EXSTYLE, styleex & ~WS_EX_LAYERED);
|
||||
|
||||
affinity = 0xdeadbeef;
|
||||
ret = pGetWindowDisplayAffinity(win, &affinity);
|
||||
ok(ret, "GetWindowDisplayAffinity failed with %u\n", GetLastError());
|
||||
ok(affinity == WDA_NONE, "Expected WDA_NONE, got 0x%x\n", affinity);
|
||||
|
||||
/* Windows 7 fails with ERROR_NOT_ENOUGH_MEMORY when dwm compositing is disabled */
|
||||
ret = pSetWindowDisplayAffinity(win, WDA_MONITOR);
|
||||
ok(ret || GetLastError() == ERROR_NOT_ENOUGH_MEMORY,
|
||||
"SetWindowDisplayAffinity failed with %u\n", GetLastError());
|
||||
dwm = ret;
|
||||
|
||||
affinity = 0xdeadbeef;
|
||||
ret = pGetWindowDisplayAffinity(win, &affinity);
|
||||
ok(ret, "GetWindowDisplayAffinity failed with %u\n", GetLastError());
|
||||
if (dwm) ok(affinity == WDA_MONITOR, "Expected WDA_MONITOR, got 0x%x\n", affinity);
|
||||
else ok(affinity == WDA_NONE, "Expected WDA_NONE, got 0x%x\n", affinity);
|
||||
|
||||
ret = pSetWindowDisplayAffinity(win, WDA_NONE);
|
||||
ok(ret || GetLastError() == ERROR_NOT_ENOUGH_MEMORY,
|
||||
"SetWindowDisplayAffinity failed with %u\n", GetLastError());
|
||||
|
||||
affinity = 0xdeadbeef;
|
||||
ret = pGetWindowDisplayAffinity(win, &affinity);
|
||||
ok(ret, "GetWindowDisplayAffinity failed with %u\n", GetLastError());
|
||||
ok(affinity == WDA_NONE, "Expected WDA_NONE, got 0x%x\n", affinity);
|
||||
|
||||
SetWindowLongW(win, GWL_EXSTYLE, styleex | WS_EX_LAYERED);
|
||||
|
||||
affinity = 0xdeadbeef;
|
||||
ret = pGetWindowDisplayAffinity(win, &affinity);
|
||||
ok(ret, "GetWindowDisplayAffinity failed with %u\n", GetLastError());
|
||||
ok(affinity == WDA_NONE, "Expected WDA_NONE, got 0x%x\n", affinity);
|
||||
|
||||
ret = pSetWindowDisplayAffinity(win, WDA_MONITOR);
|
||||
ok(ret || GetLastError() == ERROR_NOT_ENOUGH_MEMORY,
|
||||
"SetWindowDisplayAffinity failed with %u\n", GetLastError());
|
||||
|
||||
affinity = 0xdeadbeef;
|
||||
ret = pGetWindowDisplayAffinity(win, &affinity);
|
||||
ok(ret, "GetWindowDisplayAffinity failed with %u\n", GetLastError());
|
||||
if (dwm) ok(affinity == WDA_MONITOR, "Expected WDA_MONITOR, got 0x%x\n", affinity);
|
||||
else ok(affinity == WDA_NONE, "Expected WDA_NONE, got 0x%x\n", affinity);
|
||||
|
||||
ret = pSetWindowDisplayAffinity(win, WDA_NONE);
|
||||
ok(ret || GetLastError() == ERROR_NOT_ENOUGH_MEMORY,
|
||||
"SetWindowDisplayAffinity failed with %u\n", GetLastError());
|
||||
|
||||
affinity = 0xdeadbeef;
|
||||
ret = pGetWindowDisplayAffinity(win, &affinity);
|
||||
ok(ret, "GetWindowDisplayAffinity failed with %u\n", GetLastError());
|
||||
ok(affinity == WDA_NONE, "Expected WDA_NONE, got 0x%x\n", affinity);
|
||||
|
||||
SetWindowLongW(win, GWL_EXSTYLE, styleex);
|
||||
}
|
||||
|
||||
START_TEST(win)
|
||||
{
|
||||
char **argv;
|
||||
|
@ -10439,6 +10523,8 @@ START_TEST(win)
|
|||
pGetLayout = (void *)GetProcAddress( gdi32, "GetLayout" );
|
||||
pSetLayout = (void *)GetProcAddress( gdi32, "SetLayout" );
|
||||
pMirrorRgn = (void *)GetProcAddress( gdi32, "MirrorRgn" );
|
||||
pGetWindowDisplayAffinity = (void *)GetProcAddress( user32, "GetWindowDisplayAffinity" );
|
||||
pSetWindowDisplayAffinity = (void *)GetProcAddress( user32, "SetWindowDisplayAffinity" );
|
||||
|
||||
if (argc==4 && !strcmp(argv[2], "create_children"))
|
||||
{
|
||||
|
@ -10563,6 +10649,7 @@ START_TEST(win)
|
|||
test_deferwindowpos();
|
||||
test_LockWindowUpdate(hwndMain);
|
||||
test_desktop();
|
||||
test_display_affinity(hwndMain);
|
||||
test_hide_window();
|
||||
test_minimize_window(hwndMain);
|
||||
|
||||
|
|
|
@ -388,6 +388,7 @@
|
|||
@ stdcall GetWindow(long long)
|
||||
@ stdcall GetWindowContextHelpId(long)
|
||||
@ stdcall GetWindowDC(long)
|
||||
@ stdcall GetWindowDisplayAffinity(long ptr)
|
||||
@ stdcall GetWindowInfo(long ptr)
|
||||
@ stdcall GetWindowLongA(long long)
|
||||
@ stdcall -arch=win64 GetWindowLongPtrA(long long)
|
||||
|
@ -691,6 +692,7 @@
|
|||
@ stdcall SetUserObjectSecurity(long ptr ptr)
|
||||
@ stdcall SetWinEventHook(long long long ptr long long long)
|
||||
@ stdcall SetWindowContextHelpId(long long)
|
||||
@ stdcall SetWindowDisplayAffinity(long long)
|
||||
@ stub SetWindowFullScreenState
|
||||
@ stdcall SetWindowLongA(long long long)
|
||||
@ stdcall -arch=win64 SetWindowLongPtrA(long long long)
|
||||
|
|
|
@ -4029,3 +4029,37 @@ BOOL WINAPI GetGestureInfo(HGESTUREINFO handle, PGESTUREINFO ptr)
|
|||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* GetWindowDisplayAffinity (USER32.@)
|
||||
*/
|
||||
BOOL WINAPI GetWindowDisplayAffinity(HWND hwnd, DWORD *affinity)
|
||||
{
|
||||
FIXME("(%p, %p): stub\n", hwnd, affinity);
|
||||
|
||||
if (!hwnd || !affinity)
|
||||
{
|
||||
SetLastError(hwnd ? ERROR_NOACCESS : ERROR_INVALID_WINDOW_HANDLE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
*affinity = WDA_NONE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* SetWindowDisplayAffinity (USER32.@)
|
||||
*/
|
||||
BOOL WINAPI SetWindowDisplayAffinity(HWND hwnd, DWORD affinity)
|
||||
{
|
||||
FIXME("(%p, %u): stub\n", hwnd, affinity);
|
||||
|
||||
if (!hwnd)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_WINDOW_HANDLE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
@ -2533,6 +2533,9 @@ typedef struct tagMINIMIZEDMETRICS {
|
|||
int iArrange;
|
||||
} MINIMIZEDMETRICS, *PMINIMIZEDMETRICS, *LPMINIMIZEDMETRICS;
|
||||
|
||||
/* Window affinity */
|
||||
#define WDA_NONE 0x0
|
||||
#define WDA_MONITOR 0x1
|
||||
|
||||
/* Window scrolling */
|
||||
#define SW_SCROLLCHILDREN 0x0001
|
||||
|
@ -3771,6 +3774,7 @@ WINUSERAPI BOOL WINAPI GetUserObjectSecurity(HANDLE,PSECURITY_INFORMATION
|
|||
WINUSERAPI HWND WINAPI GetWindow(HWND,UINT);
|
||||
WINUSERAPI DWORD WINAPI GetWindowContextHelpId(HWND);
|
||||
WINUSERAPI HDC WINAPI GetWindowDC(HWND);
|
||||
WINUSERAPI BOOL WINAPI GetWindowDisplayAffinity(HWND,DWORD*);
|
||||
WINUSERAPI BOOL WINAPI GetWindowInfo(HWND, PWINDOWINFO);
|
||||
WINUSERAPI LONG WINAPI GetWindowLongA(HWND,INT);
|
||||
WINUSERAPI LONG WINAPI GetWindowLongW(HWND,INT);
|
||||
|
@ -4073,6 +4077,7 @@ WINUSERAPI BOOL WINAPI SetUserObjectInformationW(HANDLE,INT,LPVOID,DWORD)
|
|||
#define SetUserObjectInformation WINELIB_NAME_AW(SetUserObjectInformation)
|
||||
WINUSERAPI BOOL WINAPI SetUserObjectSecurity(HANDLE,PSECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
|
||||
WINUSERAPI BOOL WINAPI SetWindowContextHelpId(HWND,DWORD);
|
||||
WINUSERAPI BOOL WINAPI SetWindowDisplayAffinity(HWND,DWORD);
|
||||
WINUSERAPI LONG WINAPI SetWindowLongA(HWND,INT,LONG);
|
||||
WINUSERAPI LONG WINAPI SetWindowLongW(HWND,INT,LONG);
|
||||
#define SetWindowLong WINELIB_NAME_AW(SetWindowLong)
|
||||
|
|
Loading…
Reference in New Issue