// Copyright (c) 1997-1999 Microsoft Corporation // // code common to several pages // // 12-16-97 sburns #include "headers.hxx" #include "common.hpp" #include "resource.h" //#include "state.hpp" //#include "ds.hpp" //#include // Creates the fonts for setLargeFonts(). // // hDialog - handle to a dialog to be used to retrieve a device // context. // // bigBoldFont - receives the handle of the big bold font created. void InitFonts( HWND hDialog, HFONT& bigBoldFont) { LOG_FUNCTION(InitFonts); ASSERT(Win::IsWindow(hDialog)); HRESULT hr = S_OK; do { NONCLIENTMETRICS ncm; memset(&ncm, 0, sizeof(ncm)); ncm.cbSize = sizeof(ncm); hr = Win::SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0); BREAK_ON_FAILED_HRESULT(hr); LOGFONT bigBoldLogFont = ncm.lfMessageFont; bigBoldLogFont.lfWeight = FW_BOLD; String fontName = String::load(IDS_BIG_BOLD_FONT_NAME); // ensure null termination 260237 memset(bigBoldLogFont.lfFaceName, 0, LF_FACESIZE * sizeof(TCHAR)); size_t fnLen = fontName.length(); fontName.copy( bigBoldLogFont.lfFaceName, // don't copy over the last null min(LF_FACESIZE - 1, fnLen)); unsigned fontSize = 0; String::load(IDS_BIG_BOLD_FONT_SIZE).convert(fontSize); ASSERT(fontSize); HDC hdc = 0; hr = Win::GetDC(hDialog, hdc); BREAK_ON_FAILED_HRESULT(hr); bigBoldLogFont.lfHeight = - ::MulDiv( static_cast(fontSize), Win::GetDeviceCaps(hdc, LOGPIXELSY), 72); hr = Win::CreateFontIndirect(bigBoldLogFont, bigBoldFont); BREAK_ON_FAILED_HRESULT(hr); Win::ReleaseDC(hDialog, hdc); } while (0); } void SetControlFont(HWND parentDialog, int controlID, HFONT font) { LOG_FUNCTION(SetControlFont); ASSERT(Win::IsWindow(parentDialog)); ASSERT(controlID); ASSERT(font); HWND control = Win::GetDlgItem(parentDialog, controlID); if (control) { Win::SetWindowFont(control, font, true); } } void SetLargeFont(HWND dialog, int bigBoldResID) { LOG_FUNCTION(SetLargeFont); ASSERT(Win::IsWindow(dialog)); ASSERT(bigBoldResID); static HFONT bigBoldFont = 0; if (!bigBoldFont) { InitFonts(dialog, bigBoldFont); } SetControlFont(dialog, bigBoldResID, bigBoldFont); }