139#define CCS_LAYOUT_MASK 0x3
142#define HAS_GRIPPER 0x00000001
143#define HAS_IMAGE 0x00000002
144#define HAS_TEXT 0x00000004
147#define DRAW_GRIPPER 0x00000001
148#define DRAW_IMAGE 0x00000002
149#define DRAW_TEXT 0x00000004
150#define DRAW_CHEVRONHOT 0x00000040
151#define DRAW_CHEVRONPUSHED 0x00000080
152#define NTF_INVALIDATE 0x01000000
191#define BEGIN_DRAG_ISSUED 0x00000001
192#define SELF_RESIZE 0x00000002
193#define BAND_NEEDS_REDRAW 0x00000020
196#define RBBS_UNDOC_FIXEDHEADER 0x40000000
203#define SEP_WIDTH_SIZE 2
204#define SEP_WIDTH ((infoPtr->dwStyle & RBS_BANDBORDERS) ? SEP_WIDTH_SIZE : 0)
208#define REBAR_ALWAYS_SPACE 4
211#define REBAR_POST_IMAGE 2
214#define REBAR_POST_TEXT 4
217#define GRIPPER_HEIGHT 16
220#define REBAR_PRE_GRIPPER 2
224#define GRIPPER_WIDTH 3
227#define CHEVRON_WIDTH 10
230#define REBAR_POST_CHILD 4
234#define REBAR_DIVIDER 2
237#define REBAR_NO_CHILD_HEIGHT 4
241#define REBAR_MINSIZE 23
244#define REBARSPACE(a) ((a->fStyle & RBBS_CHILDEDGE) ? 2*REBAR_DIVIDER : 0)
248#define RB_GETBANDINFO_OLD (WM_USER+5)
251#define HIDDENBAND(a) (((a)->fStyle & RBBS_HIDDEN) || \
252 ((infoPtr->dwStyle & CCS_VERT) && \
253 ((a)->fStyle & RBBS_NOVERT)))
255#define REBAR_GetInfoPtr(wndPtr) ((REBAR_INFO *)GetWindowLongPtrW (hwnd, 0))
263 assert(
i >= 0 && i < infoPtr->uNumBands);
279 "RBBS_VARIABLEHEIGHT",
280 "RBBS_GRIPPERALWAYS",
300 "RBBIM_CHEVRONLOCATION",
301 "RBBIM_CHEVRONSTATE",
347 TRACE(
"band info: ");
371 TRACE(
"band info: xMin=%u, yMin=%u, yChild=%u, yMax=%u, yIntgl=%u\n",
385 TRACE(
"hwnd=%p: color=%08x/%08x, bands=%u, rows=%u, cSize=%d,%d\n",
388 TRACE(
"hwnd=%p: flags=%08x, dragStart=%d,%d, dragNow=%d,%d, iGrabbedBand=%d\n",
392 TRACE(
"hwnd=%p: style=%08x, notify in Unicode=%s, redraw=%s\n",
408 TRACE(
"band # %u: xHeader=%u",
420 TRACE(
"band # %u: xMin=%u, yMin=%u, yChild=%u, yMax=%u, yIntgl=%u\n",
423 TRACE(
"band # %u: text=%s\n",
425 TRACE(
"band # %u: cxMinBand=%u, cxEffective=%u, cyMinBand=%u\n",
427 TRACE(
"band # %u: fStatus=%08x, fDraw=%08x, Band=(%s), Grip=(%s)\n",
430 TRACE(
"band # %u: Img=(%s), Txt=(%s), Child=(%s)\n",
522 if (owner)
parent = owner;
554 notify_rebar.
wID = lpBand->
wID;
565 notify_rebar.
uBand = uBand;
722 TRACE(
"[%p] drawing band %i, flags=%08x\n",
739 for(
i=rstart;
i<rend;
i++){
832 lpBand->
fDraw &= ~NTF_INVALIDATE;
856 for(
i=rstart;
i<rend;
i++){
936 xoff = (cxBand - lpBand->
cyChild) / 2;
948 lpBand->
fDraw &= ~NTF_INVALIDATE;
967 INT xedge = 0, yedge = 0;
1017 TRACE(
"hwnd %p, style=%08x, setting at (%d,%d) for (%d,%d)\n",
1026 infoPtr->
fStatus &= ~SELF_RESIZE;
1033 static const WCHAR strComboBox[] = {
'C',
'o',
'm',
'b',
'o',
'B',
'o',
'x',0 };
1041 ERR(
"BeginDeferWindowPos returned NULL\n");
1043 for (
i =
start;
i < endplus;
i++) {
1062 TRACE(
"Child rect changed by NOTIFY for band %u\n",
i);
1063 TRACE(
" from (%s) to (%s)\n",
1066 lpBand->
rcChild = rbcz.rcChild;
1072 INT nEditHeight, yPos;
1084 TRACE(
"moving child (Combo(Ex)) %p to (%d,%d) for (%d,%d)\n",
1096 ERR(
"DeferWindowPos returned NULL\n");
1099 TRACE(
"moving child (Other) %p to (%d,%d) for (%d,%d)\n",
1111 ERR(
"DeferWindowPos returned NULL\n");
1116 ERR(
"EndDeferWindowPos returned NULL\n");
1138 for (
n =
i - 1;
n >= 0;
n--)
1153 int iLastBand = iBand;
1200 INT cxMinFirstBand = 0,
i;
1214 TRACE(
"Extra space for row [%d..%d) should be added to band %d\n", iBeginBand, iEndBand,
i);
1224 TRACE(
"Shrinking bands [%d..%d) by %d, right-to-left\n", iBeginBand, iEndBand, cxShrink);
1248 TRACE(
"Shrinking bands [%d..%d) by %d, left-to-right\n", iBeginBand, iEndBand, cxShrink);
1302 insertBand->
fStyle &= ~RBBS_BREAK;
1329 TRACE(
"Bands [%d; %d) height: %d\n", iBeginBand, iEndBand, yMaxHeight);
1349 return yPos + yMaxHeight;
1359 TRACE(
"Adjusting row [%d;%d). Width: %d\n", iBeginBand, iEndBand,
cx);
1360 for (
i = iBeginBand;
i < iEndBand;
i++)
1378 ERR(
"Error layouting row %d - couldn't shrink for %d pixels (%d total shrink)\n", *piRow,
ret, -
extra);
1415 TRACE(
"No bands - setting size to (0,%d), style: %x\n", adjcx, infoPtr->
dwStyle);
1442 if (rowstart < infoPtr->uNumBands)
1459 TRACE(
"calcsize size=(%d, %d), origheight=(%d,%d)\n",
1461 oldSize.
cx, oldSize.
cy);
1485 TRACE(
"[%d;%d) by %d\n", iBeginBand, iEndBand,
extra);
1505 return cyBandsNew - cyBandsOld;
1538 if (
extra <= cyBreakExtra / 2)
1543 TRACE(
"Adding break on band %d - extra %d -> %d\n",
i,
extra,
extra - cyBreakExtra);
1547 extra -= cyBreakExtra;
1562 while (i < infoPtr->uNumBands)
1565 int extraForRow =
extra / (
int)(uNumRows - iRow);
1613 UINT textheight=0, imageheight = 0;
1633 if (lpBand->
cx > 65535) lpBand->
cx = 0;
1672 if (lpBand->
iImage != -1 && (infoPtr->
himl)) {
1726 UINT uChanged = 0x0;
1765 TRACE(
"child: %p prev parent: %p\n",
1803 (lpBand->
cx != lprbbi->
cx ) )
1805 lpBand->
cx = lprbbi->
cx;
1817 (lpBand->
wID != lprbbi->
wID ) )
1819 lpBand->
wID = lprbbi->
wID;
1885 if (lpBand->
iRow != oldrow) {
1886 oldrow = lpBand->
iRow;
1906 TRACE (
"drawing band separator bottom (%s)\n",
1931 TRACE(
"drawing band separator right (%s)\n",
1965 TRACE(
"%s background color=0x%06x, band %s\n",
1998 for (iCount = 0; iCount < infoPtr->
uNumBands; iCount++) {
2008 TRACE(
"ON GRABBER %d\n", iCount);
2013 TRACE(
"ON CAPTION %d\n", iCount);
2018 TRACE(
"ON CAPTION %d\n", iCount);
2023 TRACE(
"ON CLIENT %d\n", iCount);
2028 TRACE(
"ON CHEVRON %d\n", iCount);
2033 TRACE(
"NOWHERE %d\n", iCount);
2064 INT iHitBand, iRowBegin, iRowEnd;
2065 INT movement, xBand, cxLeft = 0;
2078 if(iHitBand != iRowBegin)
2083 if(cxLeft < -movement)
2090 }
else if (movement > 0) {
2096 if(cxLeft < movement)
2112 iRowEnd, xBand + movement,
TRUE);
2127 INT iHitBand, iRowBegin, iNextRowBegin;
2131 ERR(
"There are no bands in this rebar\n");
2145 (iHitBand < infoPtr->uNumBands - 1))
2154 hitBand->fStyle &= ~RBBS_BREAK;
2157 infoPtr->
bands, 0, hitBand);
2173 while(iRowBegin < infoPtr->uNumBands)
2177 if(rowBeginBand->rcBand.bottom > yOff)
2180 infoPtr, iHitBand, iRowBegin, iNextRowBegin,
2186 iRowBegin = iNextRowBegin;
2206 TRACE(
"deleting band %u!\n", uBand);
2293 TRACE(
"index %u (bUnicode=%d)\n", uIndex, bUnicode);
2334 lprbbi->
cx = lpBand->
cx;
2340 lprbbi->
wID = lpBand->
wID;
2367 TRACE(
"height = %d\n", nHeight);
2379 TRACE(
"getting bar info!\n");
2381 if (infoPtr->
himl) {
2398 TRACE(
"background color 0x%06x!\n", clr);
2411 FIXME(
"empty stub!\n");
2422 if (iBand < 0 || iBand >= infoPtr->
uNumBands)
2456 if (lpBand->
iRow != iRow)
continue;
2461 TRACE(
"row %d, height %d\n", iRow,
ret);
2486 TRACE(
"%s hwnd=%p\n",
2509 return lprbht->
iBand;
2523 TRACE(
"id %u is band %u found!\n", uId,
i);
2528 TRACE(
"id %u is not found\n", uId);
2542 TRACE(
"insert band at %d (bUnicode=%d)!\n", iIndex, bUnicode);
2546 if ((iIndex == -1) || (iIndex > infoPtr->
uNumBands))
2555 TRACE(
"index %d!\n", iIndex);
2558 memset(lpBand, 0,
sizeof(*lpBand));
2604 int iRowBegin, iRowEnd;
2605 int cxDesired,
extra, extraOrig;
2611 ERR(
"Illegal MaximizeBand, requested=%d, current band count=%d\n",
2621 WARN(
"Ignoring maximize request on a hidden band (%d)\n", iBand);
2627 cxDesired = cxIdealBand;
2640 TRACE(
"(%d, %ld): Wanted size %d, obtained %d (shrink %d, %d)\n", iBand,
lParam, cxDesired, lpBand->
cx, extraOrig,
extra);
2657 int iPrev, iRowBegin, iRowEnd;
2667 ERR(
"Illegal MinimizeBand, requested=%d, current band count=%d\n",
2678 WARN(
"Ignoring minimize request on a hidden band (%d)\n", iBand);
2686 if (iNext < infoPtr->uNumBands &&
REBAR_GetBand(infoPtr, iNext)->iRow == lpBand->
iRow) {
2687 TRACE(
"(%d): Minimizing the first band in row is by maximizing the second\n", iBand);
2691 TRACE(
"(%d): Only one band in row - nothing to do\n", iBand);
2719 (iFrom < 0) || iFrom >= infoPtr->
uNumBands ||
2720 (iTo < 0) || iTo >= infoPtr->
uNumBands) {
2722 ERR(
"Illegal MoveBand, from=%d, to=%d, current band count=%d\n",
2731 TRACE(
"moved band %d to index %d\n", iFrom, iTo);
2766 TRACE(
"index %d\n", iBand);
2811 TRACE(
"setting bar info!\n");
2815 if (infoPtr->
himl) {
2844 clrTemp = infoPtr->
clrBk;
2845 infoPtr->
clrBk = clr;
2847 TRACE(
"background color 0x%06x!\n", infoPtr->
clrBk);
2890 TRACE(
"to %s hwnd=%p, was %s\n",
2891 unicode ?
"TRUE" :
"FALSE", infoPtr->
hwndSelf,
2892 (bTemp) ?
"TRUE" :
"FALSE");
2910 TRACE(
"new version %d\n", iVersion);
2921 if (iBand < 0 || iBand >= infoPtr->
uNumBands)
2927 TRACE(
"show band %d\n", iBand);
2933 TRACE(
"hide band %d\n", iBand);
2953 if (!lpRect)
return FALSE;
2980 TRACE(
"window=(%s) client=(%s) cs=(%d,%d %dx%d)\n",
2985 TRACE(
"created!\n");
2990 infoPtr->
dwStyle &= ~WS_BORDER;
3030 TRACE(
"destroyed!\n");
3043 if (uBand < infoPtr->uNumBands)
3048 TRACE(
"Pressed chevron on band %u\n", uBand);
3056 nmrbc.
uBand = uBand;
3064 lpBand->
fDraw &= ~DRAW_CHEVRONPUSHED;
3091 TRACE(
"Starting drag\n");
3127 infoPtr->
fStatus &= ~BEGIN_DRAG_ISSUED;
3147 lpChevronBand->
fDraw &= ~DRAW_CHEVRONHOT;
3173 ERR(
"We are dragging but haven't got capture?!?\n");
3196 if ((yPtMove < band->rcBand.top) ||
3217 lpChevronBand->
fDraw &= ~DRAW_CHEVRONHOT;
3289 NONCLIENTMETRICSW ncm;
3293 ERR(
"Strange info structure pointer *not* NULL\n");
3300 TRACE(
"window=(%s) client=(%s) cs=(%d,%d %dx%d)\n",
3339 ncm.cbSize =
sizeof(ncm);
3342 if (ncm.lfCaptionFont.lfWeight >
FW_NORMAL) {
3384 TRACE(
"notify changed return value from %ld to %d\n",
3439 ERR(
"wrong response to WM_NOTIFYFORMAT (%d), assuming ANSI\n",
i);
3453 TRACE(
"painting\n");
3535 TRACE(
"set to %s, fStatus=%08x\n",
3544 infoPtr->
fStatus &= ~BAND_NEEDS_REDRAW;
3546 return (oldredraw) ? -1 : 0;
3557 infoPtr->
fStatus &= ~SELF_RESIZE;
3558 TRACE(
"SELF_RESIZE was set, reset, fStatus=%08x lparam=%08lx\n",
3575 TRACE(
"current style=%08x, styleOld=%08x, style being set to=%08x\n",
3581 infoPtr->
dwStyle &= ~WS_BORDER;
3597 infoPtr->
dwStyle &= ~WS_BORDER;
3621 TRACE(
"hwnd=%p msg=%x wparam=%lx lparam=%lx\n",
3790 case WM_NOTIFYFORMAT:
3814 case WM_STYLECHANGED:
3817 case WM_THEMECHANGED:
3837 ERR(
"unknown msg %04x wp=%08lx lp=%08lx\n",
static const char * wine_dbgstr_point(const POINT *ppt)
static const char * wine_dbgstr_rect(const RECT *prc)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
PVOID Alloc(IN DWORD dwFlags, IN SIZE_T dwBytes)
static const WCHAR szClassName[]
INT Str_GetPtrWtoA(LPCWSTR lpSrc, LPSTR lpDest, INT nMaxLen) DECLSPEC_HIDDEN
BOOL COMCTL32_IsReflectedMessage(UINT uMsg) DECLSPEC_HIDDEN
BOOL Str_SetPtrAtoW(LPWSTR *lppDest, LPCSTR lpSrc) DECLSPEC_HIDDEN
VOID COMCTL32_RefreshSysColors(void) DECLSPEC_HIDDEN
INT WINAPI Str_GetPtrW(LPCWSTR, LPWSTR, INT)
COMCTL32_SysColor comctl32_color
BOOL WINAPI _TrackMouseEvent(TRACKMOUSEEVENT *ptme)
LPVOID WINAPI DPA_DeletePtr(HDPA hdpa, INT i)
BOOL WINAPI DPA_Destroy(HDPA hdpa)
HDPA WINAPI DPA_Create(INT nGrow)
INT WINAPI DPA_InsertPtr(HDPA hdpa, INT i, LPVOID p)
BOOL WINAPI ImageList_Draw(HIMAGELIST himl, INT i, HDC hdc, INT x, INT y, UINT fStyle)
BOOL WINAPI ImageList_GetIconSize(HIMAGELIST himl, INT *cx, INT *cy)
static void REBAR_HandleUDDrag(REBAR_INFO *infoPtr, const POINT *ptsmove)
static LRESULT REBAR_GetBarInfo(const REBAR_INFO *infoPtr, LPREBARINFO lpInfo)
static LRESULT REBAR_SetCursor(const REBAR_INFO *infoPtr, LPARAM lParam)
static LRESULT WINAPI REBAR_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
static void translate_rect(const REBAR_INFO *infoPtr, RECT *dest, const RECT *src)
static LRESULT REBAR_GetBandInfoT(const REBAR_INFO *infoPtr, UINT uIndex, LPREBARBANDINFOW lprbbi, BOOL bUnicode)
static LRESULT REBAR_SetVersion(REBAR_INFO *infoPtr, INT iVersion)
#define REBAR_PRE_GRIPPER
static LRESULT REBAR_IdToIndex(const REBAR_INFO *infoPtr, UINT uId)
static LRESULT REBAR_Create(REBAR_INFO *infoPtr, LPCREATESTRUCTW cs)
static LRESULT REBAR_NCCalcSize(const REBAR_INFO *infoPtr, RECT *rect)
static LRESULT REBAR_GetRect(const REBAR_INFO *infoPtr, INT iBand, RECT *lprc)
static VOID REBAR_ForceResize(REBAR_INFO *infoPtr)
#define REBAR_ALWAYS_SPACE
static HWND REBAR_GetNotifyParent(const REBAR_INFO *infoPtr)
static VOID REBAR_MoveChildWindows(const REBAR_INFO *infoPtr, UINT start, UINT endplus)
static CHAR * REBAR_FmtStyle(char *buffer, UINT style)
static int REBAR_ShrinkBandsRTL(const REBAR_INFO *infoPtr, INT iBeginBand, INT iEndBand, INT cxShrink, BOOL bEnforce)
static LRESULT REBAR_SetRedraw(REBAR_INFO *infoPtr, BOOL redraw)
static VOID REBAR_DumpBandInfo(const REBARBANDINFOW *pB)
static LRESULT REBAR_SetTextColor(REBAR_INFO *infoPtr, COLORREF clr)
static LRESULT REBAR_SetBkColor(REBAR_INFO *infoPtr, COLORREF clr)
static LRESULT REBAR_GetRowCount(const REBAR_INFO *infoPtr)
#define RB_GETBANDINFO_OLD
static REBAR_BAND * REBAR_GetBand(const REBAR_INFO *infoPtr, INT i)
static LRESULT REBAR_GetBandCount(const REBAR_INFO *infoPtr)
static int get_rect_cx(const REBAR_INFO *infoPtr, const RECT *lpRect)
static LRESULT REBAR_LButtonDown(REBAR_INFO *infoPtr, LPARAM lParam)
static LRESULT REBAR_GetTextColor(const REBAR_INFO *infoPtr)
static LRESULT REBAR_InsertBandT(REBAR_INFO *infoPtr, INT iIndex, const REBARBANDINFOW *lprbbi, BOOL bUnicode)
static LRESULT REBAR_SizeToRect(REBAR_INFO *infoPtr, const RECT *lpRect)
static CHAR * REBAR_FmtMask(char *buffer, UINT mask)
static LRESULT REBAR_ShowBand(REBAR_INFO *infoPtr, INT iBand, BOOL show)
static LRESULT REBAR_MouseLeave(REBAR_INFO *infoPtr)
VOID REBAR_Unregister(void)
static int get_row_end_for_band(const REBAR_INFO *infoPtr, INT iBand)
static int REBAR_MoveBandToRowOffset(REBAR_INFO *infoPtr, INT iBand, INT iFirstBand, INT iLastBand, INT xOff, BOOL reorder)
static LRESULT REBAR_GetFont(const REBAR_INFO *infoPtr)
static BOOL REBAR_strdifW(LPCWSTR a, LPCWSTR b)
static LRESULT REBAR_HitTest(const REBAR_INFO *infoPtr, LPRBHITTESTINFO lprbht)
static const char *const band_maskname[]
static void REBAR_DrawChevron(HDC hdc, INT left, INT top, INT colorRef)
#define RBBS_UNDOC_FIXEDHEADER
static LRESULT REBAR_GetToolTips(const REBAR_INFO *infoPtr)
static LRESULT REBAR_PushChevron(const REBAR_INFO *infoPtr, UINT uBand, LPARAM lParam)
static LRESULT REBAR_SetParent(REBAR_INFO *infoPtr, HWND parent)
static int REBAR_ShrinkBandsLTR(const REBAR_INFO *infoPtr, INT iBeginBand, INT iEndBand, INT cxShrink, BOOL bEnforce)
static LRESULT REBAR_EraseBkGnd(const REBAR_INFO *infoPtr, HDC hdc)
static int REBAR_SizeChildrenToHeight(const REBAR_INFO *infoPtr, int iBeginBand, int iEndBand, int extra, BOOL *fChanged)
static INT REBAR_Notify_NMREBAR(const REBAR_INFO *infoPtr, UINT uBand, UINT code)
#define BAND_NEEDS_REDRAW
static LRESULT REBAR_DeleteBand(REBAR_INFO *infoPtr, WPARAM wParam)
static VOID REBAR_ValidateBand(const REBAR_INFO *infoPtr, REBAR_BAND *lpBand)
static LRESULT REBAR_Destroy(REBAR_INFO *infoPtr)
static LRESULT REBAR_GetBkColor(const REBAR_INFO *infoPtr)
static LRESULT REBAR_GetPalette(const REBAR_INFO *infoPtr)
static VOID REBAR_CalcVertBand(const REBAR_INFO *infoPtr, UINT rstart, UINT rend)
#define BEGIN_DRAG_ISSUED
static VOID REBAR_Layout(REBAR_INFO *infoPtr)
static int round_child_height(const REBAR_BAND *lpBand, int cyHeight)
static int get_row_begin_for_band(const REBAR_INFO *infoPtr, INT iBand)
static LRESULT REBAR_NCHitTest(const REBAR_INFO *infoPtr, LPARAM lParam)
static LRESULT REBAR_MinimizeBand(const REBAR_INFO *infoPtr, INT iBand)
static LRESULT REBAR_GetBandBorders(const REBAR_INFO *infoPtr, UINT uBand, RECT *lpRect)
static LRESULT REBAR_NotifyFormat(REBAR_INFO *infoPtr, LPARAM lParam)
static VOID REBAR_DumpBand(const REBAR_INFO *iP)
static LRESULT REBAR_WindowPosChanged(const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
#define REBAR_GetInfoPtr(wndPtr)
static LRESULT REBAR_SetBandInfoT(REBAR_INFO *infoPtr, INT iBand, const REBARBANDINFOW *lprbbi, BOOL bUnicode)
static int get_rect_cy(const REBAR_INFO *infoPtr, const RECT *lpRect)
static VOID REBAR_SizeToHeight(REBAR_INFO *infoPtr, int height)
static LRESULT REBAR_SetBarInfo(REBAR_INFO *infoPtr, const REBARINFO *lpInfo)
static const char *const band_stylename[]
static LRESULT REBAR_GetVersion(const REBAR_INFO *infoPtr)
static const WCHAR themeClass[]
static LRESULT REBAR_NCPaint(const REBAR_INFO *infoPtr)
static LRESULT REBAR_GetBarHeight(const REBAR_INFO *infoPtr)
static int next_visible(const REBAR_INFO *infoPtr, int i)
VOID REBAR_Register(void)
static void REBAR_SetRowRectsX(const REBAR_INFO *infoPtr, INT iBeginBand, INT iEndBand)
static LRESULT REBAR_MouseMove(REBAR_INFO *infoPtr, LPARAM lParam)
static void update_min_band_height(const REBAR_INFO *infoPtr, REBAR_BAND *lpBand)
static VOID REBAR_Refresh(const REBAR_INFO *infoPtr, HDC hdc)
static LRESULT REBAR_NCCreate(HWND hwnd, const CREATESTRUCTW *cs)
static LRESULT REBAR_GetRowHeight(const REBAR_INFO *infoPtr, INT iRow)
static int REBAR_SetBandsHeight(const REBAR_INFO *infoPtr, INT iBeginBand, INT iEndBand, INT yStart)
static LRESULT REBAR_GetUnicodeFormat(const REBAR_INFO *infoPtr)
static LRESULT REBAR_Paint(const REBAR_INFO *infoPtr, HDC hdc)
static UINT REBAR_CommonSetupBand(HWND hwnd, const REBARBANDINFOW *lprbbi, REBAR_BAND *lpBand)
static void REBAR_InternalHitTest(const REBAR_INFO *infoPtr, const POINT *lpPt, UINT *pFlags, INT *pBand)
static LRESULT REBAR_StyleChanged(REBAR_INFO *infoPtr, INT nType, const STYLESTRUCT *lpStyle)
static void REBAR_AutoSize(REBAR_INFO *infoPtr, BOOL needsLayout)
static LRESULT REBAR_MoveBand(REBAR_INFO *infoPtr, INT iFrom, INT iTo)
static REBAR_BAND * REBAR_FindBandToGrow(const REBAR_INFO *infoPtr, INT iBeginBand, INT iEndBand)
static LRESULT REBAR_MaximizeBand(const REBAR_INFO *infoPtr, INT iBand, LPARAM lParam)
static INT REBAR_Notify(NMHDR *nmhdr, const REBAR_INFO *infoPtr, UINT code)
static VOID REBAR_DrawBand(HDC hdc, const REBAR_INFO *infoPtr, REBAR_BAND *lpBand)
static LRESULT REBAR_Size(REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
static void REBAR_HandleLRDrag(REBAR_INFO *infoPtr, const POINT *ptsmove)
static LRESULT REBAR_SetFont(REBAR_INFO *infoPtr, HFONT font)
static void REBAR_CalcHorzBand(const REBAR_INFO *infoPtr, UINT rstart, UINT rend)
#define DRAW_CHEVRONPUSHED
#define REBAR_NO_CHILD_HEIGHT
static LRESULT theme_changed(REBAR_INFO *infoPtr)
static int first_visible(const REBAR_INFO *infoPtr)
static LRESULT REBAR_SetUnicodeFormat(REBAR_INFO *infoPtr, BOOL unicode)
static void REBAR_LayoutRow(const REBAR_INFO *infoPtr, int iBeginBand, int iEndBand, int cx, int *piRow, int *pyPos)
static int prev_visible(const REBAR_INFO *infoPtr, int i)
static LRESULT REBAR_LButtonUp(REBAR_INFO *infoPtr)
BOOL WINAPI Str_SetPtrW(LPWSTR *lppDest, LPCWSTR lpSrc)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
HRESULT WINAPI DrawThemeEdge(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, const RECT *pDestRect, UINT uEdge, UINT uFlags, RECT *pContentRect)
HRESULT WINAPI DrawThemeBackground(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, const RECT *pRect, const RECT *pClipRect)
BOOL WINAPI IsThemeBackgroundPartiallyTransparent(HTHEME hTheme, int iPartId, int iStateId)
HRESULT WINAPI GetThemeBackgroundExtent(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, const RECT *pContentRect, RECT *pExtentRect)
HRESULT WINAPI DrawThemeText(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, LPCWSTR pszText, int iCharCount, DWORD dwTextFlags, DWORD dwTextFlags2, const RECT *pRect)
HRESULT WINAPI DrawThemeParentBackground(HWND hwnd, HDC hdc, RECT *prc)
HTHEME WINAPI GetWindowTheme(HWND hwnd)
HRESULT WINAPI CloseThemeData(HTHEME hTheme)
HTHEME WINAPI OpenThemeData(HWND hwnd, LPCWSTR pszClassList)
struct png_info_def *typedef unsigned char **typedef struct png_info_def *typedef struct png_info_def *typedef struct png_info_def *typedef unsigned char ** row
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
GLint GLint GLsizei GLsizei height
GLint GLint GLsizei width
GLdouble GLdouble GLdouble GLdouble top
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
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 HTHEME(WINAPI *pOpenThemeDataEx)(HWND
INT WINAPI DrawTextW(HDC hdc, LPCWSTR str, INT count, LPRECT rect, UINT flags)
#define CDDS_ITEMPOSTPAINT
_Out_opt_ int _Out_opt_ int * cy
#define REBARBANDINFOW_V6_SIZE
#define REBARBANDINFOA_V3_SIZE
#define CDDS_ITEMPREPAINT
#define RB_SETUNICODEFORMAT
#define RB_GETUNICODEFORMAT
#define CDRF_NOTIFYITEMDRAW
#define RB_GETBANDBORDERS
#define CDRF_NOTIFYPOSTPAINT
#define RBN_LAYOUTCHANGED
#define REBARBANDINFOA_V6_SIZE
struct tagTRACKMOUSEEVENT TRACKMOUSEEVENT
#define RBN_CHEVRONPUSHED
#define CCS_NOPARENTALIGN
#define RBBS_GRIPPERALWAYS
#define RBS_VERTICALGRIPPER
#define RBBS_VARIABLEHEIGHT
void redraw(int x, int y, int cx, int cy)
static const char *static const char const char DWORD void DWORD *static const char const char DWORD void DWORD *static const char DWORD DWORD void * buff
HGDIOBJ WINAPI GetStockObject(_In_ int)
COLORREF WINAPI SetBkColor(_In_ HDC, _In_ COLORREF)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
BOOL WINAPI MoveToEx(_In_ HDC, _In_ int, _In_ int, _Out_opt_ LPPOINT)
COLORREF WINAPI GetBkColor(_In_ HDC)
BOOL WINAPI ExtTextOutW(_In_ HDC hdc, _In_ int x, _In_ int y, _In_ UINT options, _In_opt_ const RECT *lprect, _In_reads_opt_(c) LPCWSTR lpString, _In_ UINT c, _In_reads_opt_(c) const INT *lpDx)
HFONT WINAPI CreateFontIndirectW(_In_ const LOGFONTW *)
int WINAPI SetBkMode(_In_ HDC, _In_ int)
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
HBRUSH WINAPI CreateSolidBrush(_In_ COLORREF)
HPEN WINAPI CreatePen(_In_ int, _In_ int, _In_ COLORREF)
BOOL WINAPI LineTo(_In_ HDC, _In_ int, _In_ int)
BOOL WINAPI GetTextExtentPoint32W(_In_ HDC hdc, _In_reads_(c) LPCWSTR lpString, _In_ int c, _Out_ LPSIZE psizl)
HWND WINAPI SetCapture(_In_ HWND hWnd)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
DWORD WINAPI GetSysColor(_In_ int)
BOOL WINAPI IsWindow(_In_opt_ HWND)
BOOL WINAPI RedrawWindow(_In_opt_ HWND, _In_opt_ LPCRECT, _In_opt_ HRGN, _In_ UINT)
BOOL WINAPI DestroyCursor(_In_ HCURSOR)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI ReleaseCapture(void)
#define COLOR_WINDOWFRAME
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
HWND WINAPI SetParent(_In_ HWND, _In_opt_ HWND)
LONG WINAPI SetWindowLongW(_In_ HWND, _In_ int, _In_ LONG)
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
BOOL WINAPI GetCursorPos(_Out_ LPPOINT)
#define SW_SHOWNOACTIVATE
BOOL WINAPI IsRectEmpty(_In_ LPCRECT)
HCURSOR WINAPI SetCursor(_In_opt_ HCURSOR)
HDC WINAPI GetDCEx(_In_opt_ HWND, _In_opt_ HRGN, _In_ DWORD)
HWND WINAPI GetCapture(void)
BOOL WINAPI EndDeferWindowPos(_In_ HDWP)
#define WM_SYSCOLORCHANGE
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
BOOL WINAPI PtInRect(_In_ LPCRECT, _In_ POINT)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI DrawEdge(_In_ HDC, _Inout_ LPRECT, _In_ UINT, _In_ UINT)
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
BOOL WINAPI UpdateWindow(_In_ HWND)
HDC WINAPI GetDC(_In_opt_ HWND)
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
HWND WINAPI GetParent(_In_ HWND)
HWND WINAPI GetWindow(_In_ HWND, _In_ UINT)
_In_ int _Inout_ LPRECT lprc
int WINAPI GetClassNameW(_In_ HWND hWnd, _Out_writes_to_(nMaxCount, return) LPWSTR lpClassName, _In_ int nMaxCount)
BOOL WINAPI OffsetRect(_Inout_ LPRECT, _In_ int, _In_ int)
int WINAPI GetDlgCtrlID(_In_ HWND)
HDWP WINAPI DeferWindowPos(_In_ HDWP, _In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
BOOL WINAPI UnregisterClassW(_In_ LPCWSTR, HINSTANCE)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
#define SetWindowLongPtrW
BOOL WINAPI InflateRect(_Inout_ LPRECT, _In_ int, _In_ int)
#define WM_WINDOWPOSCHANGED
BOOL WINAPI DestroyWindow(_In_ HWND)
BOOL WINAPI EqualRect(_In_ LPCRECT, _In_ LPCRECT)
int WINAPI GetSystemMetrics(_In_ int)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
HDWP WINAPI BeginDeferWindowPos(_In_ int)
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION Free
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList