27#define MSG_APPBAR WM_APP
56 ok(
info !=
NULL,
"got unexpected ABN_POSCHANGED notification\n");
63 if (
info->to_be_deleted)
65 win_skip(
"Some Win95 and NT4 systems send messages to removed taskbars\n");
72 abd.
rc =
info->desired_rect;
78 ok(
info->desired_rect.top == abd.
rc.
top,
"ABM_QUERYPOS changed top of rect from %i to %i\n",
info->desired_rect.top, abd.
rc.
top);
82 ok(
info->desired_rect.right == abd.
rc.
right,
"ABM_QUERYPOS changed right of rect from %i to %i\n",
info->desired_rect.right, abd.
rc.
right);
86 ok(
info->desired_rect.left == abd.
rc.
left,
"ABM_QUERYPOS changed left of rect from %i to %i\n",
info->desired_rect.left, abd.
rc.
left);
90 ok(
info->desired_rect.bottom == abd.
rc.
bottom,
"ABM_QUERYPOS changed bottom of rect from %i to %i\n",
info->desired_rect.bottom, abd.
rc.
bottom);
98 info->allocated_rect = abd.
rc;
139 if (timedout ||
test())
166 for (
j=
i+1;
j<3;
j++)
197#define test_window_rects(a, b) \
198 ok(!IntersectRect(&rc, &windows[a].allocated_rect, &windows[b].allocated_rect), \
199 "rectangles intersect %s / %s\n", wine_dbgstr_rect(&windows[a].allocated_rect), \
200 wine_dbgstr_rect(&windows[b].allocated_rect))
206 int screen_width, screen_height;
261 windows[0].desired_rect.top = screen_height - 20;
322 org_bottom1 =
windows[1].allocated_rect.bottom;
324 "Expected windows[0] to be lower than windows[1]\n");
336 win_skip(
"Some broken Vista boxes don't move the higher appbar down\n");
339 "windows[1]'s bottom is %i, expected %i\n",
366 memset(&abd, 0xcc,
sizeof(abd));
367 memset(&unset_hwnd, 0xcc,
sizeof(unset_hwnd));
373 ok(abd.
hWnd == unset_hwnd,
"hWnd overwritten %p\n",abd.
hWnd);
375 if (!pMonitorFromWindow)
377 win_skip(
"MonitorFromWindow is not available\n");
389 ok(abd.
hWnd == foregnd,
"hWnd overwritten\n");
393 appbar_mon = pMonitorFromWindow(
hwnd, MONITOR_DEFAULTTONEAREST);
394 foregnd_mon = pMonitorFromWindow(foregnd, MONITOR_DEFAULTTONEAREST);
395 ok(appbar_mon == foregnd_mon,
"Windows on different monitors\n");
400 memset(&abd, 0xcc,
sizeof(abd));
405 ok(abd.
hWnd == (
HWND)0xcccccccc,
"hWnd overwritten\n");
408 "uEdge not returned\n");
409 ok(abd.
rc.
left != 0xcccccccc,
"rc not updated\n");
420 if (!pGetCurrentProcessExplicitAppUserModelID)
422 win_skip(
"GetCurrentProcessExplicitAppUserModelID() is not supported.\n");
427 hr = pGetCurrentProcessExplicitAppUserModelID(
NULL);
429 appid = (
void*)0xdeadbeef;
430 hr = pGetCurrentProcessExplicitAppUserModelID(&
appid);
443 pGetCurrentProcessExplicitAppUserModelID = (
void*)
GetProcAddress(hshell32,
"GetCurrentProcessExplicitAppUserModelID");
#define GetProcAddress(x, y)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
UINT_PTR WINAPI SHAppBarMessage(DWORD msg, PAPPBARDATA data)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
static BOOL got_expected_bottom(void)
static BOOL no_appbars_intersect(void)
static LRESULT CALLBACK testwindow_wndproc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
BOOL(* boolean_function)(void)
#define test_window_rects(a, b)
static void test_appbarget(void)
static void register_testwindow_class(void)
static void do_events(void)
static void do_events_until(boolean_function test)
static const CHAR testwindow_class[]
static int expected_bottom
static void testwindow_setpos(HWND hwnd)
static void test_setpos(void)
static void test_GetCurrentProcessExplicitAppUserModelID(void)
static struct testwindow_info windows[3]
unsigned __int3264 UINT_PTR
#define ABM_GETTASKBARPOS
#define ABM_GETAUTOHIDEBAR
TW_UINT32 TW_UINT16 TW_UINT16 MSG
LRESULT WINAPI DispatchMessageA(_In_ const MSG *)
#define SetWindowLongPtrA
BOOL WINAPI IsWindow(_In_opt_ HWND)
BOOL WINAPI TranslateMessage(_In_ const MSG *)
HWND WINAPI CreateWindowExA(_In_ DWORD dwExStyle, _In_opt_ LPCSTR lpClassName, _In_opt_ LPCSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
HWND WINAPI GetForegroundWindow(void)
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define GetWindowLongPtrA
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
ATOM WINAPI RegisterClassExA(_In_ CONST WNDCLASSEXA *)
BOOL WINAPI IntersectRect(_Out_ LPRECT, _In_ LPCRECT, _In_ LPCRECT)
BOOL WINAPI WaitMessage(void)
BOOL WINAPI PeekMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
BOOL WINAPI DestroyWindow(_In_ HWND)
int WINAPI GetSystemMetrics(_In_ int)
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
HCURSOR WINAPI LoadCursorA(_In_opt_ HINSTANCE, _In_ LPCSTR)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)