mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 17:34:57 +00:00
- more improved version, reduced calls, allocate ressources if needed only
svn path=/trunk/; revision=39888
This commit is contained in:
parent
953536f72d
commit
1839fc66f1
1 changed files with 27 additions and 33 deletions
|
@ -1234,65 +1234,59 @@ static BOOL UITOOLS95_DrawFrameScroll(HDC dc, LPRECT r, UINT uFlags)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ported from WINE20020904 */
|
|
||||||
/* Draw a menu control coming from DrawFrameControl() */
|
|
||||||
static BOOL UITOOLS95_DrawFrameMenu(HDC dc, LPRECT r, UINT uFlags)
|
static BOOL UITOOLS95_DrawFrameMenu(HDC dc, LPRECT r, UINT uFlags)
|
||||||
{
|
{
|
||||||
RECT myr;
|
|
||||||
int SmallDiam = UITOOLS_MakeSquareRect(r, &myr);
|
|
||||||
BOOL retval = TRUE;
|
|
||||||
/* Start using Marlett-font instead of basic drawing */
|
|
||||||
LOGFONT lf;
|
LOGFONT lf;
|
||||||
HFONT hFont, hOldFont;
|
HFONT hFont, hOldFont;
|
||||||
COLORREF clrsave;
|
COLORREF clrsave;
|
||||||
|
INT bkmode;
|
||||||
ZeroMemory(&lf, sizeof(LOGFONT));
|
TCHAR Symbol;
|
||||||
lf.lfHeight = SmallDiam;
|
|
||||||
lf.lfWidth = 0;
|
|
||||||
lf.lfWeight = FW_NORMAL;
|
|
||||||
lf.lfCharSet = DEFAULT_CHARSET;
|
|
||||||
lstrcpy(lf.lfFaceName, TEXT("Marlett"));
|
|
||||||
hFont = CreateFontIndirect(&lf);
|
|
||||||
hOldFont = SelectObject(dc, hFont);
|
|
||||||
SetBkMode(dc, TRANSPARENT);
|
|
||||||
clrsave = GetTextColor(dc);
|
|
||||||
SetTextColor(dc, GetSysColor(COLOR_WINDOWTEXT));
|
|
||||||
|
|
||||||
FillRect(dc, r, (HBRUSH)GetStockObject(WHITE_BRUSH));
|
|
||||||
|
|
||||||
switch(uFlags & 0xff)
|
switch(uFlags & 0xff)
|
||||||
{
|
{
|
||||||
case DFCS_MENUARROW:
|
case DFCS_MENUARROW:
|
||||||
// FIXME: is "8" the correct symbol?
|
Symbol = '8';
|
||||||
TextOut(dc, myr.left, myr.top, TEXT("8"), 1);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DFCS_MENUBULLET:
|
case DFCS_MENUBULLET:
|
||||||
// FIXME: is "h" the correct symbol?
|
Symbol = 'h';
|
||||||
TextOut(dc, myr.left, myr.top, TEXT("h"), 1);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DFCS_MENUCHECK:
|
case DFCS_MENUCHECK:
|
||||||
// FIXME: is "a" the correct symbol?
|
Symbol = 'a';
|
||||||
TextOut(dc, myr.left, myr.top, TEXT("a"), 1);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
/*
|
/*
|
||||||
DbgPrint("Invalid menu; flags=0x%04x\n", uFlags);
|
DbgPrint("Invalid menu; flags=0x%04x\n", uFlags);
|
||||||
*/
|
*/
|
||||||
retval = FALSE;
|
return FALSE;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
/* acquire ressources only if valid menu */
|
||||||
|
ZeroMemory(&lf, sizeof(LOGFONT));
|
||||||
|
lf.lfHeight = r->bottom - r->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);
|
||||||
|
SetTextColor(dc, GetSysColor(COLOR_WINDOWTEXT));
|
||||||
|
FillRect(dc, r, (HBRUSH)GetStockObject(WHITE_BRUSH));
|
||||||
|
/* draw selected symbol */
|
||||||
|
TextOut(dc, r->left, r->top, &Symbol, 1);
|
||||||
|
/* restore previous settings */
|
||||||
SetTextColor(dc, clrsave);
|
SetTextColor(dc, clrsave);
|
||||||
SelectObject(dc, hOldFont);
|
SelectObject(dc, hOldFont);
|
||||||
|
SetBkMode(dc, bkmode);
|
||||||
DeleteObject(hFont);
|
DeleteObject(hFont);
|
||||||
|
return TRUE;
|
||||||
return retval;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
IntGrayString(
|
IntGrayString(
|
||||||
|
|
Loading…
Reference in a new issue