25#define _WIN32_WINNT 0x500
26#define _WIN32_IE 0x500
46#define check_rect(name, val, exp) ok(EqualRect(&val, &exp), \
47 "invalid rect (" name ") %s - expected %s\n", wine_dbgstr_rect(&val), wine_dbgstr_rect(&exp));
49#define check_rect_no_top(name, val, exp) { \
50 ok((val.bottom - val.top == exp.bottom - exp.top) && \
51 val.left == exp.left && val.right == exp.right, \
52 "invalid rect (" name ") %s - expected %s, ignoring top\n", \
53 wine_dbgstr_rect(&val), wine_dbgstr_rect(&exp)); }
55#define compare(val, exp, format) ok((val) == (exp), #val " value " format " expected " format "\n", (val), (exp));
57#define expect_eq(line, expr, value, type, format) { type ret = expr;\
58 ok((value) == ret, #expr " expected " format " got " format " from line %d\n", (value), (ret), line); }
109 ok(hToolbar !=
NULL,
"Toolbar creation problem\n");
114 for (
i=0;
i<5+
nr;
i++)
156static void dump_sizes(
HWND hRebar)
165 printf(
" { {%d, %d, %d, %d}, %d, %d, {",
r.left,
r.top,
r.right,
r.bottom,
176 printf(
"{{0, 0, 0, 0}, 0, 0},");
184 printf(
"%s{ {%3d, %3d, %3d, %3d}, 0x%02x, %d}, ", (
i%2==0 ?
"\n " :
""),
r.left,
r.top,
r.right,
r.bottom,
190#define check_sizes() dump_sizes(hRebar);
191#define check_sizes_todo(todomask) dump_sizes(hRebar);
225 SetRect(&
ret.rcClient, cleft, ctop, cright, cbottom);
226 ret.cyBarHeight = cyBarHeight;
228 ret.cyRowHeights = heap_alloc_zero(
nRows *
sizeof(
int));
230 ret.bands = heap_alloc_zero(nBands *
sizeof(*
ret.bands));
250#define rbsize_results_num 27
450#define check_sizes_todo(todomask) { \
452 REBARBANDINFOA rbi; \
454 const rbsize_result_t *res = &rbsize_results[rbsize_numtests]; \
455 GetClientRect(hRebar, &rc); \
456 check_rect("client", rc, res->rcClient); \
457 count = SendMessageA(hRebar, RB_GETROWCOUNT, 0, 0); \
458 compare(count, res->nRows, "%d"); \
459 for (i=0; i<min(count, res->nRows); i++) { \
460 int height = SendMessageA(hRebar, RB_GETROWHEIGHT, 0, 0);\
461 ok(height == res->cyRowHeights[i], "Height mismatch for row %d - %d vs %d\n", i, res->cyRowHeights[i], height); \
463 count = SendMessageA(hRebar, RB_GETBANDCOUNT, 0, 0); \
464 compare(count, res->nBands, "%d"); \
465 for (i=0; i<min(count, res->nBands); i++) { \
466 ok(SendMessageA(hRebar, RB_GETRECT, i, (LPARAM)&rc) == 1, "RB_GETRECT\n"); \
467 if (!(res->bands[i].fStyle & RBBS_HIDDEN)) \
468 check_rect("band", rc, res->bands[i].rc); \
469 rbi.cbSize = REBARBANDINFOA_V6_SIZE; \
470 rbi.fMask = RBBIM_STYLE | RBBIM_SIZE; \
471 ok(SendMessageA(hRebar, RB_GETBANDINFOA, i, (LPARAM)&rbi) == 1, "RB_GETBANDINFOA\n"); \
472 compare(rbi.fStyle, res->bands[i].fStyle, "%x"); \
473 compare(rbi.cx, res->bands[i].cx, "%d"); \
478#define check_sizes() check_sizes_todo(0)
487 if (lpszText !=
NULL)
669 pImageList_Destroy(
himl);
693static void dump_client(
HWND hRebar)
708 printf(
" {{%d, %d, %d, %d}, %d, %s},\n",
r.left,
r.top,
r.right,
r.bottom,
SendMessageA(hRebar,
RB_GETROWCOUNT, 0, 0),
709 notify ?
"TRUE" :
"FALSE");
713#define comment(fmt, arg1) printf("/* " fmt " */\n", arg1);
714#define check_client() dump_client(hRebar)
726 {{0, 2, 672, 2}, 0,
FALSE},
727 {{0, 2, 672, 22}, 1,
TRUE},
728 {{0, 2, 672, 22}, 1,
FALSE},
729 {{0, 2, 672, 22}, 1,
FALSE},
730 {{0, 2, 672, 22}, 1,
FALSE},
731 {{0, 2, 672, 22}, 0,
FALSE},
733 {{0, 0, 672, 0}, 0,
FALSE},
734 {{0, 0, 672, 20}, 1,
TRUE},
735 {{0, 0, 672, 20}, 1,
FALSE},
736 {{0, 0, 672, 20}, 1,
FALSE},
737 {{0, 0, 672, 20}, 1,
FALSE},
738 {{0, 0, 672, 20}, 0,
FALSE},
740 {{0, 226, 672, 226}, 0,
FALSE},
741 {{0, 206, 672, 226}, 1,
TRUE},
742 {{0, 206, 672, 226}, 1,
FALSE},
743 {{0, 206, 672, 226}, 1,
FALSE},
744 {{0, 206, 672, 226}, 1,
FALSE},
745 {{0, 206, 672, 226}, 0,
FALSE},
747 {{0, 226, 672, 226}, 0,
FALSE},
748 {{0, 206, 672, 226}, 1,
TRUE},
749 {{0, 206, 672, 226}, 1,
FALSE},
750 {{0, 206, 672, 226}, 1,
FALSE},
751 {{0, 206, 672, 226}, 1,
FALSE},
752 {{0, 206, 672, 226}, 0,
FALSE},
754 {{2, 0, 2, 226}, 0,
FALSE},
755 {{2, 0, 22, 226}, 1,
TRUE},
756 {{2, 0, 22, 226}, 1,
FALSE},
757 {{2, 0, 22, 226}, 1,
FALSE},
758 {{2, 0, 22, 226}, 1,
FALSE},
759 {{2, 0, 22, 226}, 0,
FALSE},
761 {{672, 0, 672, 226}, 0,
FALSE},
762 {{652, 0, 672, 226}, 1,
TRUE},
763 {{652, 0, 672, 226}, 1,
FALSE},
764 {{652, 0, 672, 226}, 1,
FALSE},
765 {{652, 0, 672, 226}, 1,
FALSE},
766 {{652, 0, 672, 226}, 0,
FALSE},
768 {{10, 11, 510, 11}, 0,
FALSE},
769 {{10, 15, 510, 35}, 1,
TRUE},
770 {{10, 17, 510, 37}, 1,
FALSE},
771 {{10, 14, 110, 54}, 2,
TRUE},
772 {{0, 4, 0, 44}, 2,
FALSE},
773 {{0, 6, 0, 46}, 2,
FALSE},
774 {{0, 8, 0, 48}, 2,
FALSE},
775 {{0, 12, 0, 32}, 1,
TRUE},
776 {{0, 4, 100, 24}, 0,
FALSE},
778 {{10, 5, 510, 5}, 0,
FALSE},
779 {{10, 5, 510, 25}, 1,
TRUE},
780 {{10, 5, 510, 25}, 1,
FALSE},
781 {{10, 10, 110, 50}, 2,
TRUE},
782 {{0, 0, 0, 40}, 2,
FALSE},
783 {{0, 0, 0, 40}, 2,
FALSE},
784 {{0, 0, 0, 40}, 2,
FALSE},
785 {{0, 0, 0, 20}, 1,
TRUE},
786 {{0, 0, 100, 20}, 0,
FALSE},
788 {{10, 5, 510, 20}, 0,
FALSE},
789 {{10, 5, 510, 20}, 1,
TRUE},
790 {{10, 10, 110, 110}, 2,
TRUE},
791 {{0, 0, 0, 0}, 2,
FALSE},
792 {{0, 0, 0, 0}, 2,
FALSE},
793 {{0, 0, 0, 0}, 2,
FALSE},
794 {{0, 0, 0, 0}, 1,
TRUE},
795 {{0, 0, 100, 100}, 0,
FALSE},
797 {{0, 5, 672, 5}, 0,
FALSE},
798 {{0, 5, 672, 25}, 1,
TRUE},
799 {{0, 10, 672, 30}, 1,
FALSE},
800 {{0, 0, 672, 20}, 1,
FALSE},
801 {{0, 0, 672, 20}, 1,
FALSE},
802 {{0, 0, 672, 20}, 0,
FALSE},
804 {{10, 0, 10, 226}, 0,
FALSE},
805 {{10, 0, 30, 226}, 1,
TRUE},
806 {{10, 0, 30, 226}, 1,
FALSE},
807 {{0, 0, 20, 226}, 1,
FALSE},
808 {{0, 0, 20, 226}, 1,
FALSE},
809 {{0, 0, 20, 226}, 0,
FALSE},
811 {{-2, 0, 674, 4}, 0,
FALSE},
812 {{-2, 0, 674, 24}, 1,
TRUE},
813 {{-2, 0, 674, 24}, 1,
FALSE},
814 {{-2, 0, 674, 24}, 1,
FALSE},
815 {{-2, 0, 674, 24}, 1,
FALSE},
816 {{-2, 0, 674, 24}, 0,
FALSE},
818 {{10, 5, 510, 9}, 0,
FALSE},
819 {{10, 5, 510, 29}, 1,
TRUE},
820 {{10, 5, 510, 29}, 1,
FALSE},
821 {{10, 10, 110, 54}, 2,
TRUE},
822 {{0, 0, 0, 44}, 2,
FALSE},
823 {{0, 0, 0, 44}, 2,
FALSE},
824 {{0, 0, 0, 44}, 2,
FALSE},
825 {{0, 0, 0, 24}, 1,
TRUE},
826 {{0, 0, 100, 24}, 0,
FALSE},
828 {{10, 5, 510, 20}, 0,
FALSE},
829 {{10, 5, 510, 20}, 1,
TRUE},
830 {{10, 10, 110, 110}, 2,
TRUE},
831 {{0, 0, 0, 0}, 2,
FALSE},
832 {{0, 0, 0, 0}, 2,
FALSE},
833 {{0, 0, 0, 0}, 2,
FALSE},
834 {{0, 0, 0, 0}, 1,
TRUE},
835 {{0, 0, 100, 100}, 0,
FALSE},
837 {{-2, 5, 674, 9}, 0,
FALSE},
838 {{-2, 5, 674, 29}, 1,
TRUE},
839 {{-2, 10, 674, 34}, 1,
FALSE},
840 {{-2, 0, 674, 24}, 1,
FALSE},
841 {{-2, 0, 674, 24}, 1,
FALSE},
842 {{-2, 0, 674, 24}, 0,
FALSE},
847#define comment(fmt, arg1)
848#define check_client() { \
851 const rbresize_test_result_t *res = &resize_results[resize_numtests++]; \
852 assert(resize_numtests <= ARRAY_SIZE(resize_results)); \
853 GetWindowRect(hRebar, &r); \
854 MapWindowPoints(HWND_DESKTOP, hMainWnd, (LPPOINT)&r, 2); \
855 if ((dwStyles[i] & (CCS_NOPARENTALIGN|CCS_NODIVIDER)) == CCS_NOPARENTALIGN) {\
856 check_rect_no_top("client", r, res->rc);
\
858 check_rect("client", r, res->rc); \
860 value = (int)SendMessageA(hRebar, RB_GETROWCOUNT, 0, 0); \
861 ok(res->iNumRows == value, "RB_GETROWCOUNT expected %d got %d\n", res->iNumRows, value); \
862 if (res->heightNotify) { \
864 GetClientRect(hRebar, &rcClient); \
865 check_rect("notify", height_change_notify_rect, rcClient); \
866 } else ok(height_change_notify_rect.top == -1, "Unexpected RBN_HEIGHTCHANGE received\n"); \
867 SetRect(&height_change_notify_rect, -1, -1, -1, -1); \
879 const int styles_count =
ARRAY_SIZE(dwStyles);
882 for (
i = 0;
i < styles_count;
i++)
888 hRebar =
CreateWindowA(
REBARCLASSNAMEA,
"A", dwStyles[
i] |
WS_CHILD |
WS_VISIBLE, 10, 5, 500, 15,
hMainWnd,
NULL,
GetModuleHandleA(
NULL), 0);
929 UINT cxHeader,
UINT cxHeader_broken)
934 memset(&rb, 0xdd,
sizeof(rb));
960 "expected %d for %d from line %d\n", cxHeader, rb.
cxHeader,
line);
963#define expect_band_content(hRebar, uBand, fStyle, clrFore, clrBack,\
964 lpText, iImage, hwndChild, cxMinChild, cyMinChild, cx, hbmBack, wID,\
965 cyChild, cyMaxChild, cyIntegral, cxIdeal, lParam, cxHeader, cxHeader_broken) \
966 expect_band_content_(__LINE__, hRebar, uBand, fStyle, clrFore, clrBack,\
967 lpText, iImage, hwndChild, cxMinChild, cyMinChild, cx, hbmBack, wID,\
968 cyChild, cyMaxChild, cyIntegral, cxIdeal, lParam, cxHeader, cxHeader_broken)
973 CHAR szABC[] =
"ABC";
974 CHAR szABCD[] =
"ABCD";
982 win_skip(
"V6 info not supported\n" );
986 expect_band_content(hRebar, 0, 0, 0,
GetSysColor(
COLOR_3DFACE),
"", -1,
NULL, 0, 0, 0,
NULL, 0, 0xdddddddd, 0xdddddddd, 0xdddddddd, 0, 0, 0, -1);
995 expect_band_content(hRebar, 0, 0, 0,
GetSysColor(
COLOR_3DFACE),
"", -1,
NULL, 15, 20, 0,
NULL, 0, 0xdddddddd, 0xdddddddd, 0xdddddddd, 0, 0, 0, -1);
1000 expect_band_content(hRebar, 0, 0, 0,
GetSysColor(
COLOR_3DFACE),
"ABC", -1,
NULL, 15, 20, 0,
NULL, 0, 0xdddddddd, 0xdddddddd, 0xdddddddd, 0, 0, 3 + 2*
system_font_height, -1);
1005 expect_band_content(hRebar, 1, 0, 0,
GetSysColor(
COLOR_3DFACE),
"", -1,
NULL, 0, 0, 0,
NULL, 0, 0xdddddddd, 0xdddddddd, 0xdddddddd, 0, 0, 9, -1);
1006 expect_band_content(hRebar, 0, 0, 0,
GetSysColor(
COLOR_3DFACE),
"ABC", -1,
NULL, 15, 20, 0,
NULL, 0, 0xdddddddd, 0xdddddddd, 0xdddddddd, 0, 0, 8 + 2*
system_font_height, -1);
1011 expect_band_content(hRebar, 0, 0x40000000, 0,
GetSysColor(
COLOR_3DFACE),
"ABC", -1,
NULL, 15, 20, 0,
NULL, 0, 0xdddddddd, 0xdddddddd, 0xdddddddd, 0, 0, 50, -1);
1015 expect_band_content(hRebar, 0, 0x40000000, 0,
GetSysColor(
COLOR_3DFACE),
"ABC", -1,
NULL, 15, 20, 0,
NULL, 0, 0xdddddddd, 0xdddddddd, 0xdddddddd, 0, 0, 5, -1);
1020 expect_band_content(hRebar, 0, 0x40000000, 0,
GetSysColor(
COLOR_3DFACE),
"ABCD", -1,
NULL, 15, 20, 0,
NULL, 0, 0xdddddddd, 0xdddddddd, 0xdddddddd, 0, 0, 5, -1);
1025 expect_band_content(hRebar, 0,
RBBS_VARIABLEHEIGHT, 0,
GetSysColor(
COLOR_3DFACE),
"ABC", -1,
NULL, 15, 20, 0,
NULL, 0, 20, 0x7fffffff, 0, 0, 0, 8 + 2*
system_font_height, 5);
1047 scheme.clrBtnHighlight = 0;
1056 skip(
"RB_GETCOLORSCHEME not supported\n");
1064 ok(
ret,
"RB_GETBANDINFOA failed\n");
1071 ok(
ret,
"RB_GETBANDINFOA failed\n");
1159#define X(f) p##f = (void*)GetProcAddress(hComCtl32, #f);
1181 skip(
"Missing System or Tahoma font\n");
int strcmp(const char *String1, const char *String2)
ACPI_SIZE strlen(const char *String)
char * strcpy(char *DstString, const char *SrcString)
static void * heap_alloc(size_t len)
static BOOL heap_free(void *mem)
HIMAGELIST WINAPI ImageList_LoadImageA(HINSTANCE hi, LPCSTR lpbmp, INT cx, INT cGrow, COLORREF clrMask, UINT uType, UINT uFlags)
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
GLuint GLuint GLsizei GLenum type
GLuint GLuint GLsizei count
GLdouble GLdouble GLdouble r
GLdouble GLdouble GLdouble GLdouble top
GLenum GLuint GLenum GLsizei const GLchar * buf
GLfloat GLfloat GLfloat GLfloat h
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
static rbsize_result_t rbsize_init(int cleft, int ctop, int cright, int cbottom, int cyBarHeight, int nRows, int nBands)
static HWND create_parent_window(void)
static HWND create_rebar_control(void)
static void test_bandinfo(void)
static void expect_band_content_(int line, HWND hRebar, UINT uBand, INT fStyle, COLORREF clrFore, COLORREF clrBack, LPCSTR lpText, int iImage, HWND hwndChild, INT cxMinChild, INT cyMinChild, INT cx, HBITMAP hbmBack, INT wID, INT cyChild, INT cyMaxChild, INT cyIntegral, INT cxIdeal, LPARAM lParam, UINT cxHeader, UINT cxHeader_broken)
static void rbsize_results_init(void)
static INT CALLBACK is_font_installed_proc(const LOGFONTA *elf, const TEXTMETRICA *ntm, DWORD type, LPARAM lParam)
static void test_layout(void)
static BOOL register_parent_wnd_class(void)
static RECT height_change_notify_rect
static void test_showband(void)
static rbsize_result_t * rbsize_results
#define expect_band_content(hRebar, uBand, fStyle, clrFore, clrBack, lpText, iImage, hwndChild, cxMinChild, cyMinChild, cx, hbmBack, wID, cyChild, cyMaxChild, cyIntegral, cxIdeal, lParam, cxHeader, cxHeader_broken)
#define compare(val, exp, format)
static void test_colors(void)
static const rbresize_test_result_t resize_results[]
static void add_band_w(HWND hRebar, LPCSTR lpszText, int cxMinChild, int cx, int cxIdeal)
static int rbsize_numtests
static void init_system_font_height(void)
#define comment(fmt, arg1)
static void rbsize_results_free(void)
static void test_notification(void)
static void test_resize(void)
static void rbsize_add_band(rbsize_result_t *rbsr, int left, int top, int right, int bottom, DWORD fStyle, UINT cx)
#define expect_eq(line, expr, value, type, format)
static int g_parent_measureitem
static LRESULT CALLBACK parent_wndproc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static int system_font_height
static int string_width(const CHAR *s)
static void rbsize_add_row(rbsize_result_t *rbsr, int rowHeight)
static void init_functions(void)
static BOOL is_font_installed(const char *name)
#define rbsize_results_num
static DWORD resize_numtests
static HWND build_toolbar(int nr, HWND hParent)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
#define WS_OVERLAPPEDWINDOW
#define RB_GETCOLORSCHEME
#define IDB_HIST_SMALL_COLOR
struct _IMAGELIST * HIMAGELIST
#define IDB_VIEW_SMALL_COLOR
#define TB_BUTTONSTRUCTSIZE
#define REBARBANDINFOA_V6_SIZE
#define CCS_NOPARENTALIGN
#define TOOLBARCLASSNAMEA
#define RBBS_VARIABLEHEIGHT
#define IDB_STD_SMALL_COLOR
TW_UINT32 TW_UINT16 TW_UINT16 MSG
HGDIOBJ WINAPI GetStockObject(_In_ int)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
int WINAPI EnumFontFamiliesA(_In_ HDC, _In_opt_ LPCSTR, _In_ FONTENUMPROCA, _In_ LPARAM)
BOOL WINAPI GetTextMetricsA(_In_ HDC, _Out_ LPTEXTMETRICA)
BOOL WINAPI DeleteDC(_In_ HDC)
BOOL WINAPI GetTextExtentPoint32A(_In_ HDC hdc, _In_reads_(c) LPCSTR lpString, _In_ int c, _Out_ LPSIZE psizl)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
LRESULT WINAPI DispatchMessageA(_In_ const MSG *)
DWORD WINAPI GetSysColor(_In_ int)
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)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
LONG WINAPI GetWindowLongA(_In_ HWND, _In_ int)
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WM_WINDOWPOSCHANGING
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
LONG WINAPI SetWindowLongA(_In_ HWND, _In_ int, _In_ LONG)
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
HBRUSH WINAPI GetSysColorBrush(_In_ int)
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
ATOM WINAPI RegisterClassA(_In_ CONST WNDCLASSA *)
HDC WINAPI GetDC(_In_opt_ HWND)
#define MAKEINTRESOURCEA(i)
BOOL WINAPI GetMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
#define WM_WINDOWPOSCHANGED
BOOL WINAPI DestroyWindow(_In_ HWND)
BOOL WINAPI EqualRect(_In_ LPCRECT, _In_ LPCRECT)
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)