2016-06-24 9 views
3

Ich bin mit der Einstellung der Hintergrundfarbe eines CStatic mit WTL ein Problem mit (ich vermute ich das gleiche Problem mit MFC haben würde)Hintergrundfarbe der CStatic Ausgabe

Ich habe ein Fenster mit einem schwarzen Hintergrund, der eine Kontrolle hat, die von CStatic darauf ableitet. Ich stelle die Farben über die Nachricht WM_CTLCOLORSTATIC ein. Ich arbeite grundsätzlich, aber der Teil der Kontrolle, der Text hat, erscheint weiß. Hier

ist der Code in dem Rückruf:

LRESULT CReportResults::OnCtrColorStatic(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) 
{ 
    if ((HWND)lParam == m_wndLoadingLabel.m_hWnd) 
    { 
     HDC  hDC = (HDC)wParam; 

     SetBkColor(hDC, APP_COLOR_BACKGROUND); 
     SetTextColor(hDC, APP_COLOR_TEXT); 
    } 
    return 0; 
} 

Und hier ist das, was es am Ende aussehen wie auf dem Bildschirm. Das Steuerelement selbst ist größer als der darin enthaltene Text, aber ich bin mir nicht sicher, wie ich den Rest des Steuerelements dazu bringen soll, mit einem schwarzen Hintergrund zu zeichnen. Es scheint, dass die Einstellung der Hintergrundfarbe nur auf Schwarz den Bereich betrifft, in dem der Text angezeigt wird. Irgendwelche Ideen, was ich falsch machen könnte?

This is what it looks like

Antwort

5

mein Fehler gefunden. Ich habe im OnCtrColorStatic-Handler null zurückgegeben. Ich wechselte zu einem Pinsel, der für die Hintergrundfarbe der Anwendungen verwendet wird und alles funktioniert jetzt gut.

LRESULT CReportResults::OnCtrColorStatic(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) 
{ 
    if ((HWND)lParam == m_wndLoadingLabel.m_hWnd) 
    { 
     HDC  hDC = (HDC)wParam; 

     SetBkColor(hDC, APP_COLOR_BACKGROUND); 
     SetTextColor(hDC, APP_COLOR_TEXT); 
    } 
    return (LRESULT)g_app.background_brush; 
} 
+2

Sie sollten * nie * in einem CtrlColor-Handler null zurückgeben. Wenn Sie keinen benutzerdefinierten Pinsel zurückgeben, sollten Sie die Standardfensterprozedur aufrufen und den zurückgegebenen Wert zurückgeben. –

+0

Gut gemacht, um es zu lösen. –