Probleme mit dem XP Style
-
Helft mir mal bitte. Entweder denke ich zu kompliziert, oder ich seh gerade die Hand vor Augen nicht.
Ich hab meinem Proggi, das vorher einwandfrei funktionierte, nen XP Style gegönnt.
Hab das so gemacht :
http://www.codeproject.com/w2k/xptheme.asp
Nun hab ich das Problem, das ich Schreibgeschützte Eingabefelder in schwarz angezeigt bekomme. Ich verwende farbliche Dialoge:
void CRegistrierung::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Code für die Behandlungsroutine für Nachrichten hier einfügen CRect rect; GetClientRect(&rect); dc.FillSolidRect(&rect,COLORREF(RGB(0,128,255))); // Kein Aufruf von CDialog::OnPaint() für Zeichnungsnachrichten }HBRUSH CRegistrierung::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Attribute des Gerätekontexts hier ändern if (nCtlColor == CTLCOLOR_STATIC) { pDC->SetBkColor(RGB(0,128,255)); return (HBRUSH)GetStockObject(NULL_BRUSH); } // TODO: Anderen Pinsel zurückgeben, falls Standard nicht verwendet werden soll return hbr; }
-
Das müsste kein Problem sein und sich über WM_CTLCOLOR regeln lassen. Nur wird bei einem schreibgeschützen Edit Control WM_CTLCOLORSTATIC versendet! nicht WM_CTLCOLOREDIT!
-
ähhhm hab ich doch. siehe source code ^^
-
Ruf mal den Default nur auf, wenn Du eben nicht readonly bist. Zumdem ist das returnieren eines NULL brushes auch nicht das was ein Control erwartet. Mit diesem Brush wird der Hintergrund gezeichnet. Du solltest also schon den entsprechenden Brush mit der Farbe anlegen und returnieren.
-
hmmm ich hab bei den eingabefenstern mal nen häkchen auf mehrzeilig gesetzt, und siehe da, es klappt. versteh denn sin dahinter zwar nicht. aber shit happens