HBRUSH FASTCALL DefWndControlColor(HDC hDC, UINT ctlType) { if (ctlType == CTLCOLOR_SCROLLBAR) { HBRUSH hb = IntGetSysColorBrush(COLOR_SCROLLBAR); COLORREF bk = IntGetSysColor(COLOR_3DHILIGHT); IntGdiSetTextColor(hDC, IntGetSysColor(COLOR_3DFACE)); IntGdiSetBkColor(hDC, bk); /* if COLOR_WINDOW happens to be the same as COLOR_3DHILIGHT * we better use 0x55aa bitmap brush to make scrollbar's background * look different from the window background. */ if ( bk == IntGetSysColor(COLOR_WINDOW)) return gpsi->hbrGray; NtGdiUnrealizeObject( hb ); return hb; } IntGdiSetTextColor(hDC, IntGetSysColor(COLOR_WINDOWTEXT)); if ((ctlType == CTLCOLOR_EDIT) || (ctlType == CTLCOLOR_LISTBOX)) { IntGdiSetBkColor(hDC, IntGetSysColor(COLOR_WINDOW)); } else { IntGdiSetBkColor(hDC, IntGetSysColor(COLOR_3DFACE)); return IntGetSysColorBrush(COLOR_3DFACE); } return IntGetSysColorBrush(COLOR_WINDOW); }
BOOL FASTCALL UITOOLS95_DrawFrameMenu(HDC dc, LPRECT r, UINT uFlags) { LOGFONTW lf; HFONT hFont, hOldFont; WCHAR Symbol; switch(uFlags & 0xff) { case DFCS_MENUARROWUP: Symbol = '5'; break; case DFCS_MENUARROWDOWN: Symbol = '6'; break; case DFCS_MENUARROW: Symbol = '8'; break; case DFCS_MENUARROWRIGHT: Symbol = 'w'; // FIXME: needs to confirm break; case DFCS_MENUBULLET: Symbol = 'h'; break; case DFCS_MENUCHECK: Symbol = 'a'; break; default: /* DbgPrint("Invalid menu; flags=0x%04x\n", uFlags); */ return FALSE; } /* acquire ressources only if valid menu */ RtlZeroMemory(&lf, sizeof(LOGFONTW)); lf.lfHeight = r->bottom - r->top; lf.lfWidth = 0; lf.lfWeight = FW_NORMAL; lf.lfCharSet = DEFAULT_CHARSET; RtlCopyMemory(lf.lfFaceName, L"Marlett", sizeof(L"Marlett")); hFont = GreCreateFontIndirectW(&lf); /* save font */ hOldFont = NtGdiSelectFont(dc, hFont); if ((uFlags & 0xff) == DFCS_MENUARROWUP || (uFlags & 0xff) == DFCS_MENUARROWDOWN ) { #if 0 if (uFlags & DFCS_INACTIVE) { /* draw shadow */ IntGdiSetTextColor(dc, IntGetSysColor(COLOR_BTNHIGHLIGHT)); GreTextOutW(dc, r->left + 1, r->top + 1, &Symbol, 1); } #endif IntGdiSetTextColor(dc, IntGetSysColor((uFlags & DFCS_INACTIVE) ? COLOR_BTNSHADOW : COLOR_BTNTEXT)); } /* draw selected symbol */ GreTextOutW(dc, r->left, r->top, &Symbol, 1); /* restore previous settings */ NtGdiSelectFont(dc, hOldFont); GreDeleteObject(hFont); return TRUE; }
BOOL FASTCALL UITOOLS95_DrawFrameCaption(HDC dc, LPRECT r, UINT uFlags) { LOGFONTW lf; HFONT hFont, hOldFont; COLORREF clrsave; RECT myr; INT bkmode; WCHAR 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; } IntDrawRectEdge(dc,r,(uFlags&DFCS_PUSHED) ? EDGE_SUNKEN : EDGE_RAISED, BF_RECT | BF_MIDDLE | BF_SOFT); RtlZeroMemory(&lf, sizeof(LOGFONTW)); UITOOLS_MakeSquareRect(r, &myr); myr.left += 1; myr.top += 1; myr.right -= 1; myr.bottom -= 1; if(uFlags & DFCS_PUSHED) RECTL_vOffsetRect(&myr,1,1); lf.lfHeight = myr.bottom - myr.top; lf.lfWidth = 0; lf.lfWeight = FW_NORMAL; lf.lfCharSet = DEFAULT_CHARSET; lf.lfQuality = NONANTIALIASED_QUALITY; RtlCopyMemory(lf.lfFaceName, L"Marlett", sizeof(L"Marlett")); hFont = GreCreateFontIndirectW(&lf); /* save font and text color */ hOldFont = NtGdiSelectFont(dc, hFont); clrsave = GreGetTextColor(dc); bkmode = GreGetBkMode(dc); /* set color and drawing mode */ IntGdiSetBkMode(dc, TRANSPARENT); if(uFlags & DFCS_INACTIVE) { /* draw shadow */ IntGdiSetTextColor(dc, IntGetSysColor(COLOR_BTNHIGHLIGHT)); GreTextOutW(dc, myr.left + 1, myr.top + 1, &Symbol, 1); } IntGdiSetTextColor(dc, IntGetSysColor((uFlags & DFCS_INACTIVE) ? COLOR_BTNSHADOW : COLOR_BTNTEXT)); /* draw selected symbol */ GreTextOutW(dc, myr.left, myr.top, &Symbol, 1); /* restore previous settings */ IntGdiSetTextColor(dc, clrsave); NtGdiSelectFont(dc, hOldFont); IntGdiSetBkMode(dc, bkmode); GreDeleteObject(hFont); return TRUE; }
BOOL FASTCALL UITOOLS95_DrawFrameScroll(HDC dc, LPRECT r, UINT uFlags) { LOGFONTW lf; HFONT hFont, hOldFont; COLORREF clrsave; RECT myr; INT bkmode; WCHAR 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; case DFCS_SCROLLSIZEGRIP: case DFCS_SCROLLSIZEGRIPRIGHT: RtlZeroMemory(&lf, sizeof(LOGFONTW)); UITOOLS_MakeSquareRect(r, &myr); lf.lfHeight = myr.bottom - myr.top; lf.lfWidth = 0; lf.lfWeight = FW_NORMAL; lf.lfCharSet = DEFAULT_CHARSET; RtlCopyMemory(lf.lfFaceName, L"Marlett", sizeof(L"Marlett")); hFont = GreCreateFontIndirectW(&lf); /* save font and text color */ hOldFont = NtGdiSelectFont(dc, hFont); clrsave = GreGetTextColor(dc); bkmode = GreGetBkMode(dc); /* set color and drawing mode */ IntGdiSetBkMode(dc, TRANSPARENT); if (!(uFlags & (DFCS_MONO | DFCS_FLAT))) { IntGdiSetTextColor(dc, IntGetSysColor(COLOR_BTNHIGHLIGHT)); /* draw selected symbol */ Symbol = ((uFlags & 0xff) == DFCS_SCROLLSIZEGRIP) ? 'o' : 'x'; GreTextOutW(dc, myr.left, myr.top, &Symbol, 1); IntGdiSetTextColor(dc, IntGetSysColor(COLOR_BTNSHADOW)); } else IntGdiSetTextColor(dc, IntGetSysColor(COLOR_WINDOWFRAME)); /* draw selected symbol */ Symbol = ((uFlags & 0xff) == DFCS_SCROLLSIZEGRIP) ? 'p' : 'y'; GreTextOutW(dc, myr.left, myr.top, &Symbol, 1); /* restore previous settings */ IntGdiSetTextColor(dc, clrsave); NtGdiSelectFont(dc, hOldFont); IntGdiSetBkMode(dc, bkmode); GreDeleteObject(hFont); return TRUE; default: return FALSE; } IntDrawRectEdge(dc, r, (uFlags & DFCS_PUSHED) ? EDGE_SUNKEN : EDGE_RAISED, (uFlags&DFCS_FLAT) | BF_MIDDLE | BF_RECT); RtlZeroMemory(&lf, sizeof(LOGFONTW)); UITOOLS_MakeSquareRect(r, &myr); myr.left += 1; myr.top += 1; myr.right -= 1; myr.bottom -= 1; if(uFlags & DFCS_PUSHED) RECTL_vOffsetRect(&myr,1,1); lf.lfHeight = myr.bottom - myr.top; lf.lfWidth = 0; lf.lfWeight = FW_NORMAL; lf.lfCharSet = DEFAULT_CHARSET; RtlCopyMemory(lf.lfFaceName, L"Marlett", sizeof(L"Marlett")); hFont = GreCreateFontIndirectW(&lf); /* save font and text color */ hOldFont = NtGdiSelectFont(dc, hFont); clrsave = GreGetTextColor(dc); bkmode = GreGetBkMode(dc); /* set color and drawing mode */ IntGdiSetBkMode(dc, TRANSPARENT); if(uFlags & DFCS_INACTIVE) { /* draw shadow */ IntGdiSetTextColor(dc, IntGetSysColor(COLOR_BTNHIGHLIGHT)); GreTextOutW(dc, myr.left + 1, myr.top + 1, &Symbol, 1); } IntGdiSetTextColor(dc, IntGetSysColor((uFlags & DFCS_INACTIVE) ? COLOR_BTNSHADOW : COLOR_BTNTEXT)); /* draw selected symbol */ GreTextOutW(dc, myr.left, myr.top, &Symbol, 1); /* restore previous settings */ IntGdiSetTextColor(dc, clrsave); NtGdiSelectFont(dc, hOldFont); IntGdiSetBkMode(dc, bkmode); GreDeleteObject(hFont); return TRUE; }
BOOL FASTCALL UITOOLS95_DFC_ButtonCheckRadio(HDC dc, LPRECT r, UINT uFlags, BOOL Radio) { LOGFONTW lf; HFONT hFont, hOldFont; int i; WCHAR OutRight, OutLeft, InRight, InLeft, Center; if (Radio) { OutRight = 'j'; // Outer right OutLeft = 'k'; // Outer left InRight = 'l'; // inner left InLeft = 'm'; // inner right Center = 'n'; // center } else { OutRight = 'c'; // Outer right OutLeft = 'd'; // Outer left InRight = 'e'; // inner left InLeft = 'f'; // inner right Center = 'g'; // center } RtlZeroMemory(&lf, sizeof(LOGFONTW)); lf.lfHeight = r->top - r->bottom; lf.lfWidth = 0; lf.lfWeight = FW_NORMAL; lf.lfCharSet = DEFAULT_CHARSET; RtlCopyMemory(lf.lfFaceName, L"Marlett", sizeof(L"Marlett")); hFont = GreCreateFontIndirectW(&lf); hOldFont = NtGdiSelectFont(dc, hFont); if(Radio && ((uFlags & 0xff) == DFCS_BUTTONRADIOMASK)) { IntGdiSetBkMode(dc, OPAQUE); IntGdiSetTextColor(dc, IntGetSysColor(COLOR_WINDOWFRAME)); GreTextOutW(dc, r->left, r->top, &Center, 1); IntGdiSetBkMode(dc, TRANSPARENT); IntGdiSetTextColor(dc, IntGetSysColor(COLOR_WINDOWFRAME)); GreTextOutW(dc, r->left, r->top, &OutRight, 1); IntGdiSetTextColor(dc, IntGetSysColor(COLOR_WINDOWFRAME)); GreTextOutW(dc, r->left, r->top, &OutLeft, 1); } else { IntGdiSetBkMode(dc, TRANSPARENT); /* Center section, white for active, grey for inactive */ i= !(uFlags & (DFCS_INACTIVE|DFCS_PUSHED)) ? COLOR_WINDOW : COLOR_BTNFACE; IntGdiSetTextColor(dc, IntGetSysColor(i)); GreTextOutW(dc, r->left, r->top, &Center, 1); if(uFlags & (DFCS_FLAT | DFCS_MONO)) { IntGdiSetTextColor(dc, IntGetSysColor(COLOR_WINDOWFRAME)); GreTextOutW(dc, r->left, r->top, &OutRight, 1); GreTextOutW(dc, r->left, r->top, &OutLeft, 1); GreTextOutW(dc, r->left, r->top, &InRight, 1); GreTextOutW(dc, r->left, r->top, &InLeft, 1); } else { IntGdiSetTextColor(dc, IntGetSysColor(COLOR_BTNSHADOW)); GreTextOutW(dc, r->left, r->top, &OutRight, 1); IntGdiSetTextColor(dc, IntGetSysColor(COLOR_BTNHIGHLIGHT)); GreTextOutW(dc, r->left, r->top, &OutLeft, 1); IntGdiSetTextColor(dc, IntGetSysColor(COLOR_3DDKSHADOW)); GreTextOutW(dc, r->left, r->top, &InRight, 1); IntGdiSetTextColor(dc, IntGetSysColor(COLOR_3DLIGHT)); GreTextOutW(dc, r->left, r->top, &InLeft, 1); } } if(uFlags & DFCS_CHECKED) { WCHAR Check = (Radio) ? 'i' : 'b'; IntGdiSetTextColor(dc, IntGetSysColor(COLOR_WINDOWTEXT)); GreTextOutW(dc, r->left, r->top, &Check, 1); } IntGdiSetTextColor(dc, IntGetSysColor(COLOR_WINDOWTEXT)); NtGdiSelectFont(dc, hOldFont); GreDeleteObject(hFont); return TRUE; }