Programmieren mit C++

Borland C++

MFC mit BC++ benutzen

Beispieltext für Font-Dialog benutzerdefiniert festlegen

Wie kann der Beispieltext des Standard-Schriftenauswahldialogs unter MFC benutzerdefiniert festgelegt werden?

Frage

Die MFC-Implementation erlaubt normalerweise nicht, daß der Beispieltext geändert wird. Damit es doch geht, muß eine Klasse von CFontDialog abgeleitet werden. Die nachfolgend vorgestellte Lösung erlaubt dann auch gleich die Übernahme der eingestellten Farben. Für den praktischen Einsatz muß lediglich ein CMyFontDialog erzeugt und der gewünschte Beispieltext im Konstruktor oder über die Methode SetSampleText() spezifiziert werden, bevor DoModal() aufgerufen wird. Die Klasse besitzt die folgende Struktur:

class CMyFontDialog : public CFontDialog {
     DECLARE_DYNCREATE(CMyFontDialog);
public:
     CMyFontDialog(LPLOGFONT lplogfont=NULL, 
                   LPCTSTR sampletext="Beispieltext", 
                   CWnd* pParentWnd=NULL);
protected:
     LPCTSTR m_sampletext;
public:
     CString SampleText() const { return m_sampletext; }
     void SetSampleText(LPCTSTR sampletext) { 
             m_sampletext = sampletext; }
public:
     COLORREF TextColor() const { return m_cf.rgbColors; }
     void SetTextColor(COLORREF rgbColors) { 
             m_cf.rgbColors = rgbColors; }
protected:
     // Generated message map functions
     //{{AFX_MSG(CMyFontDialog)
     //}}AFX_MSG
     DECLARE_MESSAGE_MAP()
};

Die zugehörige Implementation lautet:

IMPLEMENT_DYNCREATE(CMyFontDialog, CFontDialog)
 
BEGIN_MESSAGE_MAP(CMyFontDialog, CFontDialog)
//{{AFX_MSG_MAP(CMyFontDialog)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
 
CMyFontDialog::CMyFontDialog(LPLOGFONT lpLogfont, 
                             LPCTSTR sampletext, 
                             CWnd* pParentWnd)
  : CFontDialog(lpLogfont,CF_EFFECTS | CF_SCREENFONTS, NULL, 
                pParentWnd), m_sampletext(sampletext)
{}
 
BOOL CMyFontDialog::OnInitDialog() 
{
  BOOL r = CFontDialog::OnInitDialog();
  if (m_sampletext)
    SetDlgItemText(stc5, m_sampletext);
  return r;
}

Lösung





Sachgebiet


© 2009-2012 by Alojado Publishing. Alle Rechte vorbehalten. Ausgewiesene Marken gehören ihren jeweiligen Eigentümern.
Mit der Benutzung dieser Seite erkennen Sie die Nutzungsbedingungen und die Datenschutzerklärung an. Der Betreiber übernimmt keine Haftung für den Inhalt verlinkter externer Internetseiten.
Seite erzeugt 2012-05-20 01:17:43 von textarchiv.alojado.de