- more improved version, reduced calls, allocate ressources if needed only

svn path=/trunk/; revision=39888
This commit is contained in:
Matthias Kupfer 2009-03-06 16:47:44 +00:00
parent 953536f72d
commit 1839fc66f1

View file

@ -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(