static BOOL
MyIntDrawRectEdge(HDC hdc, LPRECT rc, UINT uType, UINT uFlags, COLOR_SCHEME *scheme)
{
- signed char LTInnerI, LTOuterI;
- signed char RBInnerI, RBOuterI;
- HPEN LTInnerPen, LTOuterPen;
- HPEN RBInnerPen, RBOuterPen;
- RECT InnerRect = *rc;
- POINT SavePoint;
- HPEN SavePen;
- int LBpenplus = 0;
- int LTpenplus = 0;
- int RTpenplus = 0;
- int RBpenplus = 0;
- /* Init some vars */
- LTInnerPen = LTOuterPen = RBInnerPen = RBOuterPen = (HPEN)GetStockObject(NULL_PEN);
- SavePen = (HPEN)SelectObject(hdc, LTInnerPen);
-
- /* Determine the colors of the edges */
- LTInnerI = LTInnerNormal[uType & (BDR_INNER|BDR_OUTER)];
- LTOuterI = LTOuterNormal[uType & (BDR_INNER|BDR_OUTER)];
- RBInnerI = RBInnerNormal[uType & (BDR_INNER|BDR_OUTER)];
- RBOuterI = RBOuterNormal[uType & (BDR_INNER|BDR_OUTER)];
-
- if((uFlags & BF_BOTTOMLEFT) == BF_BOTTOMLEFT)
- LBpenplus = 1;
- if((uFlags & BF_TOPRIGHT) == BF_TOPRIGHT)
- RTpenplus = 1;
- if((uFlags & BF_BOTTOMRIGHT) == BF_BOTTOMRIGHT)
- RBpenplus = 1;
- if((uFlags & BF_TOPLEFT) == BF_TOPLEFT)
- LTpenplus = 1;
-
- if(LTInnerI != -1)
- LTInnerPen = GetStockObject(DC_PEN);
- if(LTOuterI != -1)
- LTOuterPen = GetStockObject(DC_PEN);
- if(RBInnerI != -1)
- RBInnerPen = GetStockObject(DC_PEN);
- if(RBOuterI != -1)
- RBOuterPen = GetStockObject(DC_PEN);
- {
- HBRUSH hbr;
- hbr = CreateSolidBrush(scheme->crColor[COLOR_BTNFACE]);
- FillRect(hdc, &InnerRect, hbr);
- DeleteObject(hbr);
- }
- MoveToEx(hdc, 0, 0, &SavePoint);
-
- /* Draw the outer edge */
- SelectObject(hdc, LTOuterPen);
- SetDCPenColor(hdc, scheme->crColor[LTOuterI]);
- if(uFlags & BF_TOP)
- {
- MoveToEx(hdc, InnerRect.left, InnerRect.top, NULL);
- LineTo(hdc, InnerRect.right, InnerRect.top);
- }
- if(uFlags & BF_LEFT)
- {
- MoveToEx(hdc, InnerRect.left, InnerRect.top, NULL);
- LineTo(hdc, InnerRect.left, InnerRect.bottom);
- }
- SelectObject(hdc, RBOuterPen);
- SetDCPenColor(hdc, scheme->crColor[RBOuterI]);
- if(uFlags & BF_BOTTOM)
- {
- MoveToEx(hdc, InnerRect.left, InnerRect.bottom-1, NULL);
- LineTo(hdc, InnerRect.right, InnerRect.bottom-1);
- }
- if(uFlags & BF_RIGHT)
- {
- MoveToEx(hdc, InnerRect.right-1, InnerRect.top, NULL);
- LineTo(hdc, InnerRect.right-1, InnerRect.bottom);
- }
-
- /* Draw the inner edge */
- SelectObject(hdc, LTInnerPen);
- SetDCPenColor(hdc, scheme->crColor[LTInnerI]);
- if(uFlags & BF_TOP)
- {
- MoveToEx(hdc, InnerRect.left+LTpenplus, InnerRect.top+1, NULL);
- LineTo(hdc, InnerRect.right-RTpenplus, InnerRect.top+1);
- }
- if(uFlags & BF_LEFT)
- {
- MoveToEx(hdc, InnerRect.left+1, InnerRect.top+LTpenplus, NULL);
- LineTo(hdc, InnerRect.left+1, InnerRect.bottom-LBpenplus);
- }
- SelectObject(hdc, RBInnerPen);
- SetDCPenColor(hdc, scheme->crColor[RBInnerI]);
- if(uFlags & BF_BOTTOM)
- {
- MoveToEx(hdc, InnerRect.left+LBpenplus, InnerRect.bottom-2, NULL);
- LineTo(hdc, InnerRect.right-RBpenplus, InnerRect.bottom-2);
- }
- if(uFlags & BF_RIGHT)
- {
- MoveToEx(hdc, InnerRect.right-2, InnerRect.top+RTpenplus, NULL);
- LineTo(hdc, InnerRect.right-2, InnerRect.bottom-RBpenplus);
- }
-
- if (uFlags & BF_ADJUST)
- {
- int add = (LTRBInnerMono[uType & (BDR_INNER|BDR_OUTER)] != -1 ? 1 : 0)
- + (LTRBOuterMono[uType & (BDR_INNER|BDR_OUTER)] != -1 ? 1 : 0);
-
- if(uFlags & BF_LEFT)
- InnerRect.left += add;
- if(uFlags & BF_RIGHT)
- InnerRect.right -= add;
- if(uFlags & BF_TOP)
- InnerRect.top += add;
- if(uFlags & BF_BOTTOM)
- InnerRect.bottom -= add;
-
- if(uFlags & BF_ADJUST)
- *rc = InnerRect;
- }
-
- /* Cleanup */
- SelectObject(hdc, SavePen);
- MoveToEx(hdc, SavePoint.x, SavePoint.y, NULL);
- return TRUE;
+ signed char LTInnerI, LTOuterI;
+ signed char RBInnerI, RBOuterI;
+ HPEN LTInnerPen, LTOuterPen;
+ HPEN RBInnerPen, RBOuterPen;
+ RECT InnerRect = *rc;
+ POINT SavePoint;
+ HPEN SavePen;
+ int LBpenplus = 0;
+ int LTpenplus = 0;
+ int RTpenplus = 0;
+ int RBpenplus = 0;
+ HBRUSH hbr;
+
+ /* Init some vars */
+ LTInnerPen = LTOuterPen = RBInnerPen = RBOuterPen = (HPEN)GetStockObject(NULL_PEN);
+ SavePen = (HPEN)SelectObject(hdc, LTInnerPen);
+
+ /* Determine the colors of the edges */
+ LTInnerI = LTInnerNormal[uType & (BDR_INNER|BDR_OUTER)];
+ LTOuterI = LTOuterNormal[uType & (BDR_INNER|BDR_OUTER)];
+ RBInnerI = RBInnerNormal[uType & (BDR_INNER|BDR_OUTER)];
+ RBOuterI = RBOuterNormal[uType & (BDR_INNER|BDR_OUTER)];
+
+ if((uFlags & BF_BOTTOMLEFT) == BF_BOTTOMLEFT)
+ LBpenplus = 1;
+ if((uFlags & BF_TOPRIGHT) == BF_TOPRIGHT)
+ RTpenplus = 1;
+ if((uFlags & BF_BOTTOMRIGHT) == BF_BOTTOMRIGHT)
+ RBpenplus = 1;
+ if((uFlags & BF_TOPLEFT) == BF_TOPLEFT)
+ LTpenplus = 1;
+
+ if((uFlags & MY_BF_ACTIVEBORDER))
+ hbr = CreateSolidBrush(scheme->crColor[COLOR_ACTIVEBORDER]);
+ else
+ hbr = CreateSolidBrush(scheme->crColor[COLOR_BTNFACE]);
+
+ FillRect(hdc, &InnerRect, hbr);
+ DeleteObject(hbr);
+
+ MoveToEx(hdc, 0, 0, &SavePoint);
+
+ /* Draw the outer edge */
+ if(LTOuterI != -1)
+ {
+ LTOuterPen = GetStockObject(DC_PEN);
+ SelectObject(hdc, LTOuterPen);
+ SetDCPenColor(hdc, scheme->crColor[LTOuterI]);
+ if(uFlags & BF_TOP)
+ {
+ MoveToEx(hdc, InnerRect.left, InnerRect.top, NULL);
+ LineTo(hdc, InnerRect.right, InnerRect.top);
+ }
+ if(uFlags & BF_LEFT)
+ {
+ MoveToEx(hdc, InnerRect.left, InnerRect.top, NULL);
+ LineTo(hdc, InnerRect.left, InnerRect.bottom);
+ }
+ }
+
+ if(RBOuterI != -1)
+ {
+ RBOuterPen = GetStockObject(DC_PEN);
+ SelectObject(hdc, RBOuterPen);
+ SetDCPenColor(hdc, scheme->crColor[RBOuterI]);
+ if(uFlags & BF_BOTTOM)
+ {
+ MoveToEx(hdc, InnerRect.left, InnerRect.bottom-1, NULL);
+ LineTo(hdc, InnerRect.right, InnerRect.bottom-1);
+ }
+ if(uFlags & BF_RIGHT)
+ {
+ MoveToEx(hdc, InnerRect.right-1, InnerRect.top, NULL);
+ LineTo(hdc, InnerRect.right-1, InnerRect.bottom);
+ }
+ }
+
+ /* Draw the inner edge */
+ if(LTInnerI != -1)
+ {
+ LTInnerPen = GetStockObject(DC_PEN);
+ SelectObject(hdc, LTInnerPen);
+ SetDCPenColor(hdc, scheme->crColor[LTInnerI]);
+ if(uFlags & BF_TOP)
+ {
+ MoveToEx(hdc, InnerRect.left+LTpenplus, InnerRect.top+1, NULL);
+ LineTo(hdc, InnerRect.right-RTpenplus, InnerRect.top+1);
+ }
+ if(uFlags & BF_LEFT)
+ {
+ MoveToEx(hdc, InnerRect.left+1, InnerRect.top+LTpenplus, NULL);
+ LineTo(hdc, InnerRect.left+1, InnerRect.bottom-LBpenplus);
+ }
+ }
+
+ if(RBInnerI != -1)
+ {
+ RBInnerPen = GetStockObject(DC_PEN);
+ SelectObject(hdc, RBInnerPen);
+ SetDCPenColor(hdc, scheme->crColor[RBInnerI]);
+ if(uFlags & BF_BOTTOM)
+ {
+ MoveToEx(hdc, InnerRect.left+LBpenplus, InnerRect.bottom-2, NULL);
+ LineTo(hdc, InnerRect.right-RBpenplus, InnerRect.bottom-2);
+ }
+ if(uFlags & BF_RIGHT)
+ {
+ MoveToEx(hdc, InnerRect.right-2, InnerRect.top+RTpenplus, NULL);
+ LineTo(hdc, InnerRect.right-2, InnerRect.bottom-RBpenplus);
+ }
+ }
+
+ if (uFlags & BF_ADJUST)
+ {
+ int add = (LTRBInnerMono[uType & (BDR_INNER|BDR_OUTER)] != -1 ? 1 : 0)
+ + (LTRBOuterMono[uType & (BDR_INNER|BDR_OUTER)] != -1 ? 1 : 0);
+
+ if(uFlags & BF_LEFT)
+ InnerRect.left += add;
+ if(uFlags & BF_RIGHT)
+ InnerRect.right -= add;
+ if(uFlags & BF_TOP)
+ InnerRect.top += add;
+ if(uFlags & BF_BOTTOM)
+ InnerRect.bottom -= add;
+
+ if(uFlags & BF_ADJUST)
+ *rc = InnerRect;
+ }
+
+ /* Cleanup */
+ SelectObject(hdc, SavePen);
+ MoveToEx(hdc, SavePoint.x, SavePoint.y, NULL);
+ return TRUE;
}
static BOOL
MyDrawFrameButton(HDC hdc, LPRECT rc, UINT uState, COLOR_SCHEME *scheme)
{
- UINT edge;
- if(uState & (DFCS_PUSHED | DFCS_CHECKED | DFCS_FLAT))
- edge = EDGE_SUNKEN;
- else
- edge = EDGE_RAISED;
- return MyIntDrawRectEdge(hdc, rc, edge, (uState & DFCS_FLAT) | BF_RECT | BF_SOFT, scheme);
+ UINT edge;
+ if(uState & (DFCS_PUSHED | DFCS_CHECKED | DFCS_FLAT))
+ edge = EDGE_SUNKEN;
+ else
+ edge = EDGE_RAISED;
+ return MyIntDrawRectEdge(hdc, rc, edge, (uState & DFCS_FLAT) | BF_RECT | BF_SOFT, scheme);
}
static int
MyMakeSquareRect(LPRECT src, LPRECT dst)
{
- int Width = src->right - src->left;
- int Height = src->bottom - src->top;
- int SmallDiam = Width > Height ? Height : Width;
-
- *dst = *src;
-
- /* Make it a square box */
- if (Width < Height) /* SmallDiam == Width */
- {
- dst->top += (Height-Width)/2;
- dst->bottom = dst->top + SmallDiam;
- }
- else if(Width > Height) /* SmallDiam == Height */
- {
- dst->left += (Width-Height)/2;
- dst->right = dst->left + SmallDiam;
- }
-
- return SmallDiam;
+ int Width = src->right - src->left;
+ int Height = src->bottom - src->top;
+ int SmallDiam = Width > Height ? Height : Width;
+
+ *dst = *src;
+
+ /* Make it a square box */
+ if (Width < Height) /* SmallDiam == Width */
+ {
+ dst->top += (Height-Width)/2;
+ dst->bottom = dst->top + SmallDiam;
+ }
+ else if(Width > Height) /* SmallDiam == Height */
+ {
+ dst->left += (Width-Height)/2;
+ dst->right = dst->left + SmallDiam;
+ }
+
+ return SmallDiam;
}
static BOOL
MyDrawFrameCaption(HDC dc, LPRECT r, UINT uFlags, COLOR_SCHEME *scheme)
{
- LOGFONT lf;
- HFONT hFont, hOldFont;
- COLORREF clrsave;
- RECT myr;
- INT bkmode;
- TCHAR Symbol;
- switch(uFlags & 0xff)
- {
- case DFCS_CAPTIONCLOSE:
- Symbol = 'r';
- break;
- case DFCS_CAPTIONHELP:
- Symbol = 's';
- break;
- case DFCS_CAPTIONMIN:
- Symbol = '0';
- break;
- case DFCS_CAPTIONMAX:
- Symbol = '1';
- break;
- case DFCS_CAPTIONRESTORE:
- Symbol = '2';
- break;
- }
- MyIntDrawRectEdge(dc, r, (uFlags & DFCS_PUSHED) ? EDGE_SUNKEN : EDGE_RAISED, BF_RECT | BF_MIDDLE | BF_SOFT, scheme);
- ZeroMemory(&lf, sizeof(LOGFONT));
- MyMakeSquareRect(r, &myr);
- myr.left += 1;
- myr.top += 1;
- myr.right -= 1;
- myr.bottom -= 1;
- if(uFlags & DFCS_PUSHED)
- OffsetRect(&myr,1,1);
- lf.lfHeight = myr.bottom - myr.top;
- lf.lfWidth = 0;
- lf.lfWeight = FW_NORMAL;
- lf.lfCharSet = DEFAULT_CHARSET;
- lstrcpy(lf.lfFaceName, TEXT("Marlett"));
- hFont = CreateFontIndirect(&lf);
- /* Save font and text color */
- hOldFont = SelectObject(dc, hFont);
- clrsave = GetTextColor(dc);
- bkmode = GetBkMode(dc);
- /* Set color and drawing mode */
- SetBkMode(dc, TRANSPARENT);
- if(uFlags & DFCS_INACTIVE)
- {
- /* Draw shadow */
- SetTextColor(dc, scheme->crColor[COLOR_BTNHIGHLIGHT]);
- TextOut(dc, myr.left + 1, myr.top + 1, &Symbol, 1);
- }
- SetTextColor(dc, scheme->crColor[(uFlags & DFCS_INACTIVE) ? COLOR_BTNSHADOW : COLOR_BTNTEXT]);
- /* Draw selected symbol */
- TextOut(dc, myr.left, myr.top, &Symbol, 1);
- /* Restore previous settings */
- SetTextColor(dc, clrsave);
- SelectObject(dc, hOldFont);
- SetBkMode(dc, bkmode);
- DeleteObject(hFont);
- return TRUE;
+ LOGFONT lf;
+ HFONT hFont, hOldFont;
+ COLORREF clrsave;
+ RECT myr;
+ INT bkmode;
+ TCHAR Symbol;
+ switch(uFlags & 0xff)
+ {
+ case DFCS_CAPTIONCLOSE:
+ Symbol = 'r';
+ break;
+ case DFCS_CAPTIONHELP:
+ Symbol = 's';
+ break;
+ case DFCS_CAPTIONMIN:
+ Symbol = '0';
+ break;
+ case DFCS_CAPTIONMAX:
+ Symbol = '1';
+ break;
+ case DFCS_CAPTIONRESTORE:
+ Symbol = '2';
+ break;
+ default:
+ return FALSE;
+ }
+ MyIntDrawRectEdge(dc, r, (uFlags & DFCS_PUSHED) ? EDGE_SUNKEN : EDGE_RAISED, BF_RECT | BF_MIDDLE | BF_SOFT, scheme);
+ ZeroMemory(&lf, sizeof(LOGFONT));
+ MyMakeSquareRect(r, &myr);
+ myr.left += 1;
+ myr.top += 1;
+ myr.right -= 1;
+ myr.bottom -= 1;
+ if(uFlags & DFCS_PUSHED)
+ OffsetRect(&myr,1,1);
+ lf.lfHeight = myr.bottom - myr.top;
+ lf.lfWidth = 0;
+ lf.lfWeight = FW_NORMAL;
+ lf.lfCharSet = DEFAULT_CHARSET;
+ lstrcpy(lf.lfFaceName, TEXT("Marlett"));
+ hFont = CreateFontIndirect(&lf);
+ /* Save font and text color */
+ hOldFont = SelectObject(dc, hFont);
+ clrsave = GetTextColor(dc);
+ bkmode = GetBkMode(dc);
+ /* Set color and drawing mode */
+ SetBkMode(dc, TRANSPARENT);
+ if(uFlags & DFCS_INACTIVE)
+ {
+ /* Draw shadow */
+ SetTextColor(dc, scheme->crColor[COLOR_BTNHIGHLIGHT]);
+ TextOut(dc, myr.left + 1, myr.top + 1, &Symbol, 1);
+ }
+ SetTextColor(dc, scheme->crColor[(uFlags & DFCS_INACTIVE) ? COLOR_BTNSHADOW : COLOR_BTNTEXT]);
+ /* Draw selected symbol */
+ TextOut(dc, myr.left, myr.top, &Symbol, 1);
+ /* Restore previous settings */
+ SetTextColor(dc, clrsave);
+ SelectObject(dc, hOldFont);
+ SetBkMode(dc, bkmode);
+ DeleteObject(hFont);
+ return TRUE;
}
/******************************************************************************/
static BOOL
MyDrawFrameScroll(HDC dc, LPRECT r, UINT uFlags, COLOR_SCHEME *scheme)
{
- LOGFONT lf;
- HFONT hFont, hOldFont;
- COLORREF clrsave;
- RECT myr;
- INT bkmode;
- TCHAR Symbol;
- switch(uFlags & 0xff)
- {
- case DFCS_SCROLLCOMBOBOX:
- case DFCS_SCROLLDOWN:
- Symbol = '6';
- break;
-
- case DFCS_SCROLLUP:
- Symbol = '5';
- break;
-
- case DFCS_SCROLLLEFT:
- Symbol = '3';
- break;
-
- case DFCS_SCROLLRIGHT:
- Symbol = '4';
- break;
- }
- MyIntDrawRectEdge(dc, r, (uFlags & DFCS_PUSHED) ? EDGE_SUNKEN : EDGE_RAISED, (uFlags&DFCS_FLAT) | BF_MIDDLE | BF_RECT, scheme);
- ZeroMemory(&lf, sizeof(LOGFONT));
- MyMakeSquareRect(r, &myr);
- myr.left += 1;
- myr.top += 1;
- myr.right -= 1;
- myr.bottom -= 1;
- if(uFlags & DFCS_PUSHED)
- OffsetRect(&myr,1,1);
- lf.lfHeight = myr.bottom - myr.top;
- lf.lfWidth = 0;
- lf.lfWeight = FW_NORMAL;
- lf.lfCharSet = DEFAULT_CHARSET;
- lstrcpy(lf.lfFaceName, TEXT("Marlett"));
- hFont = CreateFontIndirect(&lf);
- /* Save font and text color */
- hOldFont = SelectObject(dc, hFont);
- clrsave = GetTextColor(dc);
- bkmode = GetBkMode(dc);
- /* Set color and drawing mode */
- SetBkMode(dc, TRANSPARENT);
- if(uFlags & DFCS_INACTIVE)
- {
- /* Draw shadow */
- SetTextColor(dc, scheme->crColor[COLOR_BTNHIGHLIGHT]);
- TextOut(dc, myr.left + 1, myr.top + 1, &Symbol, 1);
- }
- SetTextColor(dc, scheme->crColor[(uFlags & DFCS_INACTIVE) ? COLOR_BTNSHADOW : COLOR_BTNTEXT]);
- /* Draw selected symbol */
- TextOut(dc, myr.left, myr.top, &Symbol, 1);
- /* restore previous settings */
- SetTextColor(dc, clrsave);
- SelectObject(dc, hOldFont);
- SetBkMode(dc, bkmode);
- DeleteObject(hFont);
- return TRUE;
+ LOGFONT lf;
+ HFONT hFont, hOldFont;
+ COLORREF clrsave;
+ RECT myr;
+ INT bkmode;
+ TCHAR Symbol;
+ switch(uFlags & 0xff)
+ {
+ case DFCS_SCROLLCOMBOBOX:
+ case DFCS_SCROLLDOWN:
+ Symbol = '6';
+ break;
+
+ case DFCS_SCROLLUP:
+ Symbol = '5';
+ break;
+
+ case DFCS_SCROLLLEFT:
+ Symbol = '3';
+ break;
+
+ case DFCS_SCROLLRIGHT:
+ Symbol = '4';
+ break;
+
+ default:
+ return FALSE;
+ }
+ MyIntDrawRectEdge(dc, r, (uFlags & DFCS_PUSHED) ? EDGE_SUNKEN : EDGE_RAISED, (uFlags&DFCS_FLAT) | BF_MIDDLE | BF_RECT, scheme);
+ ZeroMemory(&lf, sizeof(LOGFONT));
+ MyMakeSquareRect(r, &myr);
+ myr.left += 1;
+ myr.top += 1;
+ myr.right -= 1;
+ myr.bottom -= 1;
+ if(uFlags & DFCS_PUSHED)
+ OffsetRect(&myr,1,1);
+ lf.lfHeight = myr.bottom - myr.top;
+ lf.lfWidth = 0;
+ lf.lfWeight = FW_NORMAL;
+ lf.lfCharSet = DEFAULT_CHARSET;
+ lstrcpy(lf.lfFaceName, TEXT("Marlett"));
+ hFont = CreateFontIndirect(&lf);
+ /* Save font and text color */
+ hOldFont = SelectObject(dc, hFont);
+ clrsave = GetTextColor(dc);
+ bkmode = GetBkMode(dc);
+ /* Set color and drawing mode */
+ SetBkMode(dc, TRANSPARENT);
+ if(uFlags & DFCS_INACTIVE)
+ {
+ /* Draw shadow */
+ SetTextColor(dc, scheme->crColor[COLOR_BTNHIGHLIGHT]);
+ TextOut(dc, myr.left + 1, myr.top + 1, &Symbol, 1);
+ }
+ SetTextColor(dc, scheme->crColor[(uFlags & DFCS_INACTIVE) ? COLOR_BTNSHADOW : COLOR_BTNTEXT]);
+ /* Draw selected symbol */
+ TextOut(dc, myr.left, myr.top, &Symbol, 1);
+ /* restore previous settings */
+ SetTextColor(dc, clrsave);
+ SelectObject(dc, hOldFont);
+ SetBkMode(dc, bkmode);
+ DeleteObject(hFont);
+ return TRUE;
}
BOOL
MyDrawFrameControl(HDC hDC, LPRECT rc, UINT uType, UINT uState, COLOR_SCHEME *scheme)
{
- switch(uType)
- {
- case DFC_BUTTON:
- return MyDrawFrameButton(hDC, rc, uState, scheme);
- case DFC_CAPTION:
- return MyDrawFrameCaption(hDC, rc, uState, scheme);
- case DFC_SCROLL:
- return MyDrawFrameScroll(hDC, rc, uState, scheme);
- }
- return FALSE;
+ switch(uType)
+ {
+ case DFC_BUTTON:
+ return MyDrawFrameButton(hDC, rc, uState, scheme);
+ case DFC_CAPTION:
+ return MyDrawFrameCaption(hDC, rc, uState, scheme);
+ case DFC_SCROLL:
+ return MyDrawFrameScroll(hDC, rc, uState, scheme);
+ }
+ return FALSE;
}
BOOL
MyDrawEdge(HDC hDC, LPRECT rc, UINT edge, UINT flags, COLOR_SCHEME *scheme)
{
- return MyIntDrawRectEdge(hDC, rc, edge, flags, scheme);
+ return MyIntDrawRectEdge(hDC, rc, edge, flags, scheme);
}
VOID
MyDrawCaptionButtons(HDC hdc, LPRECT lpRect, BOOL bMinMax, int x, COLOR_SCHEME *scheme)
{
- RECT rc3;
- RECT rc4;
- RECT rc5;
+ RECT rc3;
+ RECT rc4;
+ RECT rc5;
- rc3.left = lpRect->right - 2 - x;
- rc3.top = lpRect->top + 2;
- rc3.right = lpRect->right - 2;
- rc3.bottom = lpRect->bottom - 2;
+ rc3.left = lpRect->right - 2 - x;
+ rc3.top = lpRect->top + 2;
+ rc3.right = lpRect->right - 2;
+ rc3.bottom = lpRect->bottom - 2;
- MyDrawFrameControl(hdc, &rc3, DFC_CAPTION, DFCS_CAPTIONCLOSE, scheme);
+ MyDrawFrameControl(hdc, &rc3, DFC_CAPTION, DFCS_CAPTIONCLOSE, scheme);
- if (bMinMax)
- {
- rc4.left = rc3.left - x - 2;
- rc4.top = rc3.top;
- rc4.right = rc3.right - x - 2;
- rc4.bottom = rc3.bottom;
+ if (bMinMax)
+ {
+ rc4.left = rc3.left - x - 2;
+ rc4.top = rc3.top;
+ rc4.right = rc3.right - x - 2;
+ rc4.bottom = rc3.bottom;
- MyDrawFrameControl(hdc, &rc4, DFC_CAPTION, DFCS_CAPTIONMAX, scheme);
+ MyDrawFrameControl(hdc, &rc4, DFC_CAPTION, DFCS_CAPTIONMAX, scheme);
- rc5.left = rc4.left - x;
- rc5.top = rc4.top;
- rc5.right = rc4.right - x;
- rc5.bottom = rc4.bottom;
+ rc5.left = rc4.left - x;
+ rc5.top = rc4.top;
+ rc5.right = rc4.right - x;
+ rc5.bottom = rc4.bottom;
- MyDrawFrameControl(hdc, &rc5, DFC_CAPTION, DFCS_CAPTIONMIN, scheme);
- }
+ MyDrawFrameControl(hdc, &rc5, DFC_CAPTION, DFCS_CAPTIONMIN, scheme);
+ }
}
VOID
MyDrawScrollbar(HDC hdc, LPRECT rc, HBRUSH hbrScrollbar, COLOR_SCHEME *scheme)
{
- RECT rcTop;
- RECT rcBottom;
- RECT rcMiddle;
- int width;
+ RECT rcTop;
+ RECT rcBottom;
+ RECT rcMiddle;
+ int width;
- width = rc->right - rc->left;
+ width = rc->right - rc->left;
- rcTop.left = rc->left;
- rcTop.right = rc->right;
- rcTop.top = rc->top;
- rcTop.bottom = rc->top + width;
+ rcTop.left = rc->left;
+ rcTop.right = rc->right;
+ rcTop.top = rc->top;
+ rcTop.bottom = rc->top + width;
- rcMiddle.left = rc->left;
- rcMiddle.right = rc->right;
- rcMiddle.top = rc->top + width;
- rcMiddle.bottom = rc->bottom - width;
+ rcMiddle.left = rc->left;
+ rcMiddle.right = rc->right;
+ rcMiddle.top = rc->top + width;
+ rcMiddle.bottom = rc->bottom - width;
- rcBottom.left = rc->left;
- rcBottom.right = rc->right;
- rcBottom.top = rc->bottom - width;
- rcBottom.bottom = rc->bottom;
+ rcBottom.left = rc->left;
+ rcBottom.right = rc->right;
+ rcBottom.top = rc->bottom - width;
+ rcBottom.bottom = rc->bottom;
- MyDrawFrameControl(hdc, &rcTop, DFC_SCROLL, DFCS_SCROLLUP, scheme);
- MyDrawFrameControl(hdc, &rcBottom, DFC_SCROLL, DFCS_SCROLLDOWN, scheme);
+ MyDrawFrameControl(hdc, &rcTop, DFC_SCROLL, DFCS_SCROLLUP, scheme);
+ MyDrawFrameControl(hdc, &rcBottom, DFC_SCROLL, DFCS_SCROLLDOWN, scheme);
- FillRect(hdc, &rcMiddle, hbrScrollbar);
+ FillRect(hdc, &rcMiddle, hbrScrollbar);
}
/******************************************************************************/
BOOL
MyDrawCaptionTemp(HWND hwnd, HDC hdc, const RECT *rect, HFONT hFont, HICON hIcon, LPCWSTR str, UINT uFlags, COLOR_SCHEME *scheme)
{
- //ULONG Height;
- //UINT VCenter, Padding;
- //LONG ButtonWidth;
- HBRUSH hbr;
- HGDIOBJ hFontOld;
- RECT rc;
-
- //Height = scheme->Size[SIZE_CAPTION_Y] - 1;
- //VCenter = (rect->bottom - rect->top) / 2;
- //Padding = VCenter - (Height / 2);
-
- //ButtonWidth = scheme->Size[SIZE_SIZE_X] - 2;
-
- if (uFlags & DC_GRADIENT)
- {
- GRADIENT_RECT gcap = {0, 1};
- TRIVERTEX vert[2];
- COLORREF Colors[2];
-
- Colors[0] = scheme->crColor[((uFlags & DC_ACTIVE) ?
- COLOR_ACTIVECAPTION : COLOR_INACTIVECAPTION)];
- Colors[1] = scheme->crColor[((uFlags & DC_ACTIVE) ?
- COLOR_GRADIENTACTIVECAPTION : COLOR_GRADIENTINACTIVECAPTION)];
-
- vert[0].x = rect->left;
- vert[0].y = rect->top;
- vert[0].Red = (WORD)Colors[0]<<8;
- vert[0].Green = (WORD)Colors[0] & 0xFF00;
- vert[0].Blue = (WORD)(Colors[0]>>8) & 0xFF00;
- vert[0].Alpha = 0;
-
- vert[1].x = rect->right;
- vert[1].y = rect->bottom;
- vert[1].Red = (WORD)Colors[1]<<8;
- vert[1].Green = (WORD)Colors[1] & 0xFF00;
- vert[1].Blue = (WORD)(Colors[1]>>8) & 0xFF00;
- vert[1].Alpha = 0;
-
- GdiGradientFill(hdc, vert, 2, &gcap, 1, GRADIENT_FILL_RECT_H);
- }
- else
- {
- if (uFlags & DC_ACTIVE)
- hbr = CreateSolidBrush(scheme->crColor[COLOR_ACTIVECAPTION]);
- else
- hbr = CreateSolidBrush(scheme->crColor[COLOR_INACTIVECAPTION]);
- FillRect(hdc, rect, hbr);
- DeleteObject(hbr);
- }
-
- hFontOld = SelectObject(hdc, hFont);
- SetBkMode(hdc, TRANSPARENT);
- if (uFlags & DC_ACTIVE)
- SetTextColor(hdc, scheme->crColor[COLOR_CAPTIONTEXT]);
- else
- SetTextColor(hdc, scheme->crColor[COLOR_INACTIVECAPTIONTEXT]);
- rc.left = rect->left + 2;
- rc.top = rect->top;
- rc.right = rect->right;
- rc.bottom = rect->bottom;
- DrawTextW(hdc, str, -1, &rc, DT_SINGLELINE | DT_VCENTER);
- SelectObject(hdc, hFontOld);
- return TRUE;
+ //ULONG Height;
+ //UINT VCenter, Padding;
+ //LONG ButtonWidth;
+ HBRUSH hbr;
+ HGDIOBJ hFontOld;
+ RECT rc;
+
+ //Height = scheme->Size[SIZE_CAPTION_Y] - 1;
+ //VCenter = (rect->bottom - rect->top) / 2;
+ //Padding = VCenter - (Height / 2);
+
+ //ButtonWidth = scheme->Size[SIZE_SIZE_X] - 2;
+
+ if (uFlags & DC_GRADIENT)
+ {
+ GRADIENT_RECT gcap = {0, 1};
+ TRIVERTEX vert[2];
+ COLORREF Colors[2];
+
+ Colors[0] = scheme->crColor[((uFlags & DC_ACTIVE) ?
+ COLOR_ACTIVECAPTION : COLOR_INACTIVECAPTION)];
+ Colors[1] = scheme->crColor[((uFlags & DC_ACTIVE) ?
+ COLOR_GRADIENTACTIVECAPTION : COLOR_GRADIENTINACTIVECAPTION)];
+
+ vert[0].x = rect->left;
+ vert[0].y = rect->top;
+ vert[0].Red = (WORD)Colors[0]<<8;
+ vert[0].Green = (WORD)Colors[0] & 0xFF00;
+ vert[0].Blue = (WORD)(Colors[0]>>8) & 0xFF00;
+ vert[0].Alpha = 0;
+
+ vert[1].x = rect->right;
+ vert[1].y = rect->bottom;
+ vert[1].Red = (WORD)Colors[1]<<8;
+ vert[1].Green = (WORD)Colors[1] & 0xFF00;
+ vert[1].Blue = (WORD)(Colors[1]>>8) & 0xFF00;
+ vert[1].Alpha = 0;
+
+ GdiGradientFill(hdc, vert, 2, &gcap, 1, GRADIENT_FILL_RECT_H);
+ }
+ else
+ {
+ if (uFlags & DC_ACTIVE)
+ hbr = CreateSolidBrush(scheme->crColor[COLOR_ACTIVECAPTION]);
+ else
+ hbr = CreateSolidBrush(scheme->crColor[COLOR_INACTIVECAPTION]);
+ FillRect(hdc, rect, hbr);
+ DeleteObject(hbr);
+ }
+
+ hFontOld = SelectObject(hdc, hFont);
+ SetBkMode(hdc, TRANSPARENT);
+ if (uFlags & DC_ACTIVE)
+ SetTextColor(hdc, scheme->crColor[COLOR_CAPTIONTEXT]);
+ else
+ SetTextColor(hdc, scheme->crColor[COLOR_INACTIVECAPTIONTEXT]);
+ rc.left = rect->left + 2;
+ rc.top = rect->top;
+ rc.right = rect->right;
+ rc.bottom = rect->bottom;
+ DrawTextW(hdc, str, -1, &rc, DT_SINGLELINE | DT_VCENTER);
+ SelectObject(hdc, hFontOld);
+ return TRUE;
}
/******************************************************************************/
DWORD
MyDrawMenuBarTemp(HWND Wnd, HDC DC, LPRECT Rect, HMENU Menu, HFONT Font, COLOR_SCHEME *scheme)
{
- HBRUSH hbr;
- HPEN hPen;
- HGDIOBJ hPenOld, hFontOld;
- BOOL flat_menu;
- INT i, bkgnd, x;
- RECT rect;
- WCHAR Text[128];
- UINT uFormat = DT_CENTER | DT_VCENTER | DT_SINGLELINE;
-
- flat_menu = scheme->bFlatMenus;
-
- if (flat_menu)
- hbr = CreateSolidBrush(scheme->crColor[COLOR_MENUBAR]);
- else
- hbr = CreateSolidBrush(scheme->crColor[COLOR_MENU]);
- FillRect(DC, Rect, hbr);
- DeleteObject(hbr);
-
- hPen = CreatePen(PS_SOLID, 0, scheme->crColor[COLOR_3DFACE]);
- hPenOld = SelectObject(DC, hPen);
- MoveToEx(DC, Rect->left, Rect->bottom - 1, NULL);
- LineTo(DC, Rect->right, Rect->bottom - 1);
- SelectObject(DC, hPenOld);
- DeleteObject(hPen);
+ HBRUSH hbr;
+ HPEN hPen;
+ HGDIOBJ hPenOld, hFontOld;
+ BOOL flat_menu;
+ INT i, bkgnd, x;
+ RECT rect;
+ WCHAR Text[128];
+ UINT uFormat = DT_CENTER | DT_VCENTER | DT_SINGLELINE;
+
+ flat_menu = scheme->bFlatMenus;
+
+ if (flat_menu)
+ hbr = CreateSolidBrush(scheme->crColor[COLOR_MENUBAR]);
+ else
+ hbr = CreateSolidBrush(scheme->crColor[COLOR_MENU]);
+ FillRect(DC, Rect, hbr);
+ DeleteObject(hbr);
+
+ hPen = CreatePen(PS_SOLID, 0, scheme->crColor[COLOR_3DFACE]);
+ hPenOld = SelectObject(DC, hPen);
+ MoveToEx(DC, Rect->left, Rect->bottom - 1, NULL);
+ LineTo(DC, Rect->right, Rect->bottom - 1);
+ SelectObject(DC, hPenOld);
+ DeleteObject(hPen);
bkgnd = (flat_menu ? COLOR_MENUBAR : COLOR_MENU);
- x = Rect->left;
- hFontOld = SelectObject(DC, Font);
- for(i = 0; i < 3; i++)
- {
- GetMenuStringW(Menu, i, Text, 128, MF_BYPOSITION);
-
- rect.left = rect.right = x;
- rect.top = Rect->top;
- rect.bottom = Rect->bottom;
- DrawTextW(DC, Text, -1, &rect, DT_SINGLELINE | DT_CALCRECT);
- rect.bottom = Rect->bottom;
- rect.right += MENU_BAR_ITEMS_SPACE;
- x += rect.right - rect.left;
-
- if (i == 2)
- {
- if (flat_menu)
- {
- SetTextColor(DC, scheme->crColor[COLOR_HIGHLIGHTTEXT]);
- SetBkColor(DC, scheme->crColor[COLOR_HIGHLIGHT]);
-
- InflateRect (&rect, -1, -1);
- hbr = CreateSolidBrush(scheme->crColor[COLOR_MENUHILIGHT]);
- FillRect(DC, &rect, hbr);
- DeleteObject(hbr);
-
- InflateRect (&rect, 1, 1);
- hbr = CreateSolidBrush(scheme->crColor[COLOR_HIGHLIGHT]);
- FrameRect(DC, &rect, hbr);
- DeleteObject(hbr);
- }
- else
- {
- SetTextColor(DC, scheme->crColor[COLOR_MENUTEXT]);
- SetBkColor(DC, scheme->crColor[COLOR_MENU]);
- DrawEdge(DC, &rect, BDR_SUNKENOUTER, BF_RECT);
- }
- }
- else
- {
- if (i == 1)
- SetTextColor(DC, scheme->crColor[COLOR_GRAYTEXT]);
- else
- SetTextColor(DC, scheme->crColor[COLOR_MENUTEXT]);
-
- SetBkColor(DC, scheme->crColor[bkgnd]);
- hbr = CreateSolidBrush(scheme->crColor[bkgnd]);
- FillRect(DC, &rect, hbr);
- DeleteObject(hbr);
- }
-
- SetBkMode(DC, TRANSPARENT);
-
- rect.left += MENU_BAR_ITEMS_SPACE / 2;
- rect.right -= MENU_BAR_ITEMS_SPACE / 2;
-
- if (i == 1)
- {
- ++rect.left; ++rect.top; ++rect.right; ++rect.bottom;
- SetTextColor(DC, RGB(0xff, 0xff, 0xff));
- DrawTextW(DC, Text, -1, &rect, uFormat);
- --rect.left; --rect.top; --rect.right; --rect.bottom;
- SetTextColor(DC, RGB(0x80, 0x80, 0x80));
- }
- DrawTextW(DC, Text, -1, &rect, uFormat);
- }
- SelectObject(DC, hFontOld);
-
- return TRUE;
+ x = Rect->left;
+ hFontOld = SelectObject(DC, Font);
+ for(i = 0; i < 3; i++)
+ {
+ GetMenuStringW(Menu, i, Text, 128, MF_BYPOSITION);
+
+ rect.left = rect.right = x;
+ rect.top = Rect->top;
+ rect.bottom = Rect->bottom;
+ DrawTextW(DC, Text, -1, &rect, DT_SINGLELINE | DT_CALCRECT);
+ rect.bottom = Rect->bottom;
+ rect.right += MENU_BAR_ITEMS_SPACE;
+ x += rect.right - rect.left;
+
+ if (i == 2)
+ {
+ if (flat_menu)
+ {
+ SetTextColor(DC, scheme->crColor[COLOR_HIGHLIGHTTEXT]);
+ SetBkColor(DC, scheme->crColor[COLOR_HIGHLIGHT]);
+
+ InflateRect (&rect, -1, -1);
+ hbr = CreateSolidBrush(scheme->crColor[COLOR_MENUHILIGHT]);
+ FillRect(DC, &rect, hbr);
+ DeleteObject(hbr);
+
+ InflateRect (&rect, 1, 1);
+ hbr = CreateSolidBrush(scheme->crColor[COLOR_HIGHLIGHT]);
+ FrameRect(DC, &rect, hbr);
+ DeleteObject(hbr);
+ }
+ else
+ {
+ SetTextColor(DC, scheme->crColor[COLOR_MENUTEXT]);
+ SetBkColor(DC, scheme->crColor[COLOR_MENU]);
+ DrawEdge(DC, &rect, BDR_SUNKENOUTER, BF_RECT);
+ }
+ }
+ else
+ {
+ if (i == 1)
+ SetTextColor(DC, scheme->crColor[COLOR_GRAYTEXT]);
+ else
+ SetTextColor(DC, scheme->crColor[COLOR_MENUTEXT]);
+
+ SetBkColor(DC, scheme->crColor[bkgnd]);
+ hbr = CreateSolidBrush(scheme->crColor[bkgnd]);
+ FillRect(DC, &rect, hbr);
+ DeleteObject(hbr);
+ }
+
+ SetBkMode(DC, TRANSPARENT);
+
+ rect.left += MENU_BAR_ITEMS_SPACE / 2;
+ rect.right -= MENU_BAR_ITEMS_SPACE / 2;
+
+ if (i == 1)
+ {
+ ++rect.left; ++rect.top; ++rect.right; ++rect.bottom;
+ SetTextColor(DC, RGB(0xff, 0xff, 0xff));
+ DrawTextW(DC, Text, -1, &rect, uFormat);
+ --rect.left; --rect.top; --rect.right; --rect.bottom;
+ SetTextColor(DC, RGB(0x80, 0x80, 0x80));
+ }
+ DrawTextW(DC, Text, -1, &rect, uFormat);
+ }
+ SelectObject(DC, hFontOld);
+
+ return TRUE;
}