1 ///////////////////////////////////////////////////////////////////////////// 
   2 // Name:        src/msw/fontdlg.cpp 
   3 // Purpose:     wxFontDialog class 
   4 // Author:      Julian Smart 
   8 // Copyright:   (c) Julian Smart 
   9 // Licence:     wxWindows licence 
  10 ///////////////////////////////////////////////////////////////////////////// 
  12 // ============================================================================ 
  14 // ============================================================================ 
  16 // ---------------------------------------------------------------------------- 
  18 // ---------------------------------------------------------------------------- 
  20 #if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) 
  21     #pragma implementation "fontdlg.h" 
  24 // For compilers that support precompilation, includes "wx.h". 
  25 #include "wx/wxprec.h" 
  36     #include "wx/dialog.h" 
  39 #include "wx/fontdlg.h" 
  40 #include "wx/msw/private.h" 
  42 #if !defined(__WIN32__) || defined(__WXWINCE__) 
  46 #include "wx/cmndata.h" 
  53 // ---------------------------------------------------------------------------- 
  55 // ---------------------------------------------------------------------------- 
  57 IMPLEMENT_DYNAMIC_CLASS(wxFontDialog
, wxDialog
) 
  59 // ============================================================================ 
  61 // ============================================================================ 
  63 // ---------------------------------------------------------------------------- 
  65 // ---------------------------------------------------------------------------- 
  67 int wxFontDialog::ShowModal() 
  69     DWORD flags 
= CF_SCREENFONTS 
| CF_NOSIMULATIONS
; 
  73     CHOOSEFONT chooseFontStruct
; 
  74     wxZeroMemory(chooseFontStruct
); 
  76     chooseFontStruct
.lStructSize 
= sizeof(CHOOSEFONT
); 
  78         chooseFontStruct
.hwndOwner 
= GetHwndOf(m_parent
); 
  79     chooseFontStruct
.lpLogFont 
= &logFont
; 
  81     if ( m_fontData
.m_initialFont
.Ok() ) 
  83         flags 
|= CF_INITTOLOGFONTSTRUCT
; 
  84         wxFillLogFont(&logFont
, &m_fontData
.m_initialFont
); 
  87     if ( m_fontData
.m_fontColour
.Ok() ) 
  89         chooseFontStruct
.rgbColors 
= wxColourToRGB(m_fontData
.m_fontColour
); 
  91         // need this for the colour to be taken into account 
  95     // CF_ANSIONLY flag is obsolete for Win32 
  96     if ( !m_fontData
.GetAllowSymbols() ) 
  98       flags 
|= CF_SELECTSCRIPT
; 
  99       logFont
.lfCharSet 
= ANSI_CHARSET
; 
 102     if ( m_fontData
.GetEnableEffects() ) 
 104     if ( m_fontData
.GetShowHelp() ) 
 105       flags 
|= CF_SHOWHELP
; 
 107     if ( m_fontData
.m_minSize 
!= 0 || m_fontData
.m_maxSize 
!= 0 ) 
 109         chooseFontStruct
.nSizeMin 
= m_fontData
.m_minSize
; 
 110         chooseFontStruct
.nSizeMax 
= m_fontData
.m_maxSize
; 
 111         flags 
|= CF_LIMITSIZE
; 
 114     chooseFontStruct
.Flags 
= flags
; 
 116     if ( ChooseFont(&chooseFontStruct
) != 0 ) 
 118         wxRGBToColour(m_fontData
.m_fontColour
, chooseFontStruct
.rgbColors
); 
 119         m_fontData
.m_chosenFont 
= wxCreateFontFromLogFont(&logFont
); 
 120         m_fontData
.EncodingInfo().facename 
= logFont
.lfFaceName
; 
 121         m_fontData
.EncodingInfo().charset 
= logFont
.lfCharSet
; 
 127         // common dialog failed - why? 
 129         DWORD dwErr 
= CommDlgExtendedError(); 
 132             // this msg is only for developers 
 133             wxLogError(wxT("Common dialog failed with error code %0lx."), 
 136         //else: it was just cancelled 
 143 #endif // wxUSE_FONTDLG