From 553c5bcc3ab65e8b8a002dc6d5f51cba4f39292c Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 1 Apr 2004 00:09:48 +0000 Subject: [PATCH] added wxGetCCDefaultFont() returning the default icon font git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26524 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/msw/wrapcctl.h | 16 ++++----- src/msw/settings.cpp | 76 +++++++++++++++++++++++++++++++-------- 2 files changed, 69 insertions(+), 23 deletions(-) diff --git a/include/wx/msw/wrapcctl.h b/include/wx/msw/wrapcctl.h index c8d13f8378..6c916ffa7f 100644 --- a/include/wx/msw/wrapcctl.h +++ b/include/wx/msw/wrapcctl.h @@ -47,16 +47,14 @@ inline void wxSetCCUnicodeFormat(HWND hwnd) { #ifndef __WXWINCE__ - SendMessage(hwnd, CCM_SETUNICODEFORMAT, -#if wxUSE_UNICODE - TRUE -#else - FALSE -#endif - , 0); -#endif - // __WXWINCE__ + ::SendMessage(hwnd, CCM_SETUNICODEFORMAT, wxUSE_UNICODE, 0); +#endif // __WXWINCE__ } +// Return the default font for the common controls +// +// this is implemented in msw/settings.cpp +extern wxFont wxGetCCDefaultFont(); + #endif // _WX_MSW_WRAPCCTL_H_ diff --git a/src/msw/settings.cpp b/src/msw/settings.cpp index a2c3447c99..633f9bd50c 100644 --- a/src/msw/settings.cpp +++ b/src/msw/settings.cpp @@ -249,22 +249,13 @@ wxFont wxCreateFontFromStockObject(int index) wxFont wxSystemSettingsNative::GetFont(wxSystemFont index) { -#ifndef __WXWINCE__ - // this one is special: we don't get it from GetStockObject() - if ( index == wxSYS_ICONTITLE_FONT ) - { - LOGFONT lf; - SystemParametersInfo(SPI_GETICONTITLELOGFONT, sizeof(lf), &lf, 0); - return wxCreateFontFromLogFont(&lf); - } -#endif // __WXWINCE__ - // wxWindow ctor calls GetSystemFont(wxSYS_DEFAULT_GUI_FONT) so we're - // called fairly often - this is why we cache this particular font - bool isDefaultRequested = index == wxSYS_DEFAULT_GUI_FONT; - if ( isDefaultRequested && gs_fontDefault ) + // called fairly often -- this is why we cache this particular font + const bool isDefaultRequested = index == wxSYS_DEFAULT_GUI_FONT; + if ( isDefaultRequested ) { - return *gs_fontDefault; + if ( gs_fontDefault ) + return *gs_fontDefault; } wxFont font = wxCreateFontFromStockObject(index); @@ -415,3 +406,60 @@ bool wxSystemSettingsNative::HasFeature(wxSystemFeature index) return FALSE; } } + +// ---------------------------------------------------------------------------- +// function from wx/msw/wrapcctl.h: there is really no other place for it... +// ---------------------------------------------------------------------------- + +#if wxUSE_LISTCTRL || wxUSE_TREECTRL + +extern wxFont wxGetCCDefaultFont() +{ +#ifndef __WXWINCE__ + // under the systems enumerated below (anything released after Win98), 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 + bool useIconFont; + int verMaj, verMin; + switch ( wxGetOsVersion(&verMaj, &verMin) ) + { + case wxWIN95: + // 4.10 is Win98 + useIconFont = verMin == 4 && verMin >= 10; + break; + + case wxWINDOWS_NT: + // 5.0 is Win2k + useIconFont = verMaj >= 5; + break; + + default: + useIconFont = false; + } + + if ( useIconFont ) + { + LOGFONT lf; + if ( ::SystemParametersInfo + ( + SPI_GETICONTITLELOGFONT, + sizeof(lf), + &lf, + 0 + ) ) + { + return wxFont(wxCreateFontFromLogFont(&lf)); + } + else + { + wxLogLastError(_T("SystemParametersInfo(SPI_GETICONTITLELOGFONT")); + } + } +#endif // __WXWINCE__ + + // fall back to the default font for the normal controls + return wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); +} + +#endif // wxUSE_LISTCTRL || wxUSE_TREECTRL