MFC-Dialog-Farbe (ja, ich war bei den FAQs)
-
Bezugnehmend auf die Seite
Funktioniert alles wunderbar, nur werden andere Dialoge oder Meldungsfenster nicht in der entsprechenden Farb angezeigt.
Ich hab die letzte Methode der oben genannte Seite genommen, hab also in meine InitInstance geschrieben:BOOL CLatinumApp::InitInstance() { // Standardinitialisierung #ifdef _AFXDLL Enable3dControls(); // Diese Funktion bei Verwendung von MFC in gemeinsam genutzten DLLs aufrufen #else Enable3dControlsStatic(); // Diese Funktion bei statischen MFC-Anbindungen aufrufen #endif CLatinumDlg dlg; m_pMainWnd = &dlg; SetDialogBkColor(RGB(255,255,255), RGB(0,70,213)); /// <---DA int nResponse = dlg.DoModal(); if (nResponse == IDOK) { } else if (nResponse == IDCANCEL) { } // Da das Dialogfeld geschlossen wurde, FALSE zurückliefern, so dass wir die // Anwendung verlassen, anstatt das Nachrichtensystem der Anwendung zu starten. return FALSE; }
Weiß jemand Rat?
MP
-
Hi,
geh folgend vor:
- In der Klassenansicht auf die Eigenschaften der Dialogklasse klicken:
Dort auf Nachrichten und bei WM_CTLCOLOR trägst Du z.B. OnCtlColor ein. Der
Klassenassistent fügt nun automatisch eine Methode mit zugehöriger Nachrich-
tenverteilung ein.- OnCtlColor sollte so aussehen:
HBRUSH CDlgColorTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); hbr = m_brush; // diese Zeile einfügen return hbr; }
- Das fehlende Attribut m_brush definierst Du in der Headerdatei als
CBrush m_brush;
- Die Hintergrundfarbe definierst Du im Konstruktor z.B.
m_brush.CreateSolidBrush(RGB(0,70,213));