ReactOS 0.4.16-dev-188-g678aa63
rebar.c File Reference
#include <assert.h>
#include <stdarg.h>
#include <windows.h>
#include <commctrl.h>
#include <uxtheme.h>
#include "wine/heap.h"
#include "wine/test.h"
Include dependency graph for rebar.c:

Go to the source code of this file.

Classes

struct  rbband_result_t
 
struct  rbsize_result_t
 
struct  rbresize_test_result_t
 

Macros

#define _WIN32_WINNT   0x500
 
#define _WIN32_IE   0x500
 
#define check_rect(name, val, exp)
 
#define check_rect_no_top(name, val, exp)
 
#define compare(val, exp, format)   ok((val) == (exp), #val " value " format " expected " format "\n", (val), (exp));
 
#define expect_eq(line, expr, value, type, format)
 
#define rbsize_results_num   27
 
#define check_sizes_todo(todomask)
 
#define check_sizes()   check_sizes_todo(0)
 
#define comment(fmt, arg1)
 
#define check_client()
 
#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 X(f)   p##f = (void*)GetProcAddress(hComCtl32, #f);
 

Functions

static BOOL (WINAPI *pImageList_Destroy)(HIMAGELIST)
 
static HIMAGELIST (WINAPI *pImageList_LoadImageA)(HINSTANCE
 
static INT CALLBACK is_font_installed_proc (const LOGFONTA *elf, const TEXTMETRICA *ntm, DWORD type, LPARAM lParam)
 
static BOOL is_font_installed (const char *name)
 
static void init_system_font_height (void)
 
static HWND create_rebar_control (void)
 
static HWND build_toolbar (int nr, HWND hParent)
 
static LRESULT CALLBACK parent_wndproc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
 
static int string_width (const CHAR *s)
 
static rbsize_result_t rbsize_init (int cleft, int ctop, int cright, int cbottom, int cyBarHeight, int nRows, int nBands)
 
static void rbsize_add_row (rbsize_result_t *rbsr, int rowHeight)
 
static void rbsize_add_band (rbsize_result_t *rbsr, int left, int top, int right, int bottom, DWORD fStyle, UINT cx)
 
static void rbsize_results_init (void)
 
static void rbsize_results_free (void)
 
static void add_band_w (HWND hRebar, LPCSTR lpszText, int cxMinChild, int cx, int cxIdeal)
 
static void test_layout (void)
 
static void test_resize (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 test_bandinfo (void)
 
static void test_colors (void)
 
static BOOL register_parent_wnd_class (void)
 
static HWND create_parent_window (void)
 
static void test_showband (void)
 
static void test_notification (void)
 
static void init_functions (void)
 
 START_TEST (rebar)
 

Variables

static LPCSTR
 
static int
 
static COLORREF
 
static UINT
 
static RECT height_change_notify_rect
 
static HWND hMainWnd
 
static int system_font_height
 
static int g_parent_measureitem
 
static rbsize_result_trbsize_results
 
static int rbsize_numtests = 0
 
static const rbresize_test_result_t resize_results []
 
static DWORD resize_numtests = 0
 

Macro Definition Documentation

◆ _WIN32_IE

#define _WIN32_IE   0x500

Definition at line 26 of file rebar.c.

◆ _WIN32_WINNT

#define _WIN32_WINNT   0x500

Definition at line 25 of file rebar.c.

◆ check_client

#define check_client ( )
Value:
{ \
RECT r; \
int value; \
GetWindowRect(hRebar, &r); \
MapWindowPoints(HWND_DESKTOP, hMainWnd, (LPPOINT)&r, 2); \
check_rect_no_top("client", r, res->rc); /* the top coordinate changes after every layout and is very implementation-dependent */ \
} else { \
check_rect("client", r, res->rc); \
} \
value = (int)SendMessageA(hRebar, RB_GETROWCOUNT, 0, 0); \
ok(res->iNumRows == value, "RB_GETROWCOUNT expected %d got %d\n", res->iNumRows, value); \
if (res->heightNotify) { \
RECT rcClient; \
GetClientRect(hRebar, &rcClient); \
check_rect("notify", height_change_notify_rect, rcClient); \
} else ok(height_change_notify_rect.top == -1, "Unexpected RBN_HEIGHTCHANGE received\n"); \
SetRect(&height_change_notify_rect, -1, -1, -1, -1); \
}
#define ok(value,...)
Definition: atltest.h:57
#define ARRAY_SIZE(A)
Definition: main.h:20
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
GLuint res
Definition: glext.h:9613
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
Definition: glfuncs.h:248
static RECT height_change_notify_rect
Definition: rebar.c:41
static HWND hMainWnd
Definition: rebar.c:42
static const rbresize_test_result_t resize_results[]
Definition: rebar.c:724
static DWORD resize_numtests
Definition: rebar.c:845
#define RB_GETROWCOUNT
Definition: commctrl.h:1586
#define CCS_NODIVIDER
Definition: commctrl.h:2253
#define CCS_NOPARENTALIGN
Definition: commctrl.h:2251
LONG top
Definition: windef.h:307
Definition: pdh_main.c:94
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define HWND_DESKTOP
Definition: winuser.h:1212

Definition at line 848 of file rebar.c.

◆ check_rect

#define check_rect (   name,
  val,
  exp 
)
Value:
"invalid rect (" name ") %s - expected %s\n", wine_dbgstr_rect(&val), wine_dbgstr_rect(&exp));
static const char * wine_dbgstr_rect(const RECT *prc)
Definition: atltest.h:160
GLuint GLfloat * val
Definition: glext.h:7180
DWORD exp
Definition: msg.c:16058
Definition: name.c:39
BOOL WINAPI EqualRect(_In_ LPCRECT, _In_ LPCRECT)

Definition at line 46 of file rebar.c.

◆ check_rect_no_top

#define check_rect_no_top (   name,
  val,
  exp 
)
Value:
{ \
ok((val.bottom - val.top == exp.bottom - exp.top) && \
val.left == exp.left && val.right == exp.right, \
"invalid rect (" name ") %s - expected %s, ignoring top\n", \

Definition at line 49 of file rebar.c.

◆ check_sizes

#define check_sizes ( )    check_sizes_todo(0)

Definition at line 478 of file rebar.c.

◆ check_sizes_todo

#define check_sizes_todo (   todomask)
Value:
{ \
RECT rc; \
int count, i/*, mask=(todomask)*/; \
GetClientRect(hRebar, &rc); \
check_rect("client", rc, res->rcClient); \
count = SendMessageA(hRebar, RB_GETROWCOUNT, 0, 0); \
compare(count, res->nRows, "%d"); \
for (i=0; i<min(count, res->nRows); i++) { \
int height = SendMessageA(hRebar, RB_GETROWHEIGHT, 0, 0);\
ok(height == res->cyRowHeights[i], "Height mismatch for row %d - %d vs %d\n", i, res->cyRowHeights[i], height); \
} \
count = SendMessageA(hRebar, RB_GETBANDCOUNT, 0, 0); \
compare(count, res->nBands, "%d"); \
for (i=0; i<min(count, res->nBands); i++) { \
ok(SendMessageA(hRebar, RB_GETRECT, i, (LPARAM)&rc) == 1, "RB_GETRECT\n"); \
if (!(res->bands[i].fStyle & RBBS_HIDDEN)) \
check_rect("band", rc, res->bands[i].rc); \
ok(SendMessageA(hRebar, RB_GETBANDINFOA, i, (LPARAM)&rbi) == 1, "RB_GETBANDINFOA\n"); \
compare(rbi.fStyle, res->bands[i].fStyle, "%x"); \
compare(rbi.cx, res->bands[i].cx, "%d"); \
} \
}
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
static rbsize_result_t * rbsize_results
Definition: rebar.c:248
static int rbsize_numtests
Definition: rebar.c:448
#define min(a, b)
Definition: monoChain.cc:55
#define RB_GETRECT
Definition: commctrl.h:1582
#define RB_GETBANDINFOA
Definition: commctrl.h:1610
#define REBARBANDINFOA_V6_SIZE
Definition: commctrl.h:1541
#define RBBS_HIDDEN
Definition: commctrl.h:1492
#define RBBIM_STYLE
Definition: commctrl.h:1502
#define RBBIM_SIZE
Definition: commctrl.h:1508
#define RB_GETROWHEIGHT
Definition: commctrl.h:1587
#define RB_GETBANDCOUNT
Definition: commctrl.h:1585
LONG_PTR LPARAM
Definition: windef.h:208

Definition at line 450 of file rebar.c.

◆ comment

#define comment (   fmt,
  arg1 
)

Definition at line 847 of file rebar.c.

◆ compare

#define compare (   val,
  exp,
  format 
)    ok((val) == (exp), #val " value " format " expected " format "\n", (val), (exp));

Definition at line 55 of file rebar.c.

◆ expect_band_content

#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 
)
Value:
expect_band_content_(__LINE__, hRebar, uBand, fStyle, clrFore, clrBack,\
lpText, iImage, hwndChild, cxMinChild, cyMinChild, cx, hbmBack, wID,\
cyChild, cyMaxChild, cyIntegral, cxIdeal, lParam, cxHeader, cxHeader_broken)
LPARAM lParam
Definition: combotst.c:139
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)
Definition: rebar.c:925
_Out_opt_ int * cx
Definition: commctrl.h:585

Definition at line 963 of file rebar.c.

◆ expect_eq

#define expect_eq (   line,
  expr,
  value,
  type,
  format 
)
Value:
{ type ret = expr;\
ok((value) == ret, #expr " expected " format " got " format " from line %d\n", (value), (ret), line); }
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
Definition: query.h:86
Definition: format.c:58
Definition: parser.c:49
int ret

Definition at line 57 of file rebar.c.

◆ rbsize_results_num

#define rbsize_results_num   27

Definition at line 250 of file rebar.c.

◆ X

#define X (   f)    p##f = (void*)GetProcAddress(hComCtl32, #f);

Function Documentation

◆ add_band_w()

static void add_band_w ( HWND  hRebar,
LPCSTR  lpszText,
int  cxMinChild,
int  cx,
int  cxIdeal 
)
static

Definition at line 482 of file rebar.c.

483{
485 REBARBANDINFOA rbi;
486
487 if (lpszText != NULL)
488 strcpy(buffer, lpszText);
491 rbi.cx = cx;
492 rbi.cxMinChild = cxMinChild;
493 rbi.cxIdeal = cxIdeal;
494 rbi.cyMinChild = 20;
495 rbi.hwndChild = build_toolbar(1, hRebar);
496 rbi.lpText = (lpszText ? buffer : NULL);
497 SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
498}
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
#define NULL
Definition: types.h:112
#define MAX_PATH
Definition: compat.h:34
GLuint buffer
Definition: glext.h:5915
static HWND build_toolbar(int nr, HWND hParent)
Definition: rebar.c:101
#define RBBIM_CHILDSIZE
Definition: commctrl.h:1507
#define RB_INSERTBANDA
Definition: commctrl.h:1575
#define RBBIM_CHILD
Definition: commctrl.h:1506
#define RBBIM_TEXT
Definition: commctrl.h:1504
#define RBBIM_IDEALSIZE
Definition: commctrl.h:1511
char CHAR
Definition: xmlstorage.h:175

Referenced by test_colors(), test_layout(), and test_resize().

◆ BOOL()

static BOOL ( WINAPI pImageList_Destroy)
static

◆ build_toolbar()

static HWND build_toolbar ( int  nr,
HWND  hParent 
)
static

Definition at line 101 of file rebar.c.

102{
103 TBBUTTON btns[8];
105 hParent, (HMENU)5, GetModuleHandleA(NULL), NULL);
106 int iBitmapId = 0;
107 int i;
108
109 ok(hToolbar != NULL, "Toolbar creation problem\n");
110 ok(SendMessageA(hToolbar, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0) == 0, "TB_BUTTONSTRUCTSIZE failed\n");
111 ok(SendMessageA(hToolbar, TB_AUTOSIZE, 0, 0) == 0, "TB_AUTOSIZE failed\n");
112 ok(SendMessageA(hToolbar, WM_SETFONT, (WPARAM)GetStockObject(SYSTEM_FONT), 0)==1, "WM_SETFONT\n");
113
114 for (i=0; i<5+nr; i++)
115 {
116 btns[i].iBitmap = i;
117 btns[i].idCommand = i;
118 btns[i].fsStyle = BTNS_BUTTON;
119 btns[i].fsState = TBSTATE_ENABLED;
120 btns[i].iString = 0;
121 }
122
123 switch (nr)
124 {
125 case 0: iBitmapId = IDB_HIST_SMALL_COLOR; break;
126 case 1: iBitmapId = IDB_VIEW_SMALL_COLOR; break;
127 case 2: iBitmapId = IDB_STD_SMALL_COLOR; break;
128 }
129 ok(SendMessageA(hToolbar, TB_LOADIMAGES, iBitmapId, (LPARAM)HINST_COMMCTRL) == 0, "TB_LOADIMAGES failed\n");
130 ok(SendMessageA(hToolbar, TB_ADDBUTTONSA, 5+nr, (LPARAM)btns), "TB_ADDBUTTONSA failed\n");
131 return hToolbar;
132}
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
Definition: loader.c:812
ULONG nr
Definition: thread.c:7
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:63
#define WS_CHILD
Definition: pedump.c:617
#define WS_VISIBLE
Definition: pedump.c:620
#define BTNS_BUTTON
Definition: commctrl.h:998
#define TB_AUTOSIZE
Definition: commctrl.h:1137
#define HINST_COMMCTRL
Definition: commctrl.h:1063
#define IDB_HIST_SMALL_COLOR
Definition: commctrl.h:1068
#define IDB_VIEW_SMALL_COLOR
Definition: commctrl.h:1066
#define TB_BUTTONSTRUCTSIZE
Definition: commctrl.h:1134
#define TB_ADDBUTTONSA
Definition: commctrl.h:1106
#define TB_LOADIMAGES
Definition: commctrl.h:1152
#define TBSTATE_ENABLED
Definition: commctrl.h:974
#define CCS_NORESIZE
Definition: commctrl.h:2250
#define TOOLBARCLASSNAMEA
Definition: commctrl.h:944
#define IDB_STD_SMALL_COLOR
Definition: commctrl.h:1064
BYTE fsState
Definition: commctrl.h:951
INT_PTR iString
Definition: commctrl.h:959
int idCommand
Definition: commctrl.h:950
int iBitmap
Definition: commctrl.h:949
BYTE fsStyle
Definition: commctrl.h:952
UINT_PTR WPARAM
Definition: windef.h:207
HGDIOBJ WINAPI GetStockObject(_In_ int)
#define SYSTEM_FONT
Definition: wingdi.h:911
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)
#define WM_SETFONT
Definition: winuser.h:1653

Referenced by add_band_w(), and test_layout().

◆ create_parent_window()

static HWND create_parent_window ( void  )
static

Definition at line 1096 of file rebar.c.

1097{
1098 HWND hwnd;
1099
1100 if (!register_parent_wnd_class()) return NULL;
1101
1102 hwnd = CreateWindowExA(0, "MyTestWnd", "Blah", WS_OVERLAPPEDWINDOW,
1106
1108 return hwnd;
1109}
static BOOL register_parent_wnd_class(void)
Definition: rebar.c:1078
#define WS_OVERLAPPEDWINDOW
Definition: pedump.c:637
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define SM_CXSIZEFRAME
Definition: winuser.h:996
#define CW_USEDEFAULT
Definition: winuser.h:225
#define SW_SHOW
Definition: winuser.h:778
#define SM_CYCAPTION
Definition: winuser.h:966
#define SM_CYSIZEFRAME
Definition: winuser.h:998
int WINAPI GetSystemMetrics(_In_ int)

Referenced by START_TEST().

◆ create_rebar_control()

static HWND create_rebar_control ( void  )
static

Definition at line 88 of file rebar.c.

89{
90 HWND hwnd;
91
94 ok(hwnd != NULL, "Failed to create Rebar\n");
95
97
98 return hwnd;
99}
#define REBARCLASSNAMEA
Definition: commctrl.h:1464
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
Definition: winuser.h:4318

Referenced by test_bandinfo(), test_colors(), test_layout(), test_notification(), and test_showband().

◆ expect_band_content_()

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

Definition at line 925 of file rebar.c.

930{
931 CHAR buf[MAX_PATH] = "abc";
933
934 memset(&rb, 0xdd, sizeof(rb));
939 rb.lpText = buf;
940 rb.cch = MAX_PATH;
941 ok(SendMessageA(hRebar, RB_GETBANDINFOA, uBand, (LPARAM)&rb), "RB_GETBANDINFOA failed from line %d\n", line);
942 expect_eq(line, rb.fStyle, fStyle, int, "%x");
943 expect_eq(line, rb.clrFore, clrFore, COLORREF, "%x");
944 expect_eq(line, rb.clrBack, clrBack, COLORREF, "%x");
945 expect_eq(line, strcmp(rb.lpText, lpText), 0, int, "%d");
946 expect_eq(line, rb.iImage, iImage, int, "%x");
947 expect_eq(line, rb.hwndChild, hwndChild, HWND, "%p");
948 expect_eq(line, rb.cxMinChild, cxMinChild, int, "%d");
949 expect_eq(line, rb.cyMinChild, cyMinChild, int, "%d");
950 expect_eq(line, rb.cx, cx, int, "%d");
951 expect_eq(line, rb.hbmBack, hbmBack, HBITMAP, "%p");
952 expect_eq(line, rb.wID, wID, int, "%d");
953 /* the values of cyChild, cyMaxChild and cyIntegral can't be read unless the band is RBBS_VARIABLEHEIGHT */
954 expect_eq(line, rb.cyChild, cyChild, int, "%x");
955 expect_eq(line, rb.cyMaxChild, cyMaxChild, int, "%x");
956 expect_eq(line, rb.cyIntegral, cyIntegral, int, "%x");
957 expect_eq(line, rb.cxIdeal, cxIdeal, int, "%d");
958 expect_eq(line, rb.lParam, lParam, LPARAM, "%ld");
959 ok(rb.cxHeader == cxHeader || rb.cxHeader == cxHeader + 1 || broken(rb.cxHeader == cxHeader_broken),
960 "expected %d for %d from line %d\n", cxHeader, rb.cxHeader, line);
961}
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
#define broken(x)
Definition: atltest.h:178
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
static HBITMAP
Definition: button.c:44
#define expect_eq(line, expr, value, type, format)
Definition: rebar.c:57
#define RBBIM_IMAGE
Definition: commctrl.h:1505
#define RBBIM_BACKGROUND
Definition: commctrl.h:1509
#define RBBIM_ID
Definition: commctrl.h:1510
#define RBBIM_LPARAM
Definition: commctrl.h:1512
#define RBBIM_COLORS
Definition: commctrl.h:1503
#define RBBIM_HEADERSIZE
Definition: commctrl.h:1513
#define memset(x, y, z)
Definition: compat.h:39
COLORREF clrBack
Definition: commctrl.h:1520
COLORREF clrFore
Definition: commctrl.h:1519
DWORD COLORREF
Definition: windef.h:300

◆ HIMAGELIST()

static HIMAGELIST ( WINAPI pImageList_LoadImageA)
static

◆ init_functions()

static void init_functions ( void  )
static

Definition at line 1155 of file rebar.c.

1156{
1157 HMODULE hComCtl32 = LoadLibraryA("comctl32.dll");
1158
1159#define X(f) p##f = (void*)GetProcAddress(hComCtl32, #f);
1162#undef X
1163}
HIMAGELIST WINAPI ImageList_LoadImageA(HINSTANCE hi, LPCSTR lpbmp, INT cx, INT cGrow, COLORREF clrMask, UINT uType, UINT uFlags)
Definition: imagelist.c:2164
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
Definition: imagelist.c:928
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
Definition: loader.c:111
#define X(f)

Referenced by START_TEST().

◆ init_system_font_height()

static void init_system_font_height ( void  )
static

Definition at line 77 of file rebar.c.

77 {
78 HDC hDC;
80
84
85 system_font_height = tm.tmHeight;
86}
static HDC hDC
Definition: 3dtext.c:33
static HDC
Definition: imagelist.c:88
static int system_font_height
Definition: rebar.c:43
Definition: time.h:68
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
BOOL WINAPI GetTextMetricsA(_In_ HDC, _Out_ LPTEXTMETRICA)
Definition: text.c:200
BOOL WINAPI DeleteDC(_In_ HDC)

Referenced by START_TEST().

◆ is_font_installed()

static BOOL is_font_installed ( const char name)
static

Definition at line 65 of file rebar.c.

66{
67 HDC hdc = GetDC(0);
68 BOOL ret = FALSE;
69
71 ret = TRUE;
72
73 ReleaseDC(0, hdc);
74 return ret;
75}
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
HDC hdc
Definition: main.c:9
static INT CALLBACK is_font_installed_proc(const LOGFONTA *elf, const TEXTMETRICA *ntm, DWORD type, LPARAM lParam)
Definition: rebar.c:60
int WINAPI EnumFontFamiliesA(_In_ HDC, _In_opt_ LPCSTR, _In_ FONTENUMPROCA, _In_ LPARAM)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
HDC WINAPI GetDC(_In_opt_ HWND)

Referenced by START_TEST().

◆ is_font_installed_proc()

static INT CALLBACK is_font_installed_proc ( const LOGFONTA elf,
const TEXTMETRICA ntm,
DWORD  type,
LPARAM  lParam 
)
static

Definition at line 60 of file rebar.c.

61{
62 return 0;
63}

Referenced by is_font_installed().

◆ parent_wndproc()

static LRESULT CALLBACK parent_wndproc ( HWND  hWnd,
UINT  msg,
WPARAM  wParam,
LPARAM  lParam 
)
static

Definition at line 136 of file rebar.c.

137{
138 switch (msg)
139 {
140 case WM_NOTIFY:
141 {
142 NMHDR *lpnm = (NMHDR *)lParam;
143 if (lpnm->code == RBN_HEIGHTCHANGE)
145 }
146 break;
147 case WM_MEASUREITEM:
149 break;
150 }
152}
#define msg(x)
Definition: auth_time.c:54
HWND hWnd
Definition: settings.c:17
WPARAM wParam
Definition: combotst.c:138
static int g_parent_measureitem
Definition: rebar.c:134
#define RBN_HEIGHTCHANGE
Definition: commctrl.h:1628
#define WM_NOTIFY
Definition: richedit.h:61
UINT code
Definition: winuser.h:3162
HWND hwndFrom
Definition: winuser.h:3160
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
#define WM_MEASUREITEM
Definition: winuser.h:1649

Referenced by register_parent_wnd_class().

◆ rbsize_add_band()

static void rbsize_add_band ( rbsize_result_t rbsr,
int  left,
int  top,
int  right,
int  bottom,
DWORD  fStyle,
UINT  cx 
)
static

Definition at line 240 of file rebar.c.

241{
242 SetRect(&(rbsr->bands[rbsr->nBands].rc), left, top, right, bottom);
243 rbsr->bands[rbsr->nBands].fStyle = fStyle;
244 rbsr->bands[rbsr->nBands].cx = cx;
245 rbsr->nBands++;
246}
GLdouble GLdouble GLdouble GLdouble top
Definition: glext.h:10859
GLdouble GLdouble right
Definition: glext.h:10859
GLint left
Definition: glext.h:7726
GLint GLint bottom
Definition: glext.h:7726
DWORD fStyle
Definition: rebar.c:208
rbband_result_t * bands
Definition: rebar.c:218
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)

Referenced by rbsize_results_init().

◆ rbsize_add_row()

static void rbsize_add_row ( rbsize_result_t rbsr,
int  rowHeight 
)
static

Definition at line 235 of file rebar.c.

235 {
236 rbsr->cyRowHeights[rbsr->nRows] = rowHeight;
237 rbsr->nRows++;
238}
int * cyRowHeights
Definition: rebar.c:216

Referenced by rbsize_results_init().

◆ rbsize_init()

static rbsize_result_t rbsize_init ( int  cleft,
int  ctop,
int  cright,
int  cbottom,
int  cyBarHeight,
int  nRows,
int  nBands 
)
static

Definition at line 221 of file rebar.c.

222{
224
225 SetRect(&ret.rcClient, cleft, ctop, cright, cbottom);
226 ret.cyBarHeight = cyBarHeight;
227 ret.nRows = 0;
228 ret.cyRowHeights = heap_alloc_zero(nRows * sizeof(int));
229 ret.nBands = 0;
230 ret.bands = heap_alloc_zero(nBands * sizeof(*ret.bands));
231
232 return ret;
233}
int nRows
Definition: appswitch.c:56

Referenced by rbsize_results_init().

◆ rbsize_results_free()

static void rbsize_results_free ( void  )
static

Definition at line 436 of file rebar.c.

437{
438 int i;
439
440 for (i = 0; i < rbsize_results_num; i++) {
441 heap_free(rbsize_results[i].cyRowHeights);
442 heap_free(rbsize_results[i].bands);
443 }
446}
static BOOL heap_free(void *mem)
Definition: appwiz.h:76
#define rbsize_results_num
Definition: rebar.c:250

Referenced by test_layout().

◆ rbsize_results_init()

static void rbsize_results_init ( void  )
static

Definition at line 252 of file rebar.c.

253{
255
256 rbsize_results[0] = rbsize_init(0, 0, 672, 0, 0, 0, 0);
257
258 rbsize_results[1] = rbsize_init(0, 0, 672, 4, 4, 1, 1);
260 rbsize_add_band(&rbsize_results[1], 0, 0, 672, 4, 0x00, 200);
261
262 rbsize_results[2] = rbsize_init(0, 0, 672, 4, 4, 1, 2);
264 rbsize_add_band(&rbsize_results[2], 0, 0, 200, 4, 0x00, 200);
265 rbsize_add_band(&rbsize_results[2], 200, 0, 672, 4, 0x04, 200);
266
267 rbsize_results[3] = rbsize_init(0, 0, 672, 30, 30, 1, 3);
269 rbsize_add_band(&rbsize_results[3], 0, 0, 200, 30, 0x00, 200);
270 rbsize_add_band(&rbsize_results[3], 200, 0, 400, 30, 0x04, 200);
271 rbsize_add_band(&rbsize_results[3], 400, 0, 672, 30, 0x00, 200);
272
273 rbsize_results[4] = rbsize_init(0, 0, 672, 34, 34, 1, 4);
275 rbsize_add_band(&rbsize_results[4], 0, 0, 200, 34, 0x00, 200);
276 rbsize_add_band(&rbsize_results[4], 200, 0, 400, 34, 0x04, 200);
277 rbsize_add_band(&rbsize_results[4], 400, 0, 604, 34, 0x00, 200);
278 rbsize_add_band(&rbsize_results[4], 604, 0, 672, 34, 0x04, 68);
279
280 rbsize_results[5] = rbsize_init(0, 0, 672, 34, 34, 1, 4);
282 rbsize_add_band(&rbsize_results[5], 0, 0, 200, 34, 0x00, 200);
283 rbsize_add_band(&rbsize_results[5], 200, 0, 400, 34, 0x04, 200);
284 rbsize_add_band(&rbsize_results[5], 400, 0, 604, 34, 0x00, 200);
285 rbsize_add_band(&rbsize_results[5], 604, 0, 672, 34, 0x04, 68);
286
287 rbsize_results[6] = rbsize_init(0, 0, 672, 34, 34, 1, 4);
289 rbsize_add_band(&rbsize_results[6], 0, 0, 200, 34, 0x00, 200);
290 rbsize_add_band(&rbsize_results[6], 202, 0, 402, 34, 0x04, 200);
291 rbsize_add_band(&rbsize_results[6], 404, 0, 604, 34, 0x00, 200);
292 rbsize_add_band(&rbsize_results[6], 606, 0, 672, 34, 0x04, 66);
293
294 rbsize_results[7] = rbsize_init(0, 0, 672, 70, 70, 2, 5);
297 rbsize_add_band(&rbsize_results[7], 0, 0, 142, 34, 0x00, 200);
298 rbsize_add_band(&rbsize_results[7], 144, 0, 557, 34, 0x00, 200);
299 rbsize_add_band(&rbsize_results[7], 559, 0, 672, 34, 0x04, 200);
300 rbsize_add_band(&rbsize_results[7], 0, 36, 200, 70, 0x00, 200);
301 rbsize_add_band(&rbsize_results[7], 202, 36, 672, 70, 0x04, 66);
302
303 rbsize_results[8] = rbsize_init(0, 0, 672, 34, 34, 1, 5);
305 rbsize_add_band(&rbsize_results[8], 0, 0, 167, 34, 0x00, 200);
306 rbsize_add_band(&rbsize_results[8], 169, 0, 582, 34, 0x00, 200);
307 rbsize_add_band(&rbsize_results[8], 559, 0, 759, 34, 0x08, 200);
308 rbsize_add_band(&rbsize_results[8], 584, 0, 627, 34, 0x00, 200);
309 rbsize_add_band(&rbsize_results[8], 629, 0, 672, 34, 0x04, 66);
310
311 rbsize_results[9] = rbsize_init(0, 0, 672, 34, 34, 1, 4);
313 rbsize_add_band(&rbsize_results[9], 0, 0, 167, 34, 0x00, 200);
314 rbsize_add_band(&rbsize_results[9], 169, 0, 582, 34, 0x00, 200);
315 rbsize_add_band(&rbsize_results[9], 584, 0, 627, 34, 0x00, 200);
316 rbsize_add_band(&rbsize_results[9], 629, 0, 672, 34, 0x04, 66);
317
318 rbsize_results[10] = rbsize_init(0, 0, 672, 34, 34, 1, 3);
320 rbsize_add_band(&rbsize_results[10], 0, 0, 413, 34, 0x00, 200);
321 rbsize_add_band(&rbsize_results[10], 415, 0, 615, 34, 0x00, 200);
322 rbsize_add_band(&rbsize_results[10], 617, 0, 672, 34, 0x04, 66);
323
324 rbsize_results[11] = rbsize_init(0, 0, 672, 34, 34, 1, 2);
326 rbsize_add_band(&rbsize_results[11], 0, 0, 604, 34, 0x00, 200);
327 rbsize_add_band(&rbsize_results[11], 606, 0, 672, 34, 0x04, 66);
328
329 rbsize_results[12] = rbsize_init(0, 0, 672, 8 + 2*system_font_height, 40, 2, 5);
332 rbsize_add_band(&rbsize_results[12], 0, 0, 87 + string_width("ABC"), 4 + system_font_height, 0x00, 40);
333 rbsize_add_band(&rbsize_results[12], 87 + string_width("ABC"), 0, 157 + string_width("ABC"), 4 + system_font_height, 0x00, 70);
334 rbsize_add_band(&rbsize_results[12], 157 + string_width("ABC"), 0, 397 + string_width("ABC"), 4 + system_font_height, 0x00, 240);
335 rbsize_add_band(&rbsize_results[12], 397 + string_width("ABC"), 0, 672, 4 + system_font_height, 0x00, 60);
336 rbsize_add_band(&rbsize_results[12], 0, 4 + system_font_height, 672, 8 + 2*system_font_height, 0x00, 200);
337
338 rbsize_results[13] = rbsize_init(0, 0, 672, 8 + 2*system_font_height, 40, 2, 5);
341 rbsize_add_band(&rbsize_results[13], 0, 0, 87 + string_width("ABC"), 4 + system_font_height, 0x00, 40);
342 rbsize_add_band(&rbsize_results[13], 87 + string_width("ABC"), 0, 200 + string_width("ABC"), 4 + system_font_height, 0x00, 113);
343 rbsize_add_band(&rbsize_results[13], 200 + string_width("ABC"), 0, 397 + string_width("ABC"), 4 + system_font_height, 0x00, 197);
344 rbsize_add_band(&rbsize_results[13], 397 + string_width("ABC"), 0, 672, 4 + system_font_height, 0x00, 60);
345 rbsize_add_band(&rbsize_results[13], 0, 4 + system_font_height, 672, 8 + 2*system_font_height, 0x00, 200);
346
347 rbsize_results[14] = rbsize_init(0, 0, 672, 8 + 2*system_font_height, 40, 2, 5);
350 rbsize_add_band(&rbsize_results[14], 0, 0, 87 + string_width("ABC"), 4 + system_font_height, 0x00, 40);
351 rbsize_add_band(&rbsize_results[14], 87 + string_width("ABC"), 0, 412 - string_width("MMMMMMM"), 4 + system_font_height, 0x00, 325 - string_width("ABC") - string_width("MMMMMMM"));
352 rbsize_add_band(&rbsize_results[14], 412 - string_width("MMMMMMM"), 0, 595 - string_width("MMMMMMM"), 4 + system_font_height, 0x00, 183);
353 rbsize_add_band(&rbsize_results[14], 595 - string_width("MMMMMMM"), 0, 672, 4 + system_font_height, 0x00, 77 + string_width("MMMMMMM"));
354 rbsize_add_band(&rbsize_results[14], 0, 4 + system_font_height, 672, 8 + 2*system_font_height, 0x00, 200);
355
356 rbsize_results[15] = rbsize_init(0, 0, 672, 8 + 2*system_font_height, 40, 2, 5);
359 rbsize_add_band(&rbsize_results[15], 0, 0, 87 + string_width("ABC"), 4 + system_font_height, 0x00, 40);
360 rbsize_add_band(&rbsize_results[15], 87 + string_width("ABC"), 0, 140 + string_width("ABC"), 4 + system_font_height, 0x00, 53);
361 rbsize_add_band(&rbsize_results[15], 140 + string_width("ABC"), 0, 595 - string_width("MMMMMMM"), 4 + system_font_height, 0x00, 455 - string_width("MMMMMMM") - string_width("ABC"));
362 rbsize_add_band(&rbsize_results[15], 595 - string_width("MMMMMMM"), 0, 672, 4 + system_font_height, 0x00, 77 + string_width("MMMMMMM"));
363 rbsize_add_band(&rbsize_results[15], 0, 4 + system_font_height, 672, 8 + 2*system_font_height, 0x00, 200);
364
365 rbsize_results[16] = rbsize_init(0, 0, 672, 8 + 2*system_font_height, 40, 2, 5);
368 rbsize_add_band(&rbsize_results[16], 0, 0, 87 + string_width("ABC"), 4 + system_font_height, 0x00, 40);
369 rbsize_add_band(&rbsize_results[16], 87 + string_width("ABC"), 0, 412 - string_width("MMMMMMM"), 4 + system_font_height, 0x00, 325 - string_width("ABC") - string_width("MMMMMMM"));
370 rbsize_add_band(&rbsize_results[16], 412 - string_width("MMMMMMM"), 0, 595 - string_width("MMMMMMM"), 4 + system_font_height, 0x00, 183);
371 rbsize_add_band(&rbsize_results[16], 595 - string_width("MMMMMMM"), 0, 672, 4 + system_font_height, 0x00, 77 + string_width("MMMMMMM"));
372 rbsize_add_band(&rbsize_results[16], 0, 4 + system_font_height, 672, 8 + 2*system_font_height, 0x00, 200);
373
374 rbsize_results[17] = rbsize_init(0, 0, 672, 8 + 2*system_font_height, 40, 2, 5);
377 rbsize_add_band(&rbsize_results[17], 0, 0, 87 + string_width("ABC"), 4 + system_font_height, 0x00, 40);
378 rbsize_add_band(&rbsize_results[17], 87 + string_width("ABC"), 0, 412 - string_width("MMMMMMM"), 4 + system_font_height, 0x00, 325 - string_width("ABC") - string_width("MMMMMMM"));
379 rbsize_add_band(&rbsize_results[17], 412 - string_width("MMMMMMM"), 0, 595 - string_width("MMMMMMM"), 4 + system_font_height, 0x00, 183);
380 rbsize_add_band(&rbsize_results[17], 595 - string_width("MMMMMMM"), 0, 672, 4 + system_font_height, 0x00, 77 + string_width("MMMMMMM"));
381 rbsize_add_band(&rbsize_results[17], 0, 4 + system_font_height, 672, 8 + 2*system_font_height, 0x00, 200);
382
383 rbsize_results[18] = rbsize_init(0, 0, 672, 56, 56, 2, 5);
386 rbsize_add_band(&rbsize_results[18], 0, 0, 87 + string_width("ABC"), 28, 0x00, 40);
387 rbsize_add_band(&rbsize_results[18], 87 + string_width("ABC"), 0, 412 - string_width("MMMMMMM"), 28, 0x00, 325 - string_width("ABC") - string_width("MMMMMMM"));
388 rbsize_add_band(&rbsize_results[18], 412 - string_width("MMMMMMM"), 0, 595 - string_width("MMMMMMM"), 28, 0x00, 183);
389 rbsize_add_band(&rbsize_results[18], 595 - string_width("MMMMMMM"), 0, 672, 28, 0x00, 77 + string_width("MMMMMMM"));
390 rbsize_add_band(&rbsize_results[18], 0, 28, 672, 56, 0x00, 200);
391
392 rbsize_results[19] = rbsize_init(0, 0, 672, 8 + 2*system_font_height, 40, 2, 5);
395 rbsize_add_band(&rbsize_results[19], 0, 0, 87 + string_width("ABC"), 4 + system_font_height, 0x00, 40);
396 rbsize_add_band(&rbsize_results[19], 87 + string_width("ABC"), 0, 412 - string_width("MMMMMMM"), 4 + system_font_height, 0x00, 325 - string_width("ABC") - string_width("MMMMMMM"));
397 rbsize_add_band(&rbsize_results[19], 412 - string_width("MMMMMMM"), 0, 595 - string_width("MMMMMMM"), 4 + system_font_height, 0x00, 183);
398 rbsize_add_band(&rbsize_results[19], 595 - string_width("MMMMMMM"), 0, 672, 4 + system_font_height, 0x00, 77 + string_width("MMMMMMM"));
399 rbsize_add_band(&rbsize_results[19], 0, 4 + system_font_height, 672, 8 + 2*system_font_height, 0x00, 200);
400
401 rbsize_results[20] = rbsize_init(0, 0, 672, 56, 56, 2, 5);
404 rbsize_add_band(&rbsize_results[20], 0, 0, 87 + string_width("ABC"), 28, 0x00, 40);
405 rbsize_add_band(&rbsize_results[20], 87 + string_width("ABC"), 0, 412 - string_width("MMMMMMM"), 28, 0x00, 325 - string_width("ABC") - string_width("MMMMMMM"));
406 rbsize_add_band(&rbsize_results[20], 412 - string_width("MMMMMMM"), 0, 595 - string_width("MMMMMMM"), 28, 0x00, 183);
407 rbsize_add_band(&rbsize_results[20], 595 - string_width("MMMMMMM"), 0, 672, 28, 0x00, 77 + string_width("MMMMMMM"));
408 rbsize_add_band(&rbsize_results[20], 0, 28, 672, 56, 0x00, 200);
409
410 rbsize_results[21] = rbsize_init(0, 0, 672, 0, 0, 0, 0);
411
412 rbsize_results[22] = rbsize_init(0, 0, 672, 65, 56, 1, 3);
414 rbsize_add_band(&rbsize_results[22], 0, 0, 90, 65, 0x40, 90);
415 rbsize_add_band(&rbsize_results[22], 90, 0, 180, 65, 0x40, 90);
416 rbsize_add_band(&rbsize_results[22], 180, 0, 672, 65, 0x40, 90);
417
418 rbsize_results[23] = rbsize_init(0, 0, 0, 226, 0, 0, 0);
419
420 rbsize_results[24] = rbsize_init(0, 0, 65, 226, 65, 1, 1);
422 rbsize_add_band(&rbsize_results[24], 0, 0, 226, 65, 0x40, 90);
423
424 rbsize_results[25] = rbsize_init(0, 0, 65, 226, 65, 1, 2);
426 rbsize_add_band(&rbsize_results[25], 0, 0, 90, 65, 0x40, 90);
427 rbsize_add_band(&rbsize_results[25], 90, 0, 226, 65, 0x40, 90);
428
429 rbsize_results[26] = rbsize_init(0, 0, 65, 226, 65, 1, 3);
431 rbsize_add_band(&rbsize_results[26], 0, 0, 90, 65, 0x40, 90);
432 rbsize_add_band(&rbsize_results[26], 90, 0, 163, 65, 0x40, 90);
433 rbsize_add_band(&rbsize_results[26], 163, 0, 226, 65, 0x40, 90);
434}
static void * heap_alloc(size_t len)
Definition: appwiz.h:66
static rbsize_result_t rbsize_init(int cleft, int ctop, int cright, int cbottom, int cyBarHeight, int nRows, int nBands)
Definition: rebar.c:221
static void rbsize_add_band(rbsize_result_t *rbsr, int left, int top, int right, int bottom, DWORD fStyle, UINT cx)
Definition: rebar.c:240
static int string_width(const CHAR *s)
Definition: rebar.c:195
static void rbsize_add_row(rbsize_result_t *rbsr, int rowHeight)
Definition: rebar.c:235

Referenced by test_layout().

◆ register_parent_wnd_class()

static BOOL register_parent_wnd_class ( void  )
static

Definition at line 1078 of file rebar.c.

1079{
1080 WNDCLASSA wc;
1081
1083 wc.cbClsExtra = 0;
1084 wc.cbWndExtra = 0;
1086 wc.hIcon = NULL;
1089 wc.lpszMenuName = NULL;
1090 wc.lpszClassName = "MyTestWnd";
1092
1093 return RegisterClassA(&wc);
1094}
static LRESULT CALLBACK parent_wndproc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
Definition: rebar.c:136
HBRUSH hbrBackground
Definition: winuser.h:3173
HICON hIcon
Definition: winuser.h:3171
HINSTANCE hInstance
Definition: winuser.h:3170
HCURSOR hCursor
Definition: winuser.h:3172
int cbWndExtra
Definition: winuser.h:3169
UINT style
Definition: winuser.h:3166
LPCSTR lpszMenuName
Definition: winuser.h:3174
LPCSTR lpszClassName
Definition: winuser.h:3175
WNDPROC lpfnWndProc
Definition: winuser.h:3167
int cbClsExtra
Definition: winuser.h:3168
#define CS_VREDRAW
Definition: winuser.h:658
#define COLOR_WINDOW
Definition: winuser.h:921
HBRUSH WINAPI GetSysColorBrush(_In_ int)
#define CS_HREDRAW
Definition: winuser.h:653
ATOM WINAPI RegisterClassA(_In_ CONST WNDCLASSA *)
#define IDC_IBEAM
Definition: winuser.h:688
HCURSOR WINAPI LoadCursorA(_In_opt_ HINSTANCE, _In_ LPCSTR)
Definition: cursoricon.c:2142
const char * LPCSTR
Definition: xmlstorage.h:183

Referenced by create_parent_window().

◆ START_TEST()

START_TEST ( rebar  )

Definition at line 1165 of file rebar.c.

1166{
1167 MSG msg;
1168
1171
1173
1174 test_bandinfo();
1175 test_colors();
1176 test_showband();
1178
1179 if(!is_font_installed("System") || !is_font_installed("Tahoma"))
1180 {
1181 skip("Missing System or Tahoma font\n");
1182 goto out;
1183 }
1184
1185 test_layout();
1186 test_resize();
1187
1188out:
1189 PostQuitMessage(0);
1190 while(GetMessageA(&msg,0,0,0)) {
1193 }
1195}
#define skip(...)
Definition: atltest.h:64
static HWND create_parent_window(void)
Definition: rebar.c:1096
static void test_bandinfo(void)
Definition: rebar.c:970
static void test_layout(void)
Definition: rebar.c:500
static void test_showband(void)
Definition: rebar.c:1111
static void test_colors(void)
Definition: rebar.c:1030
static void init_system_font_height(void)
Definition: rebar.c:77
static void test_notification(void)
Definition: rebar.c:1141
static void test_resize(void)
Definition: rebar.c:872
static void init_functions(void)
Definition: rebar.c:1155
static BOOL is_font_installed(const char *name)
Definition: rebar.c:65
static FILE * out
Definition: regtests2xml.c:44
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
LRESULT WINAPI DispatchMessageA(_In_ const MSG *)
BOOL WINAPI TranslateMessage(_In_ const MSG *)
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
BOOL WINAPI GetMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
BOOL WINAPI DestroyWindow(_In_ HWND)

◆ string_width()

static int string_width ( const CHAR s)
static

Definition at line 195 of file rebar.c.

195 {
196 SIZE sz;
197 HDC hdc;
198
201 DeleteDC(hdc);
202
203 return sz.cx;
204}
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
GLdouble s
Definition: gl.h:2039
LONG cx
Definition: kdterminal.h:27
BOOL WINAPI GetTextExtentPoint32A(_In_ HDC hdc, _In_reads_(c) LPCSTR lpString, _In_ int c, _Out_ LPSIZE psizl)

Referenced by rbsize_results_init().

◆ test_bandinfo()

static void test_bandinfo ( void  )
static

Definition at line 970 of file rebar.c.

971{
973 CHAR szABC[] = "ABC";
974 CHAR szABCD[] = "ABCD";
975 HWND hRebar;
976
977 hRebar = create_rebar_control();
979 rb.fMask = 0;
980 if (!SendMessageA(hRebar, RB_INSERTBANDA, 0, (LPARAM)&rb))
981 {
982 win_skip( "V6 info not supported\n" );
983 DestroyWindow(hRebar);
984 return;
985 }
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);
987
988 rb.fMask = RBBIM_CHILDSIZE;
989 rb.cxMinChild = 15;
990 rb.cyMinChild = 20;
991 rb.cyChild = 30;
992 rb.cyMaxChild = 20;
993 rb.cyIntegral = 10;
994 ok(SendMessageA(hRebar, RB_SETBANDINFOA, 0, (LPARAM)&rb), "RB_SETBANDINFOA failed\n");
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);
996
997 rb.fMask = RBBIM_TEXT;
998 rb.lpText = szABC;
999 ok(SendMessageA(hRebar, RB_SETBANDINFOA, 0, (LPARAM)&rb), "RB_SETBANDINFOA failed\n");
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);
1001
1002 rb.cbSize = REBARBANDINFOA_V6_SIZE;
1003 rb.fMask = 0;
1004 ok(SendMessageA(hRebar, RB_INSERTBANDA, 1, (LPARAM)&rb), "RB_INSERTBANDA failed\n");
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);
1007
1008 rb.fMask = RBBIM_HEADERSIZE;
1009 rb.cxHeader = 50;
1010 ok(SendMessageA(hRebar, RB_SETBANDINFOA, 0, (LPARAM)&rb), "RB_SETBANDINFOA failed\n");
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);
1012
1013 rb.cxHeader = 5;
1014 ok(SendMessageA(hRebar, RB_SETBANDINFOA, 0, (LPARAM)&rb), "RB_SETBANDINFOA failed\n");
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);
1016
1017 rb.fMask = RBBIM_TEXT;
1018 rb.lpText = szABCD;
1019 ok(SendMessageA(hRebar, RB_SETBANDINFOA, 0, (LPARAM)&rb), "RB_SETBANDINFOA failed\n");
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);
1021 rb.fMask = RBBIM_STYLE | RBBIM_TEXT;
1022 rb.fStyle = RBBS_VARIABLEHEIGHT;
1023 rb.lpText = szABC;
1024 ok(SendMessageA(hRebar, RB_SETBANDINFOA, 0, (LPARAM)&rb), "RB_SETBANDINFOA failed\n");
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);
1026
1027 DestroyWindow(hRebar);
1028}
static HWND create_rebar_control(void)
Definition: rebar.c:88
#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)
Definition: rebar.c:963
#define RB_SETBANDINFOA
Definition: commctrl.h:1579
#define RBBS_VARIABLEHEIGHT
Definition: commctrl.h:1495
#define win_skip
Definition: test.h:163
DWORD WINAPI GetSysColor(_In_ int)
#define COLOR_3DFACE
Definition: winuser.h:932

Referenced by START_TEST().

◆ test_colors()

static void test_colors ( void  )
static

Definition at line 1030 of file rebar.c.

1031{
1033 COLORREF clr;
1034 BOOL ret;
1035 HWND hRebar;
1036 REBARBANDINFOA bi;
1037
1038 hRebar = create_rebar_control();
1039
1040 /* test default colors */
1041 clr = SendMessageA(hRebar, RB_GETTEXTCOLOR, 0, 0);
1042 compare(clr, CLR_NONE, "%x");
1043 clr = SendMessageA(hRebar, RB_GETBKCOLOR, 0, 0);
1044 compare(clr, CLR_NONE, "%x");
1045
1046 scheme.dwSize = sizeof(scheme);
1047 scheme.clrBtnHighlight = 0;
1048 scheme.clrBtnShadow = 0;
1050 if (ret)
1051 {
1052 compare(scheme.clrBtnHighlight, CLR_DEFAULT, "%x");
1053 compare(scheme.clrBtnShadow, CLR_DEFAULT, "%x");
1054 }
1055 else
1056 skip("RB_GETCOLORSCHEME not supported\n");
1057
1058 /* check default band colors */
1059 add_band_w(hRebar, "", 0, 10, 10);
1061 bi.fMask = RBBIM_COLORS;
1062 bi.clrFore = bi.clrBack = 0xc0ffe;
1063 ret = SendMessageA(hRebar, RB_GETBANDINFOA, 0, (LPARAM)&bi);
1064 ok(ret, "RB_GETBANDINFOA failed\n");
1065 compare(bi.clrFore, RGB(0, 0, 0), "%x");
1067
1068 SendMessageA(hRebar, RB_SETTEXTCOLOR, 0, RGB(255, 0, 0));
1069 bi.clrFore = bi.clrBack = 0xc0ffe;
1070 ret = SendMessageA(hRebar, RB_GETBANDINFOA, 0, (LPARAM)&bi);
1071 ok(ret, "RB_GETBANDINFOA failed\n");
1072 compare(bi.clrFore, RGB(0, 0, 0), "%x");
1073
1074 DestroyWindow(hRebar);
1075}
#define RGB(r, g, b)
Definition: precomp.h:71
#define compare(val, exp, format)
Definition: rebar.c:55
static void add_band_w(HWND hRebar, LPCSTR lpszText, int cxMinChild, int cx, int cxIdeal)
Definition: rebar.c:482
#define RB_SETTEXTCOLOR
Definition: commctrl.h:1593
#define RB_GETTEXTCOLOR
Definition: commctrl.h:1594
#define CLR_NONE
Definition: commctrl.h:319
#define RB_GETCOLORSCHEME
Definition: commctrl.h:1600
#define CLR_DEFAULT
Definition: commctrl.h:320
#define RB_GETBKCOLOR
Definition: commctrl.h:1592
DWORD scheme

Referenced by START_TEST().

◆ test_layout()

static void test_layout ( void  )
static

Definition at line 500 of file rebar.c.

501{
502 HWND hRebar;
503 REBARBANDINFOA rbi;
505 REBARINFO ri;
506 int count;
507
509
510 hRebar = create_rebar_control();
511 check_sizes();
514 rbi.cx = 200;
515 rbi.cxMinChild = 100;
516 rbi.cyMinChild = 30;
517 rbi.hwndChild = NULL;
518 SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
519 check_sizes();
520
521 rbi.fMask |= RBBIM_STYLE;
523 SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
524 check_sizes();
525
526 rbi.fStyle = 0;
527 rbi.cx = 200;
528 rbi.cxMinChild = 30;
529 rbi.cyMinChild = 30;
530 rbi.hwndChild = build_toolbar(0, hRebar);
531 SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
532 check_sizes();
533
535 rbi.cx = 68;
536 rbi.hwndChild = build_toolbar(0, hRebar);
537 SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
538 check_sizes();
539
541 check_sizes(); /* a style change won't start a relayout */
542 rbi.fMask = RBBIM_SIZE;
543 rbi.cx = 66;
544 SendMessageA(hRebar, RB_SETBANDINFOA, 3, (LPARAM)&rbi);
545 check_sizes(); /* here it will be relayouted */
546
547 /* this will force a new row */
549 rbi.cx = 200;
550 rbi.cxMinChild = 400;
551 rbi.cyMinChild = 30;
552 rbi.hwndChild = build_toolbar(0, hRebar);
553 SendMessageA(hRebar, RB_INSERTBANDA, 1, (LPARAM)&rbi);
554 check_sizes();
555
556 rbi.fMask = RBBIM_STYLE;
557 rbi.fStyle = RBBS_HIDDEN;
558 SendMessageA(hRebar, RB_SETBANDINFOA, 2, (LPARAM)&rbi);
559 check_sizes();
560
561 SendMessageA(hRebar, RB_DELETEBAND, 2, 0);
562 check_sizes();
563 SendMessageA(hRebar, RB_DELETEBAND, 0, 0);
564 check_sizes();
565 SendMessageA(hRebar, RB_DELETEBAND, 1, 0);
566 check_sizes();
567
568 DestroyWindow(hRebar);
569
570 hRebar = create_rebar_control();
571 add_band_w(hRebar, "ABC", 70, 40, 100);
572 add_band_w(hRebar, NULL, 40, 70, 100);
573 add_band_w(hRebar, NULL, 170, 240, 100);
574 add_band_w(hRebar, "MMMMMMM", 60, 60, 100);
575 add_band_w(hRebar, NULL, 200, 200, 100);
576 check_sizes();
577 SendMessageA(hRebar, RB_MAXIMIZEBAND, 1, TRUE);
578 check_sizes();
579 SendMessageA(hRebar, RB_MAXIMIZEBAND, 1, TRUE);
580 check_sizes();
582 check_sizes();
583 SendMessageA(hRebar, RB_MINIMIZEBAND, 2, 0);
584 check_sizes();
585 SendMessageA(hRebar, RB_MINIMIZEBAND, 0, 0);
586 check_sizes();
587
588 /* an image will increase the band height */
589 himl = pImageList_LoadImageA(GetModuleHandleA("comctl32"), MAKEINTRESOURCEA(121), 24, 2,
591 ri.cbSize = sizeof(ri);
593 ri.himl = himl;
594 ok(SendMessageA(hRebar, RB_SETBARINFO, 0, (LPARAM)&ri), "RB_SETBARINFO failed\n");
595 rbi.fMask = RBBIM_IMAGE;
596 rbi.iImage = 1;
597 SendMessageA(hRebar, RB_SETBANDINFOA, 1, (LPARAM)&rbi);
598 check_sizes();
599
600 /* after removing it everything is back to normal*/
601 rbi.iImage = -1;
602 SendMessageA(hRebar, RB_SETBANDINFOA, 1, (LPARAM)&rbi);
603 check_sizes();
604
605 /* Only -1 means that the image is not present. Other invalid values increase the height */
606 rbi.iImage = -2;
607 SendMessageA(hRebar, RB_SETBANDINFOA, 1, (LPARAM)&rbi);
608 check_sizes();
609
610 DestroyWindow(hRebar);
611
612 /* VARHEIGHT resizing test on a horizontal rebar */
613 hRebar = create_rebar_control();
615 check_sizes();
618 rbi.cxMinChild = 50;
619 rbi.cyMinChild = 10;
620 rbi.cyIntegral = 11;
621 rbi.cyChild = 70;
622 rbi.cyMaxChild = 200;
623 rbi.cx = 90;
624 rbi.hwndChild = build_toolbar(0, hRebar);
625 SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
626
627 rbi.cyChild = 50;
628 rbi.hwndChild = build_toolbar(0, hRebar);
629 SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
630
631 rbi.cyMinChild = 40;
632 rbi.cyChild = 50;
633 rbi.cyIntegral = 5;
634 rbi.hwndChild = build_toolbar(0, hRebar);
635 SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
636 check_sizes();
637
638 DestroyWindow(hRebar);
639
640 /* VARHEIGHT resizing on a vertical rebar */
641 hRebar = create_rebar_control();
643 check_sizes();
646 rbi.cxMinChild = 50;
647 rbi.cyMinChild = 10;
648 rbi.cyIntegral = 11;
649 rbi.cyChild = 70;
650 rbi.cyMaxChild = 90;
651 rbi.cx = 90;
652 rbi.hwndChild = build_toolbar(0, hRebar);
653 SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
654 check_sizes();
655
656 rbi.cyChild = 50;
657 rbi.hwndChild = build_toolbar(0, hRebar);
658 SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
659 check_sizes();
660
661 rbi.cyMinChild = 40;
662 rbi.cyChild = 50;
663 rbi.cyIntegral = 5;
664 rbi.hwndChild = build_toolbar(0, hRebar);
665 SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
666 check_sizes();
667
668 DestroyWindow(hRebar);
669 pImageList_Destroy(himl);
670
671 /* One hidden band. */
672 hRebar = create_rebar_control();
673
676 rbi.fStyle = RBBS_HIDDEN;
677 rbi.cx = 200;
678 rbi.cxMinChild = 100;
679 rbi.cyMinChild = 30;
680 rbi.hwndChild = NULL;
681
682 SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
683 count = SendMessageA(hRebar, RB_GETROWCOUNT, 0, 0);
684 ok(!count, "Unexpected row count %d.\n", count);
685
686 DestroyWindow(hRebar);
687
689}
HIMAGELIST himl
#define check_sizes()
Definition: rebar.c:478
static void rbsize_results_init(void)
Definition: rebar.c:252
static void rbsize_results_free(void)
Definition: rebar.c:436
#define RB_DELETEBAND
Definition: commctrl.h:1576
#define RBS_BANDBORDERS
Definition: commctrl.h:1472
#define RB_MINIMIZEBAND
Definition: commctrl.h:1614
#define RB_MAXIMIZEBAND
Definition: commctrl.h:1615
#define RBIM_IMAGELIST
Definition: commctrl.h:1468
#define RBS_AUTOSIZE
Definition: commctrl.h:1475
#define CCS_VERT
Definition: commctrl.h:2254
#define RBBS_CHILDEDGE
Definition: commctrl.h:1491
#define RB_SETBARINFO
Definition: commctrl.h:1578
HIMAGELIST himl
Definition: commctrl.h:1483
#define IMAGE_BITMAP
Definition: winuser.h:211
LONG WINAPI GetWindowLongA(_In_ HWND, _In_ int)
LONG WINAPI SetWindowLongA(_In_ HWND, _In_ int, _In_ LONG)
#define MAKEINTRESOURCEA(i)
Definition: winuser.h:581
#define LR_DEFAULTCOLOR
Definition: winuser.h:1090
#define GWL_STYLE
Definition: winuser.h:855

Referenced by START_TEST().

◆ test_notification()

static void test_notification ( void  )
static

Definition at line 1141 of file rebar.c.

1142{
1144 HWND rebar;
1145
1146 rebar = create_rebar_control();
1147
1149 SendMessageA(rebar, WM_MEASUREITEM, 0, (LPARAM)&mis);
1150 ok(g_parent_measureitem == 1, "got %d\n", g_parent_measureitem);
1151
1152 DestroyWindow(rebar);
1153}

Referenced by START_TEST().

◆ test_resize()

static void test_resize ( void  )
static

Definition at line 872 of file rebar.c.

873{
878
879 const int styles_count = ARRAY_SIZE(dwStyles);
880 int i;
881
882 for (i = 0; i < styles_count; i++)
883 {
884 HWND hRebar;
885
886 comment("style %08x", dwStyles[i]);
887 SetRect(&height_change_notify_rect, -1, -1, -1, -1);
888 hRebar = CreateWindowA(REBARCLASSNAMEA, "A", dwStyles[i] | WS_CHILD | WS_VISIBLE, 10, 5, 500, 15, hMainWnd, NULL, GetModuleHandleA(NULL), 0);
889 check_client();
890 add_band_w(hRebar, NULL, 70, 100, 0);
891 if (dwStyles[i] & CCS_NOPARENTALIGN) /* the window drifts downward for CCS_NOPARENTALIGN without CCS_NODIVIDER */
892 check_client();
893 add_band_w(hRebar, NULL, 70, 100, 0);
894 check_client();
895 MoveWindow(hRebar, 10, 10, 100, 100, TRUE);
896 check_client();
897 MoveWindow(hRebar, 0, 0, 0, 0, TRUE);
898 check_client();
899 /* try to fool the rebar by sending invalid width/height - won't work */
900 if (dwStyles[i] & (CCS_NORESIZE | CCS_NOPARENTALIGN))
901 {
903 pos.hwnd = hRebar;
904 pos.hwndInsertAfter = NULL;
905 pos.cx = 500;
906 pos.cy = 500;
907 pos.x = 10;
908 pos.y = 10;
909 pos.flags = 0;
912 check_client();
913 SendMessageA(hRebar, WM_SIZE, SIZE_RESTORED, MAKELONG(500, 500));
914 check_client();
915 }
916 SendMessageA(hRebar, RB_DELETEBAND, 0, 0);
917 check_client();
918 SendMessageA(hRebar, RB_DELETEBAND, 0, 0);
919 MoveWindow(hRebar, 0, 0, 100, 100, TRUE);
920 check_client();
921 DestroyWindow(hRebar);
922 }
923}
unsigned long DWORD
Definition: ntddk_ex.h:95
#define comment(fmt, arg1)
Definition: rebar.c:847
#define check_client()
Definition: rebar.c:848
#define WS_BORDER
Definition: pedump.c:625
#define CCS_BOTTOM
Definition: commctrl.h:2249
#define CCS_RIGHT
Definition: commctrl.h:2256
#define CCS_TOP
Definition: commctrl.h:2247
#define CCS_NOMOVEY
Definition: commctrl.h:2248
#define MAKELONG(a, b)
Definition: typedefs.h:249
#define WM_WINDOWPOSCHANGING
Definition: winuser.h:1664
#define WM_SIZE
Definition: winuser.h:1614
#define SIZE_RESTORED
Definition: winuser.h:2508
#define WM_WINDOWPOSCHANGED
Definition: winuser.h:1665
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)

Referenced by START_TEST().

◆ test_showband()

static void test_showband ( void  )
static

Definition at line 1111 of file rebar.c.

1112{
1113 HWND hRebar;
1114 REBARBANDINFOA rbi;
1115 BOOL ret;
1116
1117 hRebar = create_rebar_control();
1118
1119 /* no bands */
1120 ret = SendMessageA(hRebar, RB_SHOWBAND, 0, TRUE);
1121 ok(ret == FALSE, "got %d\n", ret);
1122
1125 rbi.cx = 200;
1126 rbi.cxMinChild = 100;
1127 rbi.cyMinChild = 30;
1128 rbi.hwndChild = NULL;
1129 SendMessageA(hRebar, RB_INSERTBANDA, -1, (LPARAM)&rbi);
1130
1131 /* index out of range */
1132 ret = SendMessageA(hRebar, RB_SHOWBAND, 1, TRUE);
1133 ok(ret == FALSE, "got %d\n", ret);
1134
1135 ret = SendMessageA(hRebar, RB_SHOWBAND, 0, TRUE);
1136 ok(ret == TRUE, "got %d\n", ret);
1137
1138 DestroyWindow(hRebar);
1139}
#define RB_SHOWBAND
Definition: commctrl.h:1618

Referenced by START_TEST().

Variable Documentation

◆ COLORREF

Definition at line 39 of file rebar.c.

◆ g_parent_measureitem

int g_parent_measureitem
static

Definition at line 134 of file rebar.c.

Referenced by parent_wndproc(), and test_notification().

◆ height_change_notify_rect

RECT height_change_notify_rect
static

Definition at line 41 of file rebar.c.

Referenced by parent_wndproc(), and test_resize().

◆ hMainWnd

HWND hMainWnd
static

Definition at line 42 of file rebar.c.

Referenced by create_rebar_control(), START_TEST(), and test_resize().

◆ int

int

Definition at line 39 of file rebar.c.

◆ LPCSTR

Definition at line 39 of file rebar.c.

◆ rbsize_numtests

int rbsize_numtests = 0
static

Definition at line 448 of file rebar.c.

◆ rbsize_results

rbsize_result_t* rbsize_results
static

Definition at line 248 of file rebar.c.

Referenced by rbsize_results_free(), and rbsize_results_init().

◆ resize_numtests

DWORD resize_numtests = 0
static

Definition at line 845 of file rebar.c.

◆ resize_results

const rbresize_test_result_t resize_results[]
static

Definition at line 724 of file rebar.c.

◆ system_font_height

int system_font_height ( void  )
static

Definition at line 43 of file rebar.c.

Referenced by init_system_font_height(), rbsize_results_init(), and test_bandinfo().

◆ UINT

Definition at line 39 of file rebar.c.