Hintergrundfarbe Dialog

lindin

Erfahrenes Mitglied
Hallo,
wenn ich mit einem Ressourcen-Editor einen Dialog erstellt habe, kann ich dort dann auch die Hintergrundfarbe ändern?
Oder muß ich das mit dem Klassenassistent machen, mit dem ich nicht klar komme...?
Ich dachte ich könnte dem Fenster einfach ne Message schicken oder so mit WM_CTLCOLOR oder so?
 
Du musst dir einen Handler für WM_ERASEBKGND einbauen lassen. Der wird aufgerufen, sobald der Hintergrund gemalt werden muss. An dieser Stelle kannst du den Hintergrund selbst gestalten. Beispiel:
Code:
BOOL CMyDlg::OnEraseBkgnd(CDC* pDC) 
{
  CRect rect;
  GetClientRect( rect );
  pDC->FillSolidRect( &rect, 0 );
  return TRUE;
  // return CDialog::OnEraseBkgnd(pDC); raus damit!
}
 
Dann bräuchte ich aber eine Dialogklasse, die ich nicht habe, von der ich ableiten könnte!
Habe aber nur eine Dialogprozedur, und eine Funktion, die mit CreateDialog und MAKEINTRESOURCE den Dialog aus einer Ressource kreiert!

Klassen habe ich eigentlich gar nicht!

Geht das denn nicht mit einer SendMessage-Nachricht?
 
Also habe jetzt mal versucht, das folgendermaßen zu lösen:
Code:
SendMessage(hwnd,WM_ERASEBKGND,IDC_DISPLAY,NULL);

So schicke ich die Message!

Code:
HDC Back;
case WM_ERASEBKGND:
		 
       Back=HDC(wParam);
       if(wParam==IDC_DISPLAY) SetBkColor(Back, RGB(0,128,0));

return TRUE;

So fange ich sie ab!
Das mache ich für jede ID im Dialog!

Aber es werden nur die FArben für den 'Rand' geändert, also für das Hauptfeld des Dialoges, und zwar in der Art, daß als Farbe das aktuelle Fenster gewählt wird, was hinter der Applikation ist!
KAnn man schlecht erklären, also wenn ich zum Beispile gerade einen Explorer aufhabe wird dieser 'kopiert' und dann als Hintergrund genommen!
 
Was hast du eigentlich vor? Ich komme da nicht so ganz mit. Willst du eventuell ein nicht-rechteckiges Fenster erzeugen oder so? Das könnte man besser über Regions erledigen. A
 
Nein, ich finde einfach nur die Frabe von dem Dialogfenster welches ich mit dem Resourcen-Editor esrtell habe doof!
Ist ja alles einfach nur grau! Ich dachte, man könnte einfach die Farbe änder, aber das geht anscheinend doch wohl nicht so einfach!
 

Neue Beiträge

Zurück