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



## Zeller (17. August 2005)

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. 

Danke für eure Hilfe


----------



## Tobias K. (17. August 2005)

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


----------



## MCoder (18. August 2005)

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:


```
// 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:


```
m_staticTextXY.ShowWindow(SW_SHOW);  // Sichtbar
m_staticTextXY.ShowWindow(SW_HIDE);  // Unsichtbar
```


----------



## Zeller (19. August 2005)

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


----------



## MCoder (20. August 2005)

Zum Setzen der Hintergrundfarbe musst du WM_CTLCOLOR verarbeiten:


```
// 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);
}
```


----------

