G
Hi Leute ich bins wieder!
Das Problem hat sich etwas vergrößert.
Ich habe isabeaus Vorschlag versucht. Er erhöht nicht die Anzahl der GDI Objekte, aber zeichnet auch nicht neu. Wenn ich es nach folgendem Weg umsetze werden sogar GDI Objekte erzeugt, wenn ich ein Fenster über diese Editboxen ziehe. Ich weis, dass es an meinem Code liegt, aber habe keine Ahnung oder keine Idee, wie man das anders machen könnte.
HBRUSH CFarbsensorDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(pWnd->GetDlgCtrlID() == IDC_EDIT_COLOR)
{
hbr = CreateSolidBrush(RGB(rot,gruen,blau));
pDC->SetBkMode(TRANSPARENT);
return hbr;
}
if(pWnd->GetDlgCtrlID() == IDC_ROT)
{
hbr = CreateSolidBrush(RGB(255,0,0));
pDC->SetBkMode(TRANSPARENT);
return hbr;
}
if(pWnd->GetDlgCtrlID() == IDC_GRUEN)
{
hbr = CreateSolidBrush(RGB(0,255,0));
pDC->SetBkMode(TRANSPARENT);
return hbr;
}
if(pWnd->GetDlgCtrlID() == IDC_BLAU)
{
hbr = CreateSolidBrush(RGB(0,0,255));
pDC->SetBkMode(TRANSPARENT);
return hbr;
}
else
return hbr;
}
die IDC_COLOR (dieses Editfeld) wird folgendermaßen mit Farbe belebt.
Beispiel:
CEdit * edit = (CEdit *)GetDlgItem(IDC_COLOR)
rot = 200;
gruen = 100;
blau = 150;
edit->RedrawWindow(0,0,RDW_INVALIDATE);
Für Vorschläge oder weitere Fehlererkenntnisse wäre ich dankbar
Gruß Ranger