87#include "wine/unicode.h"
140#define CCS_LAYOUT_MASK 0x3
143#define HAS_GRIPPER 0x00000001
144#define HAS_IMAGE 0x00000002
145#define HAS_TEXT 0x00000004
148#define DRAW_GRIPPER 0x00000001
149#define DRAW_IMAGE 0x00000002
150#define DRAW_TEXT 0x00000004
151#define DRAW_CHEVRONHOT 0x00000040
152#define DRAW_CHEVRONPUSHED 0x00000080
153#define NTF_INVALIDATE 0x01000000
192#define BEGIN_DRAG_ISSUED 0x00000001
193#define SELF_RESIZE 0x00000002
194#define BAND_NEEDS_REDRAW 0x00000020
197#define RBBS_UNDOC_FIXEDHEADER 0x40000000
204#define SEP_WIDTH_SIZE 2
205#define SEP_WIDTH ((infoPtr->dwStyle & RBS_BANDBORDERS) ? SEP_WIDTH_SIZE : 0)
209#define REBAR_ALWAYS_SPACE 4
212#define REBAR_POST_IMAGE 2
215#define REBAR_POST_TEXT 4
218#define GRIPPER_HEIGHT 16
221#define REBAR_PRE_GRIPPER 2
225#define GRIPPER_WIDTH 3
228#define CHEVRON_WIDTH 10
231#define REBAR_POST_CHILD 4
235#define REBAR_DIVIDER 2
238#define REBAR_NO_CHILD_HEIGHT 4
242#define REBAR_MINSIZE 23
245#define REBARSPACE(a) ((a->fStyle & RBBS_CHILDEDGE) ? 2*REBAR_DIVIDER : 0)
249#define RB_GETBANDINFO_OLD (WM_USER+5)
252#define HIDDENBAND(a) (((a)->fStyle & RBBS_HIDDEN) || \
253 ((infoPtr->dwStyle & CCS_VERT) && \
254 ((a)->fStyle & RBBS_NOVERT)))
256#define REBAR_GetInfoPtr(wndPtr) ((REBAR_INFO *)GetWindowLongPtrW (hwnd, 0))
264 assert(
i >= 0 && i < infoPtr->uNumBands);
280 "RBBS_VARIABLEHEIGHT",
281 "RBBS_GRIPPERALWAYS",
343 TRACE(
"band info: ");
367 TRACE(
"band info: xMin=%u, yMin=%u, yChild=%u, yMax=%u, yIntgl=%u\n",
380 TRACE(
"hwnd=%p: color=%08x/%08x, bands=%u, rows=%u, cSize=%d,%d\n",
383 TRACE(
"hwnd=%p: flags=%08x, dragStart=%d,%d, dragNow=%d,%d, iGrabbedBand=%d\n",
387 TRACE(
"hwnd=%p: style=%08x, notify in Unicode=%s, redraw=%s\n",
402 TRACE(
"band # %u: style=0x%08x (%s)\n",
404 TRACE(
"band # %u: xHeader=%u",
416 TRACE(
"band # %u: xMin=%u, yMin=%u, yChild=%u, yMax=%u, yIntgl=%u\n",
419 TRACE(
"band # %u: text=%s\n",
421 TRACE(
"band # %u: cxMinBand=%u, cxEffective=%u, cyMinBand=%u\n",
423 TRACE(
"band # %u: fStatus=%08x, fDraw=%08x, Band=(%s), Grip=(%s)\n",
426 TRACE(
"band # %u: Img=(%s), Txt=(%s), Child=(%s)\n",
510 if (owner)
parent = owner;
542 notify_rebar.
wID = lpBand->
wID;
553 notify_rebar.
uBand = uBand;
710 TRACE(
"[%p] drawing band %i, flags=%08x\n",
727 for(
i=rstart;
i<rend;
i++){
820 lpBand->
fDraw &= ~NTF_INVALIDATE;
844 for(
i=rstart;
i<rend;
i++){
924 xoff = (cxBand - lpBand->
cyChild) / 2;
936 lpBand->
fDraw &= ~NTF_INVALIDATE;
955 INT xedge = 0, yedge = 0;
1005 TRACE(
"hwnd %p, style=%08x, setting at (%d,%d) for (%d,%d)\n",
1014 infoPtr->
fStatus &= ~SELF_RESIZE;
1021 static const WCHAR strComboBox[] = {
'C',
'o',
'm',
'b',
'o',
'B',
'o',
'x',0 };
1029 ERR(
"BeginDeferWindowPos returned NULL\n");
1031 for (
i =
start;
i < endplus;
i++) {
1050 TRACE(
"Child rect changed by NOTIFY for band %u\n",
i);
1051 TRACE(
" from (%s) to (%s)\n",
1054 lpBand->
rcChild = rbcz.rcChild;
1060 INT nEditHeight, yPos;
1072 TRACE(
"moving child (Combo(Ex)) %p to (%d,%d) for (%d,%d)\n",
1084 ERR(
"DeferWindowPos returned NULL\n");
1087 TRACE(
"moving child (Other) %p to (%d,%d) for (%d,%d)\n",
1099 ERR(
"DeferWindowPos returned NULL\n");
1104 ERR(
"EndDeferWindowPos returned NULL\n");
1126 for (
n =
i - 1;
n >= 0;
n--)
1141 int iLastBand = iBand;
1188 INT cxMinFirstBand = 0,
i;
1202 TRACE(
"Extra space for row [%d..%d) should be added to band %d\n", iBeginBand, iEndBand,
i);
1212 TRACE(
"Shrinking bands [%d..%d) by %d, right-to-left\n", iBeginBand, iEndBand, cxShrink);
1236 TRACE(
"Shrinking bands [%d..%d) by %d, left-to-right\n", iBeginBand, iEndBand, cxShrink);
1290 insertBand->
fStyle &= ~RBBS_BREAK;
1317 TRACE(
"Bands [%d; %d) height: %d\n", iBeginBand, iEndBand, yMaxHeight);
1335 return yPos + yMaxHeight;
1345 TRACE(
"Adjusting row [%d;%d). Width: %d\n", iBeginBand, iEndBand,
cx);
1346 for (
i = iBeginBand;
i < iEndBand;
i++)
1364 ERR(
"Error layouting row %d - couldn't shrink for %d pixels (%d total shrink)\n", *piRow,
ret, -
extra);
1401 TRACE(
"No bands - setting size to (0,%d), style: %x\n", adjcx, infoPtr->
dwStyle);
1428 if (rowstart < infoPtr->uNumBands)
1445 TRACE(
"calcsize size=(%d, %d), origheight=(%d,%d)\n",
1447 oldSize.
cx, oldSize.
cy);
1471 TRACE(
"[%d;%d) by %d\n", iBeginBand, iEndBand,
extra);
1491 return cyBandsNew - cyBandsOld;
1524 if (
extra <= cyBreakExtra / 2)
1529 TRACE(
"Adding break on band %d - extra %d -> %d\n",
i,
extra,
extra - cyBreakExtra);
1533 extra -= cyBreakExtra;
1548 while (i < infoPtr->uNumBands)
1551 int extraForRow =
extra / (
int)(uNumRows - iRow);
1599 UINT textheight=0, imageheight = 0;
1619 if (lpBand->
cx > 65535) lpBand->
cx = 0;
1658 if (lpBand->
iImage != -1 && (infoPtr->
himl)) {
1712 UINT uChanged = 0x0;
1751 TRACE(
"child: %p prev parent: %p\n",
1789 (lpBand->
cx != lprbbi->
cx ) )
1791 lpBand->
cx = lprbbi->
cx;
1803 (lpBand->
wID != lprbbi->
wID ) )
1805 lpBand->
wID = lprbbi->
wID;
1871 if (lpBand->
iRow != oldrow) {
1872 oldrow = lpBand->
iRow;
1892 TRACE (
"drawing band separator bottom (%s)\n",
1917 TRACE(
"drawing band separator right (%s)\n",
1951 TRACE(
"%s background color=0x%06x, band %s\n",
1984 for (iCount = 0; iCount < infoPtr->
uNumBands; iCount++) {
1994 TRACE(
"ON GRABBER %d\n", iCount);
1999 TRACE(
"ON CAPTION %d\n", iCount);
2004 TRACE(
"ON CAPTION %d\n", iCount);
2009 TRACE(
"ON CLIENT %d\n", iCount);
2014 TRACE(
"ON CHEVRON %d\n", iCount);
2019 TRACE(
"NOWHERE %d\n", iCount);
2050 INT iHitBand, iRowBegin, iRowEnd;
2051 INT movement, xBand, cxLeft = 0;
2064 if(iHitBand != iRowBegin)
2069 if(cxLeft < -movement)
2076 }
else if (movement > 0) {
2082 if(cxLeft < movement)
2098 iRowEnd, xBand + movement,
TRUE);
2113 INT iHitBand, iRowBegin, iNextRowBegin;
2117 ERR(
"There are no bands in this rebar\n");
2131 (iHitBand < infoPtr->uNumBands - 1))
2140 hitBand->fStyle &= ~RBBS_BREAK;
2143 infoPtr->
bands, 0, hitBand);
2159 while(iRowBegin < infoPtr->uNumBands)
2163 if(rowBeginBand->rcBand.bottom > yOff)
2166 infoPtr, iHitBand, iRowBegin, iNextRowBegin,
2172 iRowBegin = iNextRowBegin;
2192 TRACE(
"deleting band %u!\n", uBand);
2279 TRACE(
"index %u (bUnicode=%d)\n", uIndex, bUnicode);
2320 lprbbi->
cx = lpBand->
cx;
2326 lprbbi->
wID = lpBand->
wID;
2353 TRACE(
"height = %d\n", nHeight);
2365 TRACE(
"getting bar info!\n");
2367 if (infoPtr->
himl) {
2384 TRACE(
"background color 0x%06x!\n", clr);
2397 FIXME(
"empty stub!\n");
2408 if (iBand < 0 || iBand >= infoPtr->
uNumBands)
2442 if (lpBand->
iRow != iRow)
continue;
2447 TRACE(
"row %d, height %d\n", iRow,
ret);
2472 TRACE(
"%s hwnd=%p\n",
2495 return lprbht->
iBand;
2509 TRACE(
"id %u is band %u found!\n", uId,
i);
2514 TRACE(
"id %u is not found\n", uId);
2528 TRACE(
"insert band at %d (bUnicode=%d)!\n", iIndex, bUnicode);
2532 if ((iIndex == -1) || (iIndex > infoPtr->
uNumBands))
2541 TRACE(
"index %d!\n", iIndex);
2544 memset(lpBand, 0,
sizeof(*lpBand));
2585 int iRowBegin, iRowEnd;
2586 int cxDesired,
extra, extraOrig;
2592 ERR(
"Illegal MaximizeBand, requested=%d, current band count=%d\n",
2602 WARN(
"Ignoring maximize request on a hidden band (%d)\n", iBand);
2608 cxDesired = cxIdealBand;
2621 TRACE(
"(%d, %ld): Wanted size %d, obtained %d (shrink %d, %d)\n", iBand,
lParam, cxDesired, lpBand->
cx, extraOrig,
extra);
2638 int iPrev, iRowBegin, iRowEnd;
2648 ERR(
"Illegal MinimizeBand, requested=%d, current band count=%d\n",
2659 WARN(
"Ignoring minimize request on a hidden band (%d)\n", iBand);
2667 if (iNext < infoPtr->uNumBands &&
REBAR_GetBand(infoPtr, iNext)->iRow == lpBand->
iRow) {
2668 TRACE(
"(%d): Minimizing the first band in row is by maximizing the second\n", iBand);
2672 TRACE(
"(%d): Only one band in row - nothing to do\n", iBand);
2700 (iFrom < 0) || iFrom >= infoPtr->
uNumBands ||
2701 (iTo < 0) || iTo >= infoPtr->
uNumBands) {
2703 ERR(
"Illegal MoveBand, from=%d, to=%d, current band count=%d\n",
2712 TRACE(
"moved band %d to index %d\n", iFrom, iTo);
2747 TRACE(
"index %d\n", iBand);
2792 TRACE(
"setting bar info!\n");
2796 if (infoPtr->
himl) {
2825 clrTemp = infoPtr->
clrBk;
2826 infoPtr->
clrBk = clr;
2828 TRACE(
"background color 0x%06x!\n", infoPtr->
clrBk);
2871 TRACE(
"to %s hwnd=%p, was %s\n",
2872 unicode ?
"TRUE" :
"FALSE", infoPtr->
hwndSelf,
2873 (bTemp) ?
"TRUE" :
"FALSE");
2891 TRACE(
"new version %d\n", iVersion);
2902 if (iBand < 0 || iBand >= infoPtr->
uNumBands)
2908 TRACE(
"show band %d\n", iBand);
2914 TRACE(
"hide band %d\n", iBand);
2934 if (!lpRect)
return FALSE;
2961 TRACE(
"window=(%s) client=(%s) cs=(%d,%d %dx%d)\n",
2966 TRACE(
"created!\n");
2971 infoPtr->
dwStyle &= ~WS_BORDER;
3011 TRACE(
"destroyed!\n");
3024 if (uBand < infoPtr->uNumBands)
3029 TRACE(
"Pressed chevron on band %u\n", uBand);
3037 nmrbc.
uBand = uBand;
3045 lpBand->
fDraw &= ~DRAW_CHEVRONPUSHED;
3072 TRACE(
"Starting drag\n");
3108 infoPtr->
fStatus &= ~BEGIN_DRAG_ISSUED;
3128 lpChevronBand->
fDraw &= ~DRAW_CHEVRONHOT;
3154 ERR(
"We are dragging but haven't got capture?!?\n");
3177 if ((yPtMove < band->rcBand.top) ||
3198 lpChevronBand->
fDraw &= ~DRAW_CHEVRONHOT;
3270 NONCLIENTMETRICSW ncm;
3274 ERR(
"Strange info structure pointer *not* NULL\n");
3281 TRACE(
"window=(%s) client=(%s) cs=(%d,%d %dx%d)\n",
3320 ncm.cbSize =
sizeof(ncm);
3323 if (ncm.lfCaptionFont.lfWeight >
FW_NORMAL) {
3365 TRACE(
"notify changed return value from %ld to %d\n",
3420 ERR(
"wrong response to WM_NOTIFYFORMAT (%d), assuming ANSI\n",
i);
3434 TRACE(
"painting\n");
3516 TRACE(
"set to %s, fStatus=%08x\n",
3525 infoPtr->
fStatus &= ~BAND_NEEDS_REDRAW;
3527 return (oldredraw) ? -1 : 0;
3538 infoPtr->
fStatus &= ~SELF_RESIZE;
3539 TRACE(
"SELF_RESIZE was set, reset, fStatus=%08x lparam=%08lx\n",
3556 TRACE(
"current style=%08x, styleOld=%08x, style being set to=%08x\n",
3562 infoPtr->
dwStyle &= ~WS_BORDER;
3578 infoPtr->
dwStyle &= ~WS_BORDER;
3602 TRACE(
"hwnd=%p msg=%x wparam=%lx lparam=%lx\n",
3771 case WM_NOTIFYFORMAT:
3795 case WM_STYLECHANGED:
3798 case WM_THEMECHANGED:
3818 ERR(
"unknown msg %04x wp=%08lx lp=%08lx\n",
char * strcat(char *DstString, const char *SrcString)
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 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 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 CHAR * REBAR_FmtStyle(UINT style)
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 CHAR * REBAR_FmtMask(UINT mask)
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)
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 OpenThemeData(HWND hwnd, LPCWSTR classlist)
HTHEME WINAPI GetWindowTheme(HWND hwnd)
HRESULT WINAPI CloseThemeData(HTHEME hTheme)
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
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
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)
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