Static Text Grösse ändern,unsichtbar,sichtbar machen?

Zeller

Mitglied
Hallöchen
Noch ein Problemchen.
Ich krieg es nicht hin in MFC mehreren Static Texten verschiedene Schriftgrössen zuzuordnen und diese Texte zu laufzeit sichtbar-unsichtbar zu setzen.
Hab schon mal bei codeguru und codeproject was gefunden, hat aber nicht klappen wollen.:confused:

Danke für eure Hilfe
 
moin


Mit SendMessage kannst du WindowsMessages an ein Fenster schicken, in C++ (MFC) ist ein Element (Static Text, Button, Edit Feld) genau das selbe wie ein Fenster.

Text setzen, lesen:
WM_SETTEXT, WM_GETTEXT

Zeigen, nich zeigen:
WM_SHOW, WM_HIDE

und und und. Kannst ja mal in der MSDN gucken was es da so alles gibt.


mfg
umbrasaxum
 
Vergib an deine Static-Controls ein eindeutige ID (also nicht IDC_STATIC, wie defaultmäßig verwendet) und weise mit dem Klassenassistenten eine Member-Variable, z.B. "m_staticTextXY", zu. Außerdem benötigst du noch eine Membervariable für den neuen Font, z.b: "CFont m_fontTextXY;"

Die Textgröße kannst du dann wie folgt ändern:

Code:
// Aktuellen Font holen
CFont   *pFont = m_staticTextXY.GetFont();
LOGFONT lf;
pFont->GetLogFont(&lf);

// Schriftgröße ändern
lf.lfHeight += 50;

// Neuen Font erzeugen und zuweisen
m_fontTextXY.CreateFontIndirect(&lf);
m_staticTextXY.SetFont(&m_fontTextXY);

Sichbar/unsichtbar funktioniert so:

Code:
m_staticTextXY.ShowWindow(SW_SHOW);  // Sichtbar
m_staticTextXY.ShowWindow(SW_HIDE);  // Unsichtbar
 
Hat soweit geklappt! danke!

Nun sind die texte noch Grau hinterlegt.
Hätte es aber lieber weiss da ich ein bild im Hintergrund habe.
Mit Transparent klappt es nicht.

Jemand ne Idee
 
Zum Setzen der Hintergrundfarbe musst du WM_CTLCOLOR verarbeiten:

Code:
// im Header
CBrush   m_brush    // Brush für Hintergrundfarbe
COLORREF m_crWhite  // Farbwert

// im Konstruktor
m_crWhite = RGB(255,255,255); // weiss
m_brush.CreateSolidBrush(m_crWhite); 

// WM_CTLCOLOR verarbeiten
HBRUSH CMyDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    switch( pWnd->GetDlgCtrlID() )
    {
        case IDC_MYSTATIC:
          pDC->SetBkColor(m_crWhite);
          return (HBRUSH)m_brush;

        // ggf. weitere Zweige

    }

    return CDialog::OnCtlColor(pDC,pWnd,nCtlColor);
}
 
Zurück