38#define check_rect(name, val, exp) ok(EqualRect(&val, &exp), \
39 "invalid rect (" name ") %s - expected %s\n", wine_dbgstr_rect(&val), wine_dbgstr_rect(&exp));
41#define check_rect_no_top(name, val, exp) { \
42 ok((val.bottom - val.top == exp.bottom - exp.top) && \
43 val.left == exp.left && val.right == exp.right, \
44 "invalid rect (" name ") %s - expected %s, ignoring top\n", \
45 wine_dbgstr_rect(&val), wine_dbgstr_rect(&exp)); }
47#define compare(val, exp, format) ok((val) == (exp), #val " value " format " expected " format "\n", (val), (exp));
49#define expect_eq(line, expr, value, type, format) { type ret = expr;\
50 ok((value) == ret, #expr " expected " format " got " format " from line %d\n", (value), (ret), line); }
101 ok(hToolbar !=
NULL,
"Toolbar creation problem\n");
106 for (
i=0;
i<5+
nr;
i++)
148static void dump_sizes(
HWND hRebar)
157 printf(
" { {%d, %d, %d, %d}, %d, %d, {",
r.left,
r.top,
r.right,
r.bottom,
168 printf(
"{{0, 0, 0, 0}, 0, 0},");
176 printf(
"%s{ {%3d, %3d, %3d, %3d}, 0x%02x, %d}, ", (
i%2==0 ?
"\n " :
""),
r.left,
r.top,
r.right,
r.bottom,
182#define check_sizes() dump_sizes(hRebar);
183#define check_sizes_todo(todomask) dump_sizes(hRebar);
217 SetRect(&
ret.rcClient, cleft, ctop, cright, cbottom);
218 ret.cyBarHeight = cyBarHeight;
220 ret.cyRowHeights = heap_alloc_zero(
nRows *
sizeof(
int));
222 ret.bands = heap_alloc_zero(nBands *
sizeof(*
ret.bands));
242#define rbsize_results_num 27
442#define check_sizes_todo(todomask) { \
444 REBARBANDINFOA rbi; \
446 const rbsize_result_t *res = &rbsize_results[rbsize_numtests]; \
447 GetClientRect(hRebar, &rc); \
448 check_rect("client", rc, res->rcClient); \
449 count = SendMessageA(hRebar, RB_GETROWCOUNT, 0, 0); \
450 compare(count, res->nRows, "%d"); \
451 for (i=0; i<min(count, res->nRows); i++) { \
452 int height = SendMessageA(hRebar, RB_GETROWHEIGHT, 0, 0);\
453 ok(height == res->cyRowHeights[i], "Height mismatch for row %d - %d vs %d\n", i, res->cyRowHeights[i], height); \
455 count = SendMessageA(hRebar, RB_GETBANDCOUNT, 0, 0); \
456 compare(count, res->nBands, "%d"); \
457 for (i=0; i<min(count, res->nBands); i++) { \
458 ok(SendMessageA(hRebar, RB_GETRECT, i, (LPARAM)&rc) == 1, "RB_GETRECT\n"); \
459 if (!(res->bands[i].fStyle & RBBS_HIDDEN)) \
460 check_rect("band", rc, res->bands[i].rc); \
461 rbi.cbSize = REBARBANDINFOA_V6_SIZE; \
462 rbi.fMask = RBBIM_STYLE | RBBIM_SIZE; \
463 ok(SendMessageA(hRebar, RB_GETBANDINFOA, i, (LPARAM)&rbi) == 1, "RB_GETBANDINFOA\n"); \
464 compare(rbi.fStyle, res->bands[i].fStyle, "%x"); \
465 compare(rbi.cx, res->bands[i].cx, "%d"); \
470#define check_sizes() check_sizes_todo(0)
479 if (lpszText !=
NULL)
661 pImageList_Destroy(
himl);
666static void dump_client(
HWND hRebar)
681 printf(
" {{%d, %d, %d, %d}, %d, %s},\n",
r.left,
r.top,
r.right,
r.bottom,
SendMessageA(hRebar,
RB_GETROWCOUNT, 0, 0),
682 notify ?
"TRUE" :
"FALSE");
686#define comment(fmt, arg1) printf("/* " fmt " */\n", arg1);
687#define check_client() dump_client(hRebar)
699 {{0, 2, 672, 2}, 0,
FALSE},
700 {{0, 2, 672, 22}, 1,
TRUE},
701 {{0, 2, 672, 22}, 1,
FALSE},
702 {{0, 2, 672, 22}, 1,
FALSE},
703 {{0, 2, 672, 22}, 1,
FALSE},
704 {{0, 2, 672, 22}, 0,
FALSE},
706 {{0, 0, 672, 0}, 0,
FALSE},
707 {{0, 0, 672, 20}, 1,
TRUE},
708 {{0, 0, 672, 20}, 1,
FALSE},
709 {{0, 0, 672, 20}, 1,
FALSE},
710 {{0, 0, 672, 20}, 1,
FALSE},
711 {{0, 0, 672, 20}, 0,
FALSE},
713 {{0, 226, 672, 226}, 0,
FALSE},
714 {{0, 206, 672, 226}, 1,
TRUE},
715 {{0, 206, 672, 226}, 1,
FALSE},
716 {{0, 206, 672, 226}, 1,
FALSE},
717 {{0, 206, 672, 226}, 1,
FALSE},
718 {{0, 206, 672, 226}, 0,
FALSE},
720 {{0, 226, 672, 226}, 0,
FALSE},
721 {{0, 206, 672, 226}, 1,
TRUE},
722 {{0, 206, 672, 226}, 1,
FALSE},
723 {{0, 206, 672, 226}, 1,
FALSE},
724 {{0, 206, 672, 226}, 1,
FALSE},
725 {{0, 206, 672, 226}, 0,
FALSE},
727 {{2, 0, 2, 226}, 0,
FALSE},
728 {{2, 0, 22, 226}, 1,
TRUE},
729 {{2, 0, 22, 226}, 1,
FALSE},
730 {{2, 0, 22, 226}, 1,
FALSE},
731 {{2, 0, 22, 226}, 1,
FALSE},
732 {{2, 0, 22, 226}, 0,
FALSE},
734 {{672, 0, 672, 226}, 0,
FALSE},
735 {{652, 0, 672, 226}, 1,
TRUE},
736 {{652, 0, 672, 226}, 1,
FALSE},
737 {{652, 0, 672, 226}, 1,
FALSE},
738 {{652, 0, 672, 226}, 1,
FALSE},
739 {{652, 0, 672, 226}, 0,
FALSE},
741 {{10, 11, 510, 11}, 0,
FALSE},
742 {{10, 15, 510, 35}, 1,
TRUE},
743 {{10, 17, 510, 37}, 1,
FALSE},
744 {{10, 14, 110, 54}, 2,
TRUE},
745 {{0, 4, 0, 44}, 2,
FALSE},
746 {{0, 6, 0, 46}, 2,
FALSE},
747 {{0, 8, 0, 48}, 2,
FALSE},
748 {{0, 12, 0, 32}, 1,
TRUE},
749 {{0, 4, 100, 24}, 0,
FALSE},
751 {{10, 5, 510, 5}, 0,
FALSE},
752 {{10, 5, 510, 25}, 1,
TRUE},
753 {{10, 5, 510, 25}, 1,
FALSE},
754 {{10, 10, 110, 50}, 2,
TRUE},
755 {{0, 0, 0, 40}, 2,
FALSE},
756 {{0, 0, 0, 40}, 2,
FALSE},
757 {{0, 0, 0, 40}, 2,
FALSE},
758 {{0, 0, 0, 20}, 1,
TRUE},
759 {{0, 0, 100, 20}, 0,
FALSE},
761 {{10, 5, 510, 20}, 0,
FALSE},
762 {{10, 5, 510, 20}, 1,
TRUE},
763 {{10, 10, 110, 110}, 2,
TRUE},
764 {{0, 0, 0, 0}, 2,
FALSE},
765 {{0, 0, 0, 0}, 2,
FALSE},
766 {{0, 0, 0, 0}, 2,
FALSE},
767 {{0, 0, 0, 0}, 1,
TRUE},
768 {{0, 0, 100, 100}, 0,
FALSE},
770 {{0, 5, 672, 5}, 0,
FALSE},
771 {{0, 5, 672, 25}, 1,
TRUE},
772 {{0, 10, 672, 30}, 1,
FALSE},
773 {{0, 0, 672, 20}, 1,
FALSE},
774 {{0, 0, 672, 20}, 1,
FALSE},
775 {{0, 0, 672, 20}, 0,
FALSE},
777 {{10, 0, 10, 226}, 0,
FALSE},
778 {{10, 0, 30, 226}, 1,
TRUE},
779 {{10, 0, 30, 226}, 1,
FALSE},
780 {{0, 0, 20, 226}, 1,
FALSE},
781 {{0, 0, 20, 226}, 1,
FALSE},
782 {{0, 0, 20, 226}, 0,
FALSE},
784 {{-2, 0, 674, 4}, 0,
FALSE},
785 {{-2, 0, 674, 24}, 1,
TRUE},
786 {{-2, 0, 674, 24}, 1,
FALSE},
787 {{-2, 0, 674, 24}, 1,
FALSE},
788 {{-2, 0, 674, 24}, 1,
FALSE},
789 {{-2, 0, 674, 24}, 0,
FALSE},
791 {{10, 5, 510, 9}, 0,
FALSE},
792 {{10, 5, 510, 29}, 1,
TRUE},
793 {{10, 5, 510, 29}, 1,
FALSE},
794 {{10, 10, 110, 54}, 2,
TRUE},
795 {{0, 0, 0, 44}, 2,
FALSE},
796 {{0, 0, 0, 44}, 2,
FALSE},
797 {{0, 0, 0, 44}, 2,
FALSE},
798 {{0, 0, 0, 24}, 1,
TRUE},
799 {{0, 0, 100, 24}, 0,
FALSE},
801 {{10, 5, 510, 20}, 0,
FALSE},
802 {{10, 5, 510, 20}, 1,
TRUE},
803 {{10, 10, 110, 110}, 2,
TRUE},
804 {{0, 0, 0, 0}, 2,
FALSE},
805 {{0, 0, 0, 0}, 2,
FALSE},
806 {{0, 0, 0, 0}, 2,
FALSE},
807 {{0, 0, 0, 0}, 1,
TRUE},
808 {{0, 0, 100, 100}, 0,
FALSE},
810 {{-2, 5, 674, 9}, 0,
FALSE},
811 {{-2, 5, 674, 29}, 1,
TRUE},
812 {{-2, 10, 674, 34}, 1,
FALSE},
813 {{-2, 0, 674, 24}, 1,
FALSE},
814 {{-2, 0, 674, 24}, 1,
FALSE},
815 {{-2, 0, 674, 24}, 0,
FALSE},
820#define comment(fmt, arg1)
821#define check_client() { \
824 const rbresize_test_result_t *res = &resize_results[resize_numtests++]; \
825 assert(resize_numtests <= ARRAY_SIZE(resize_results)); \
826 GetWindowRect(hRebar, &r); \
827 MapWindowPoints(HWND_DESKTOP, hMainWnd, (LPPOINT)&r, 2); \
828 if ((dwStyles[i] & (CCS_NOPARENTALIGN|CCS_NODIVIDER)) == CCS_NOPARENTALIGN) {\
829 check_rect_no_top("client", r, res->rc);
\
831 check_rect("client", r, res->rc); \
833 value = (int)SendMessageA(hRebar, RB_GETROWCOUNT, 0, 0); \
834 ok(res->iNumRows == value, "RB_GETROWCOUNT expected %d got %d\n", res->iNumRows, value); \
835 if (res->heightNotify) { \
837 GetClientRect(hRebar, &rcClient); \
838 check_rect("notify", height_change_notify_rect, rcClient); \
839 } else ok(height_change_notify_rect.top == -1, "Unexpected RBN_HEIGHTCHANGE received\n"); \
840 SetRect(&height_change_notify_rect, -1, -1, -1, -1); \
852 const int styles_count =
ARRAY_SIZE(dwStyles);
855 for (
i = 0;
i < styles_count;
i++)
861 hRebar =
CreateWindowA(
REBARCLASSNAMEA,
"A", dwStyles[
i] |
WS_CHILD |
WS_VISIBLE, 10, 5, 500, 15,
hMainWnd,
NULL,
GetModuleHandleA(
NULL), 0);
902 UINT cxHeader,
UINT cxHeader_broken)
907 memset(&rb, 0xdd,
sizeof(rb));
933 "expected %d for %d from line %d\n", cxHeader, rb.
cxHeader,
line);
936#define expect_band_content(hRebar, uBand, fStyle, clrFore, clrBack,\
937 lpText, iImage, hwndChild, cxMinChild, cyMinChild, cx, hbmBack, wID,\
938 cyChild, cyMaxChild, cyIntegral, cxIdeal, lParam, cxHeader, cxHeader_broken) \
939 expect_band_content_(__LINE__, hRebar, uBand, fStyle, clrFore, clrBack,\
940 lpText, iImage, hwndChild, cxMinChild, cyMinChild, cx, hbmBack, wID,\
941 cyChild, cyMaxChild, cyIntegral, cxIdeal, lParam, cxHeader, cxHeader_broken)
946 CHAR szABC[] =
"ABC";
947 CHAR szABCD[] =
"ABCD";
955 win_skip(
"V6 info not supported\n" );
959 expect_band_content(hRebar, 0, 0, 0,
GetSysColor(
COLOR_3DFACE),
"", -1,
NULL, 0, 0, 0,
NULL, 0, 0xdddddddd, 0xdddddddd, 0xdddddddd, 0, 0, 0, -1);
968 expect_band_content(hRebar, 0, 0, 0,
GetSysColor(
COLOR_3DFACE),
"", -1,
NULL, 15, 20, 0,
NULL, 0, 0xdddddddd, 0xdddddddd, 0xdddddddd, 0, 0, 0, -1);
973 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);
978 expect_band_content(hRebar, 1, 0, 0,
GetSysColor(
COLOR_3DFACE),
"", -1,
NULL, 0, 0, 0,
NULL, 0, 0xdddddddd, 0xdddddddd, 0xdddddddd, 0, 0, 9, -1);
979 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);
984 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);
988 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);
993 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);
998 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);
1020 scheme.clrBtnHighlight = 0;
1029 skip(
"RB_GETCOLORSCHEME not supported\n");
1037 ok(
ret,
"RB_GETBANDINFOA failed\n");
1044 ok(
ret,
"RB_GETBANDINFOA failed\n");
1132#define X(f) p##f = (void*)GetProcAddress(hComCtl32, #f);
1154 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)