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?