- Handle CCS_NODIVIDER both when present and when not.

- Handle some cases of CCS_TOP, CCS_BOTTOM, and CCS_NOPARENTALIGN.
- Handle values returned from the RBN_CHILDSIZE notification.
- Implement RBBS_CHILDEDGE.
- Fix some logic errors in REBAR_AdjustBands, and problems with CCS_VERT.
oldstable
Guy L. Albertelli 2001-09-07 18:34:14 +00:00 committed by Alexandre Julliard
parent d786a12d58
commit 91fc357226
1 changed files with 154 additions and 70 deletions

View File

@ -1,3 +1,8 @@
/*
* Testing: set to 1 to make background brush *always* green
*/
#define GLATESTING 0
/* /*
* *
* 2. At "FIXME: problem # 2" WinRAR: * 2. At "FIXME: problem # 2" WinRAR:
@ -15,7 +20,7 @@
/* /*
* Rebar control rev 8 * Rebar control rev 8a
* *
* Copyright 1998, 1999 Eric Kohl * Copyright 1998, 1999 Eric Kohl
* *
@ -71,11 +76,24 @@
* 9. Implement item custom draw notifications partially. Only done for * 9. Implement item custom draw notifications partially. Only done for
* ITEMPREPAINT and ITEMPOSTPAINT. (Used by IE4 for "Favorites" frame * ITEMPREPAINT and ITEMPOSTPAINT. (Used by IE4 for "Favorites" frame
* to draw the word "Favorites"). * to draw the word "Favorites").
* rev 8a
* 10. Handle CCS_NODIVIDER and fix WS_BORDER code.
* 11. Fix logic error in _AdjustBands where flag was set to valid band
* number (0) to indicate *no* band.
* 12. Fix CCS_VERT errors in _ForceResize, _NCCalcSize, and _NCPaint.
* 13. Support some special cases of CCS_TOP (and therefore CCS_LEFT),
* CCS_BOTTOM (and therefore CCS_RIGHT) and CCS_NOPARENTALIGN. Not
* at all sure whether this is all cases.
* 14. Handle returned value for the RBN_CHILDSIZE notify.
* 15. Implement RBBS_CHILDEDGE, and set each bands "offChild" at _Layout
* time.
* 16. Fix REBARSPACE. It should depend on CCS_NODIVIDER.
* *
* *
* Still to do: * Still to do:
* 2. Following still not handled: RBBS_FIXEDBMP, RBBS_CHILDEDGE, * 2. Following still not handled: RBBS_FIXEDBMP,
* RBBS_USECHEVRON * RBBS_USECHEVRON, CCS_NORESIZE,
* CCS_NOMOVEX, CCS_NOMOVEY
* 3. Following are only partially handled: * 3. Following are only partially handled:
* RBS_AUTOSIZE, RBBS_VARIABLEHEIGHT * RBS_AUTOSIZE, RBBS_VARIABLEHEIGHT
* 5. Native uses (on each draw!!) SM_CYBORDER (or SM_CXBORDER for CCS_VERT) * 5. Native uses (on each draw!!) SM_CYBORDER (or SM_CXBORDER for CCS_VERT)
@ -242,9 +260,12 @@ typedef struct
/* if present. */ /* if present. */
#define GRIPPER_WIDTH 3 #define GRIPPER_WIDTH 3
/* This is the increment that is used over the band height */ /* Height of divider for Rebar if not disabled (CCS_NODIVIDER) */
/* Determined by experiment. */ /* either top or bottom */
#define REBARSPACE 4 #define REBAR_DIVIDER 2
/* This is the increment that is used over the band height */
#define REBARSPACE(a) ((a->fStyle & RBBS_CHILDEDGE) ? 2*REBAR_DIVIDER : 0)
/* ---- End of REBAR layout constants. ---- */ /* ---- End of REBAR layout constants. ---- */
@ -669,7 +690,7 @@ REBAR_AdjustBands (REBAR_INFO *infoPtr, UINT rowstart, UINT rowend,
lpBand = &infoPtr->bands[rowend]; lpBand = &infoPtr->bands[rowend];
extra = maxx - rcBrb(lpBand); extra = maxx - rcBrb(lpBand);
x = 0; x = 0;
last_adjusted = 0; last_adjusted = -1;
for (i=(INT)rowstart; i<=(INT)rowend; i++) { for (i=(INT)rowstart; i<=(INT)rowend; i++) {
lpBand = &infoPtr->bands[i]; lpBand = &infoPtr->bands[i];
if (HIDDENBAND(lpBand)) continue; if (HIDDENBAND(lpBand)) continue;
@ -714,7 +735,7 @@ REBAR_AdjustBands (REBAR_INFO *infoPtr, UINT rowstart, UINT rowend,
lpBand->rcBand.right, lpBand->rcBand.bottom, x, xsep); lpBand->rcBand.right, lpBand->rcBand.bottom, x, xsep);
x = rcBrb(lpBand); x = rcBrb(lpBand);
} }
if ((x >= maxx) || last_adjusted) { if ((x >= maxx) || (last_adjusted != -1)) {
if (x > maxx) { if (x > maxx) {
ERR("Phase 1 failed, x=%d, maxx=%d, start=%u, end=%u\n", ERR("Phase 1 failed, x=%d, maxx=%d, start=%u, end=%u\n",
x, maxx, rowstart, rowend); x, maxx, rowstart, rowend);
@ -973,8 +994,8 @@ REBAR_CalcVertBand (REBAR_INFO *infoPtr, UINT rstart, UINT rend, BOOL notify)
} }
else { else {
/* horizontal gripper */ /* horizontal gripper */
lpBand->rcGripper.left += 3; lpBand->rcGripper.left += 2;
lpBand->rcGripper.right -= 3; lpBand->rcGripper.right -= 2;
lpBand->rcGripper.top += REBAR_PRE_GRIPPER; lpBand->rcGripper.top += REBAR_PRE_GRIPPER;
lpBand->rcGripper.bottom = lpBand->rcGripper.top + GRIPPER_WIDTH; lpBand->rcGripper.bottom = lpBand->rcGripper.top + GRIPPER_WIDTH;
@ -1075,6 +1096,9 @@ REBAR_ForceResize (REBAR_INFO *infoPtr)
/* calculated by REBAR_Layout. */ /* calculated by REBAR_Layout. */
{ {
RECT rc; RECT rc;
INT x, y, width, height;
INT xedge = GetSystemMetrics(SM_CXEDGE);
INT yedge = GetSystemMetrics(SM_CYEDGE);
/* TEST TEST TEST */ /* TEST TEST TEST */
GetWindowRect (infoPtr->hwndSelf, &rc); GetWindowRect (infoPtr->hwndSelf, &rc);
@ -1106,24 +1130,69 @@ REBAR_ForceResize (REBAR_INFO *infoPtr)
/* Set flag to ignore next WM_SIZE message */ /* Set flag to ignore next WM_SIZE message */
infoPtr->fStatus |= AUTO_RESIZE; infoPtr->fStatus |= AUTO_RESIZE;
rc.left = 0; width = 0;
rc.top = 0; height = 0;
rc.right = infoPtr->calcSize.cx; x = 0;
rc.bottom = infoPtr->calcSize.cy; y = 0;
InflateRect (&rc, 0, GetSystemMetrics(SM_CYEDGE)); if (infoPtr->dwStyle & WS_BORDER) {
/* see comments in _NCCalcSize for reason below is not done */ width = 2 * xedge;
#if 0 height = 2 * yedge;
if (GetWindowLongA (infoPtr->hwndSelf, GWL_STYLE) & WS_BORDER) {
InflateRect (&rc, GetSystemMetrics(SM_CXEDGE), GetSystemMetrics(SM_CYEDGE));
} }
#endif
TRACE("setting to (0,0)-(%d,%d)\n", if (!(infoPtr->dwStyle & CCS_NOPARENTALIGN)) {
rc.right - rc.left, rc.bottom - rc.top); INT mode = infoPtr->dwStyle & (CCS_VERT | CCS_TOP | CCS_BOTTOM);
SetWindowPos (infoPtr->hwndSelf, 0, 0, 0, RECT rcPcl;
rc.right - rc.left, rc.bottom - rc.top,
SWP_NOMOVE | SWP_NOZORDER | SWP_SHOWWINDOW); GetClientRect(GetParent(infoPtr->hwndSelf), &rcPcl);
switch (mode) {
case CCS_TOP:
/* _TOP sets width to parents width */
width += (rcPcl.right - rcPcl.left);
height += infoPtr->calcSize.cy;
x += ((infoPtr->dwStyle & WS_BORDER) ? -xedge : 0);
y += ((infoPtr->dwStyle & WS_BORDER) ? -yedge : 0);
y += ((infoPtr->dwStyle & CCS_NODIVIDER) ? 0 : REBAR_DIVIDER);
break;
case CCS_BOTTOM:
/* FIXME: wrong wrong wrong */
/* _BOTTOM sets width to parents width */
width += (rcPcl.right - rcPcl.left);
height += infoPtr->calcSize.cy;
x += -xedge;
y = rcPcl.bottom - height + 1;
break;
case CCS_LEFT:
/* _LEFT sets height to parents height */
width += infoPtr->calcSize.cx;
height += (rcPcl.bottom - rcPcl.top);
x += ((infoPtr->dwStyle & WS_BORDER) ? -xedge : 0);
x += ((infoPtr->dwStyle & CCS_NODIVIDER) ? 0 : REBAR_DIVIDER);
y += ((infoPtr->dwStyle & WS_BORDER) ? -yedge : 0);
break;
case CCS_RIGHT:
/* FIXME: wrong wrong wrong */
/* _RIGHT sets height to parents height */
width += infoPtr->calcSize.cx;
height += (rcPcl.bottom - rcPcl.top);
x = rcPcl.right - width + 1;
y = -yedge;
break;
default:
width += infoPtr->calcSize.cx;
height += infoPtr->calcSize.cy;
}
}
else {
width += infoPtr->calcSize.cx;
height += infoPtr->calcSize.cy;
}
TRACE("hwnd %04x, style=%08lx, setting at (%d,%d) for (%d,%d)\n",
infoPtr->hwndSelf, infoPtr->dwStyle,
x, y, width, height);
SetWindowPos (infoPtr->hwndSelf, 0, x, y, width, height,
SWP_NOZORDER);
} }
@ -1162,6 +1231,7 @@ REBAR_MoveChildWindows (REBAR_INFO *infoPtr, UINT start, UINT endplus)
lpBand->rcChild.right, lpBand->rcChild.bottom, lpBand->rcChild.right, lpBand->rcChild.bottom,
rbcz.rcChild.left, rbcz.rcChild.top, rbcz.rcChild.left, rbcz.rcChild.top,
rbcz.rcChild.right, rbcz.rcChild.bottom); rbcz.rcChild.right, rbcz.rcChild.bottom);
lpBand->rcChild = rbcz.rcChild; /* *** ??? */
} }
/* native (IE4 in "Favorites" frame **1) does: /* native (IE4 in "Favorites" frame **1) does:
@ -1247,7 +1317,7 @@ REBAR_Layout (REBAR_INFO *infoPtr, LPRECT lpRect, BOOL notify, BOOL resetclient)
{ {
REBAR_BAND *lpBand, *prevBand; REBAR_BAND *lpBand, *prevBand;
RECT rcClient, rcAdj; RECT rcClient, rcAdj;
INT x, y, cx, cxsep, mmcy, mcy, clientcx, clientcy; INT initx, inity, x, y, cx, cxsep, mmcy, mcy, clientcx, clientcy;
INT adjcx, adjcy, row, rightx, bottomy, origheight; INT adjcx, adjcy, row, rightx, bottomy, origheight;
UINT i, j, rowstart, origrows; UINT i, j, rowstart, origrows;
BOOL dobreak; BOOL dobreak;
@ -1296,12 +1366,15 @@ REBAR_Layout (REBAR_INFO *infoPtr, LPRECT lpRect, BOOL notify, BOOL resetclient)
origheight = infoPtr->calcSize.cy; origheight = infoPtr->calcSize.cy;
origrows = infoPtr->uNumRows; origrows = infoPtr->uNumRows;
initx = 0;
inity = 0;
/* ******* Start Phase 1 - all bands on row at minimum size ******* */ /* ******* Start Phase 1 - all bands on row at minimum size ******* */
TRACE("band loop constants, clientcx=%d, clientcy=%d\n", TRACE("band loop constants, clientcx=%d, clientcy=%d, adjcx=%d, adjcy=%d\n",
clientcx, clientcy); clientcx, clientcy, adjcx, adjcy);
x = 0; x = initx;
y = 0; y = inity;
row = 1; row = 1;
cx = 0; cx = 0;
mcy = 0; mcy = 0;
@ -1317,8 +1390,16 @@ REBAR_Layout (REBAR_INFO *infoPtr, LPRECT lpRect, BOOL notify, BOOL resetclient)
lpBand->rcoldBand = lpBand->rcBand; lpBand->rcoldBand = lpBand->rcBand;
/* Set the offset of the child window */
if ((lpBand->fMask & RBBIM_CHILD) &&
!(lpBand->fStyle & RBBS_FIXEDSIZE)) {
lpBand->offChild.cx = 4; /* ??? */
}
lpBand->offChild.cy = ((lpBand->fStyle & RBBS_CHILDEDGE) ? 2 : 0);
/* separator from previous band */ /* separator from previous band */
cxsep = ( ((infoPtr->dwStyle & CCS_VERT) ? y : x)==0) ? 0 : SEP_WIDTH; cxsep = ( ((infoPtr->dwStyle & CCS_VERT) ? y==inity : x==initx)) ?
0 : SEP_WIDTH;
/* Header: includes gripper, text, image */ /* Header: includes gripper, text, image */
cx = lpBand->cxHeader; cx = lpBand->cxHeader;
@ -1346,11 +1427,11 @@ REBAR_Layout (REBAR_INFO *infoPtr, LPRECT lpRect, BOOL notify, BOOL resetclient)
TRACE("P1 Spliting to new row %d on band %u\n", row+1, i); TRACE("P1 Spliting to new row %d on band %u\n", row+1, i);
if (infoPtr->dwStyle & CCS_VERT) { if (infoPtr->dwStyle & CCS_VERT) {
y = 0; y = inity;
x += (mcy + SEP_WIDTH); x += (mcy + SEP_WIDTH);
} }
else { else {
x = 0; x = initx;
y += (mcy + SEP_WIDTH); y += (mcy + SEP_WIDTH);
} }
@ -1362,7 +1443,8 @@ REBAR_Layout (REBAR_INFO *infoPtr, LPRECT lpRect, BOOL notify, BOOL resetclient)
rowstart = i; rowstart = i;
} }
if (mcy < lpBand->lcy + REBARSPACE) mcy = lpBand->lcy + REBARSPACE; if (mcy < lpBand->lcy + REBARSPACE(lpBand))
mcy = lpBand->lcy + REBARSPACE(lpBand);
/* if boundary rect specified then limit mcy */ /* if boundary rect specified then limit mcy */
if (lpRect) { if (lpRect) {
@ -1390,7 +1472,8 @@ REBAR_Layout (REBAR_INFO *infoPtr, LPRECT lpRect, BOOL notify, BOOL resetclient)
rightx = clientcx; rightx = clientcx;
bottomy = (lpRect) ? min(clientcy, y+cxsep+cx) : y+cxsep+cx; bottomy = (lpRect) ? min(clientcy, y+cxsep+cx) : y+cxsep+cx;
lpBand->rcBand.left = x; lpBand->rcBand.left = x;
lpBand->rcBand.right = x + min(mcy, lpBand->lcy+REBARSPACE); lpBand->rcBand.right = x + min(mcy,
lpBand->lcy+REBARSPACE(lpBand));
lpBand->rcBand.top = min(bottomy, y + cxsep); lpBand->rcBand.top = min(bottomy, y + cxsep);
lpBand->rcBand.bottom = bottomy; lpBand->rcBand.bottom = bottomy;
lpBand->uMinHeight = lpBand->lcy; lpBand->uMinHeight = lpBand->lcy;
@ -1403,7 +1486,8 @@ REBAR_Layout (REBAR_INFO *infoPtr, LPRECT lpRect, BOOL notify, BOOL resetclient)
lpBand->rcBand.left = min(rightx, x + cxsep); lpBand->rcBand.left = min(rightx, x + cxsep);
lpBand->rcBand.right = rightx; lpBand->rcBand.right = rightx;
lpBand->rcBand.top = y; lpBand->rcBand.top = y;
lpBand->rcBand.bottom = y + min(mcy, lpBand->lcy+REBARSPACE); lpBand->rcBand.bottom = y + min(mcy,
lpBand->lcy+REBARSPACE(lpBand));
lpBand->uMinHeight = lpBand->lcy; lpBand->uMinHeight = lpBand->lcy;
x = rightx; x = rightx;
} }
@ -1526,21 +1610,21 @@ REBAR_Layout (REBAR_INFO *infoPtr, LPRECT lpRect, BOOL notify, BOOL resetclient)
prev_rh = ircBw(prev); prev_rh = ircBw(prev);
if (prev->iRow == current->iRow) { if (prev->iRow == current->iRow) {
new_rh = (infoPtr->dwStyle & RBS_VARHEIGHT) ? new_rh = (infoPtr->dwStyle & RBS_VARHEIGHT) ?
current->lcy + REBARSPACE : current->lcy + REBARSPACE(current) :
mmcy; mmcy;
adj_rh = new_rh + SEP_WIDTH; adj_rh = new_rh + SEP_WIDTH;
infoPtr->uNumRows++; infoPtr->uNumRows++;
current->fDraw |= NTF_INVALIDATE; current->fDraw |= NTF_INVALIDATE;
current->iRow++; current->iRow++;
if (infoPtr->dwStyle & CCS_VERT) { if (infoPtr->dwStyle & CCS_VERT) {
current->rcBand.top = 0; current->rcBand.top = inity;
current->rcBand.bottom = clientcy; current->rcBand.bottom = clientcy;
current->rcBand.left += (prev_rh + SEP_WIDTH); current->rcBand.left += (prev_rh + SEP_WIDTH);
current->rcBand.right = current->rcBand.left + new_rh; current->rcBand.right = current->rcBand.left + new_rh;
x += adj_rh; x += adj_rh;
} }
else { else {
current->rcBand.left = 0; current->rcBand.left = initx;
current->rcBand.right = clientcx; current->rcBand.right = clientcx;
current->rcBand.top += (prev_rh + SEP_WIDTH); current->rcBand.top += (prev_rh + SEP_WIDTH);
current->rcBand.bottom = current->rcBand.top + new_rh; current->rcBand.bottom = current->rcBand.top + new_rh;
@ -1645,8 +1729,8 @@ REBAR_Layout (REBAR_INFO *infoPtr, LPRECT lpRect, BOOL notify, BOOL resetclient)
/* j is now the maximum height/width in the client area */ /* j is now the maximum height/width in the client area */
j = ((diff / lpBand->cyIntegral) * lpBand->cyIntegral) + j = ((diff / lpBand->cyIntegral) * lpBand->cyIntegral) +
ircBw(lpBand); ircBw(lpBand);
if (j > lpBand->cyMaxChild + REBARSPACE) if (j > lpBand->cyMaxChild + REBARSPACE(lpBand))
j = lpBand->cyMaxChild + REBARSPACE; j = lpBand->cyMaxChild + REBARSPACE(lpBand);
diff -= (j - ircBw(lpBand)); diff -= (j - ircBw(lpBand));
if (infoPtr->dwStyle & CCS_VERT) if (infoPtr->dwStyle & CCS_VERT)
lpBand->rcBand.right = lpBand->rcBand.left + j; lpBand->rcBand.right = lpBand->rcBand.left + j;
@ -1867,10 +1951,6 @@ REBAR_ValidateBand (REBAR_INFO *infoPtr, REBAR_BAND *lpBand)
lpBand->lcy = textheight; lpBand->lcy = textheight;
lpBand->ccy = lpBand->lcy; lpBand->ccy = lpBand->lcy;
if (lpBand->fMask & RBBIM_CHILDSIZE) { if (lpBand->fMask & RBBIM_CHILDSIZE) {
if (!(lpBand->fStyle & RBBS_FIXEDSIZE)) {
lpBand->offChild.cx = 4;
lpBand->offChild.cy = 2;
}
lpBand->lcx = lpBand->cxMinChild; lpBand->lcx = lpBand->cxMinChild;
/* Set the .cy values for CHILDSIZE case */ /* Set the .cy values for CHILDSIZE case */
@ -2035,7 +2115,10 @@ REBAR_InternalEraseBkGnd (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam, REC
else else
new = infoPtr->clrBtnFace; new = infoPtr->clrBtnFace;
rect = lpBand->rcBand; rect = lpBand->rcBand;
/* testing only: new = RGB(0,128,0); */ #if GLATESTING
/* testing only - make background green to see it */
new = RGB(0,128,0);
#endif
old = SetBkColor (hdc, new); old = SetBkColor (hdc, new);
TRACE("%s background color=0x%06lx, band (%d,%d)-(%d,%d), clip (%d,%d)-(%d,%d)\n", TRACE("%s background color=0x%06lx, band (%d,%d)-(%d,%d), clip (%d,%d)-(%d,%d)\n",
(lpBand->clrBack == CLR_NONE) ? "std" : "", (lpBand->clrBack == CLR_NONE) ? "std" : "",
@ -3672,21 +3755,13 @@ REBAR_MouseMove (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
inline static LRESULT inline static LRESULT
REBAR_NCCalcSize (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) REBAR_NCCalcSize (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
{ {
((LPRECT)lParam)->top += GetSystemMetrics(SM_CYEDGE); if (infoPtr->dwStyle & WS_BORDER) {
((LPRECT)lParam)->bottom -= GetSystemMetrics(SM_CYEDGE); InflateRect((LPRECT)lParam, -GetSystemMetrics(SM_CXEDGE),
-GetSystemMetrics(SM_CYEDGE));
/* While the code below seems to be the reasonable way of */
/* handling the WS_BORDER style, the native version (as */
/* of 4.71 seems to only do the above. Go figure!! */
#if 0
if (GetWindowLongA (infoPtr->hwndSelf, GWL_STYLE) & WS_BORDER) {
((LPRECT)lParam)->left += GetSystemMetrics(SM_CXEDGE);
((LPRECT)lParam)->top += GetSystemMetrics(SM_CYEDGE);
((LPRECT)lParam)->right -= GetSystemMetrics(SM_CXEDGE);
((LPRECT)lParam)->bottom -= GetSystemMetrics(SM_CYEDGE);
} }
#endif TRACE("new client=(%d,%d)-(%d,%d)\n",
((LPRECT)lParam)->left, ((LPRECT)lParam)->top,
((LPRECT)lParam)->right, ((LPRECT)lParam)->bottom);
return 0; return 0;
} }
@ -3835,24 +3910,20 @@ REBAR_NCPaint (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
if (infoPtr->dwStyle & WS_MINIMIZE) if (infoPtr->dwStyle & WS_MINIMIZE)
return 0; /* Nothing to do */ return 0; /* Nothing to do */
DefWindowProcA (infoPtr->hwndSelf, WM_NCPAINT, wParam, lParam);
if (!(hdc = GetDCEx( infoPtr->hwndSelf, 0, DCX_USESTYLE | DCX_WINDOW )))
return 0;
if (infoPtr->dwStyle & WS_BORDER) { if (infoPtr->dwStyle & WS_BORDER) {
/* adjust rectangle and draw the necessary edge */
if (!(hdc = GetDCEx( infoPtr->hwndSelf, 0, DCX_USESTYLE | DCX_WINDOW )))
return 0;
GetWindowRect (infoPtr->hwndSelf, &rcWindow); GetWindowRect (infoPtr->hwndSelf, &rcWindow);
OffsetRect (&rcWindow, -rcWindow.left, -rcWindow.top); OffsetRect (&rcWindow, -rcWindow.left, -rcWindow.top);
TRACE("rect (%d,%d)-(%d,%d)\n", TRACE("rect (%d,%d)-(%d,%d)\n",
rcWindow.left, rcWindow.top, rcWindow.left, rcWindow.top,
rcWindow.right, rcWindow.bottom); rcWindow.right, rcWindow.bottom);
/* see comments in _NCCalcSize for reason this is not done */ DrawEdge (hdc, &rcWindow, EDGE_ETCHED, BF_RECT);
/* DrawEdge (hdc, &rcWindow, EDGE_ETCHED, BF_RECT); */ ReleaseDC( infoPtr->hwndSelf, hdc );
DrawEdge (hdc, &rcWindow, EDGE_ETCHED, BF_TOP | BF_BOTTOM);
} }
ReleaseDC( infoPtr->hwndSelf, hdc );
return 0; return 0;
} }
@ -4004,6 +4075,11 @@ REBAR_Size (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
/* still in CreateWindow */ /* still in CreateWindow */
RECT rcWin; RECT rcWin;
if ((INT)wParam != SIZE_RESTORED) {
ERR("WM_SIZE in create and flags=%08x, lParam=%08lx\n",
wParam, lParam);
}
TRACE("still in CreateWindow\n"); TRACE("still in CreateWindow\n");
infoPtr->fStatus &= ~CREATE_RUNNING; infoPtr->fStatus &= ~CREATE_RUNNING;
GetWindowRect ( infoPtr->hwndSelf, &rcWin); GetWindowRect ( infoPtr->hwndSelf, &rcWin);
@ -4035,6 +4111,11 @@ REBAR_Size (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
} }
} }
else { else {
if ((INT)wParam != SIZE_RESTORED) {
ERR("WM_SIZE out of create and flags=%08x, lParam=%08lx\n",
wParam, lParam);
}
/* Handle cases when outside of the CreateWindow process */ /* Handle cases when outside of the CreateWindow process */
GetClientRect (infoPtr->hwndSelf, &rcClient); GetClientRect (infoPtr->hwndSelf, &rcClient);
@ -4324,6 +4405,9 @@ REBAR_Register (void)
wndClass.cbWndExtra = sizeof(REBAR_INFO *); wndClass.cbWndExtra = sizeof(REBAR_INFO *);
wndClass.hCursor = 0; wndClass.hCursor = 0;
wndClass.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1); wndClass.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
#if GLATESTING
wndClass.hbrBackground = CreateSolidBrush(RGB(0,128,0));
#endif
wndClass.lpszClassName = REBARCLASSNAMEA; wndClass.lpszClassName = REBARCLASSNAMEA;
RegisterClassA (&wndClass); RegisterClassA (&wndClass);