Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Farbe Hintergrund beim anzeigen eines Textfelds

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
04.02.2003, 14:17 Uhr
Tom



Hallo Leuts

Habe mal wieder ein Problem.

Ich möchte gerne ein Textfeld wärend des erstellens (zeichnens)
einfärben. Also, net die Textfarbe oder die BackGround Farbe sonder richtig das Textfeld.
mit
C++:
HBRUSH Page1::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor);

    if (pWnd->GetDlgCtrlID()==IDC_EINGABE)
    {    
        pDC->SetTextColor(RGB(255,255,0));
        pDC->SetBkColor(RGB(255,0,0));
    }    
return hbr;
}

klapt das schon ganz gut. Aber ebend net das ganze Textfeld.
Kann mir da wer bitte weiter helfen?

THX
Tom
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.02.2003, 14:32 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Füg noch in der If folgendes ein:

C++:
return((HBRUSH)bgBrush.GetSafeHandle());



mfg mike
PS: Der volle Thread (wegen den Definitionen):
www.fun-soft.de//index.php?file=//forum/showtopic.php?threadid=631
--

Dieser Post wurde am 04.02.2003 um 14:34 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
04.02.2003, 14:34 Uhr
Tom



Hi

Habe ich in einem anderen Post gesehen, klappt ohne aber gut und mit machts fehler.(Macht keine Fehler, get blos net)
Habe auch den Sinn net ganz verstanden.

THX
Tom

Dieser Post wurde am 04.02.2003 um 14:34 Uhr von Tom editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
04.02.2003, 14:37 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Ich denk mal, dass du einfach eine andere CBrush an die Funktion zurückgibst und in bgBrush müsste für die Hintergrundfarbe stehen.

mfg mike
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
04.02.2003, 14:49 Uhr
Tom



Hi

Also meine Funktion sieht aus wie da oben.
Ich weiss net was du meinst mit

Zitat:
eine andere CBrush an die Funktion zurückgibst


THX
Tom
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
04.02.2003, 14:56 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Habs nur schnell ausprobiert

C++:
HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    if (pWnd->GetDlgCtrlID()==IDC_EDIT1)
    {    
        pDC->SetTextColor(RGB(255,255,0));
        pDC->SetBkColor(RGB(255,0,0));
    m_Brush.DeleteObject();
    m_Brush.CreateSolidBrush(RGB(111,111,111));
    return m_Brush;
    }    
return hbr;
}


m_Brush ist eine CBrush Membervariable

mfg mike
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
04.02.2003, 14:59 Uhr
Tom



Hi

Suppi klapt gut. Verstehe es zwar noch net ganz warum z.B.: .DeleteObject();
aber, kriege ich schon raus. Danke schön.

THX
Tom
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
04.02.2003, 15:16 Uhr
Tom



HI

Nur noch eine Frage, warum kann ich die If anweisung net mit OR verbinden???
[cpp]HBRUSH CProjekt::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Attribute des Gerätekontexts hier ändern
if (pWnd->GetDlgCtrlID()==IDC_FUSSZEILE || IDC_KOPFZEILE||IDC_TITEL||IDC_PROJEKT)
{
pDC->SetTextColor(RGB(255,255,0));
pDC->SetBkColor(RGB(255,255,0));
m_brush.DeleteObject();
m_brush.CreateSolidBrush(RGB(255,255,0));

return m_brush;
}
return hbr;
}

THX
Tom
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
04.02.2003, 19:13 Uhr
Volle



Hi Tom,

das geht schon... Aber die or- Verknüpfung kann nur sinnvolle Ausdrücke unterscheiden.

Also


C++:
if ((a==1)||(a==2))



Aber das wird in deinem Fall sicher unübersichtlich. Warum benutzt du kein switch- Statement?


C++:
    switch(pWnd->GetDlgCtrlID())
    {
        case IDC_FUSSZEILE:
        case IDC_KOPFZEILE:
        case IDC_TITEL:
        case IDC_PROJEKT:
        {
            pDC->SetTextColor(RGB(255,255,0));
            pDC->SetBkColor(RGB(255,255,0));
            m_brush.DeleteObject();
            m_brush.CreateSolidBrush(RGB(255,255,0));
    
            return m_brush;
        }
        break;

        default:
        {
            return hbr;
        }
    }



Das sieht besser aus und ist "ausbaufähig", finde ich...

Grüße, Volle.

Dieser Post wurde am 04.02.2003 um 19:15 Uhr von Volle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
05.02.2003, 14:00 Uhr
Tom



Hi

Vielen Dank für die Info.
Habe es mit einer Reihe If Anweisungen gemacht.
Aber die Switch ist natürlich besserer Programierstil.

THX
Tom
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: