extern wxFont wxGetCCDefaultFont() { // the default font used for the common controls seems to be the desktop // font which is also used for the icon titles and not the stock default // GUI font LOGFONT lf; if ( ::SystemParametersInfo ( SPI_GETICONTITLELOGFONT, sizeof(lf), &lf, 0 ) ) { return wxFont(wxCreateFontFromLogFont(&lf)); } else { wxLogLastError(wxT("SystemParametersInfo(SPI_GETICONTITLELOGFONT")); } // fall back to the default font for the normal controls return wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); }
int wxFontDialog::ShowModal() { // It should be OK to always use GDI simulations DWORD flags = CF_SCREENFONTS /* | CF_NOSIMULATIONS */ ; LOGFONT logFont; CHOOSEFONT chooseFontStruct; wxZeroMemory(chooseFontStruct); chooseFontStruct.lStructSize = sizeof(CHOOSEFONT); if ( m_parent ) chooseFontStruct.hwndOwner = GetHwndOf(m_parent); chooseFontStruct.lpLogFont = &logFont; if ( m_fontData.m_initialFont.IsOk() ) { flags |= CF_INITTOLOGFONTSTRUCT; wxFillLogFont(&logFont, &m_fontData.m_initialFont); } if ( m_fontData.m_fontColour.IsOk() ) { chooseFontStruct.rgbColors = wxColourToRGB(m_fontData.m_fontColour); } // CF_ANSIONLY flag is obsolete for Win32 if ( !m_fontData.GetAllowSymbols() ) { flags |= CF_SELECTSCRIPT; logFont.lfCharSet = ANSI_CHARSET; } if ( m_fontData.GetEnableEffects() ) flags |= CF_EFFECTS; if ( m_fontData.GetShowHelp() ) flags |= CF_SHOWHELP; if ( m_fontData.m_minSize != 0 || m_fontData.m_maxSize != 0 ) { chooseFontStruct.nSizeMin = m_fontData.m_minSize; chooseFontStruct.nSizeMax = m_fontData.m_maxSize; flags |= CF_LIMITSIZE; } chooseFontStruct.Flags = flags; if ( ChooseFont(&chooseFontStruct) != 0 ) { wxRGBToColour(m_fontData.m_fontColour, chooseFontStruct.rgbColors); m_fontData.m_chosenFont = wxCreateFontFromLogFont(&logFont); m_fontData.EncodingInfo().facename = logFont.lfFaceName; m_fontData.EncodingInfo().charset = logFont.lfCharSet; return wxID_OK; } else { DWORD dwErr = CommDlgExtendedError(); if ( dwErr != 0 ) { wxLogError(_("Common dialog failed with error code %0lx."), dwErr); } //else: it was just cancelled return wxID_CANCEL; } }