Forum: PC-Programmierung CEdit im View MFC kein Hintergrund


von A. R. (redegle)


Lesenswert?

Hallo,

ich würde gerne in der MFC ein Objekt der Klasse CEdit in einem VIEW 
verwenden. Ziel ist es jedoch, dass das Objekt nur den Text schreibt und 
den Hintergrund des ihm übergebenen Rechtecks nicht überzeichnet.

Also wenn ich im VIEW einen Strich über das Objekt der Klasse CEdit 
zeichne soll überall dort, wo kein Text ist ein Strich zu sehen sein. 
Wenn das nicht verständlich sein solle kann ich auf wunsch noch ein Bild 
hochladen.

Um dies zu ermöglichen habe ich von der Klasse CEdit eine neue Klasse 
CEdit_Transparent abgeleitet. In diese habe ich wie auf diversen 
Homepages zu lesen ist die Funktion CtlColor() überschrieben jedoch ohne 
Erfolg.
1
HBRUSH CEdit_Transparent::CtlColor(CDC* pDC, UINT /*nCtlColor*/)
2
{
3
   CBrush m_Brush;
4
   m_Brush.CreateStockObject(HOLLOW_BRUSH);
5
   pDC->SetBkMode(TRANSPARENT);
6
   return m_Brush;
7
}

In der VIEW-Klasse wird ein Pointer auf ein Objekt der Klasse 
CEdit_Transparent angelegt. Im Konstruktor wird ein Objekt dynamsich mit 
new erstellt.

Im OnDraw steht momentan folgender Code:
1
pEdit1->DestroyWindow();
2
pEdit1->Create( WS_VISIBLE,CRect(70, 180, 100, 200), this, 14564);
3
pEdit1->SetCueBanner(_T("FU"));

Leider erscheint nun der Hintergrund Schwarz mit grauer Schrift "FU" und 
auch erst, sobald ich die Größe des Fenster verändere. Beim "ersten" 
zeichnen wechselt das Fenster vom CEdit im Sekundentakt zwischen 
Hintergrund des VIEWs und weiß.

Jemand eine Idee wie man das Problem lösen kann?

von A. R. (redegle)


Lesenswert?

Dass muss schoneinmal
m_Brush.CreateSolidBrush(HOLLOW_BRUSH);
anstatt von
m_Brush.CreateStockObject(HOLLOW_BRUSH);

heißen.
Trotzdem ist der Hintergrund vom CEdit Fenster immer weiß, auch wenn ich 
über die Koordinaten einen Strich zeichne.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.