2017-08-11 4 views
1

Ich möchte die Titelfarbe meiner MFC-Anwendung ändern. Ich habe OnNcPaint() -Methode verwendet. Die Änderungen werden jedoch im Clientbereich statt in der Titelleiste ausgeführt.Titelfarbe der MFC-Anwendung ändern

void CTitleBarColorView::OnNcPaint() 
{ 
CRect rc; 

GetWindowRect(&rc); 
CWindowDC dc(this); 

rc.top = GetSystemMetrics(SM_CYFRAME); 
rc.right = rc.Width() - 2; 
rc.left = GetSystemMetrics(SM_CXFRAME); 
rc.bottom =GetSystemMetrics(SM_CYCAPTION); 



for (int i = 2; i < rc.Width() - 2; i++) 
{ 
    double color; 
    CPen* oldPen; 
    color = 200 * (double)i; 
    CPen pen(PS_SOLID, 1, RGB(0, 0, (int)color)); 
    dc.MoveTo(i, 1); 
    oldPen = dc.SelectObject(&pen); 
    dc.LineTo(i, rc.bottom-1); 
    dc.SelectObject(oldPen); 

} 

}

Antwort

3

Kein Zweifel, Sie könnten dies tun, aber es ist fast sicher eine wirklich schlechte Idee, dies zu tun.

UI funktioniert gut, wenn es vorhersehbar und konsistent ist! Die Änderungen, die Sie versuchen, machen eine UI nicht vorhersehbar und nicht konsistent!

Wie gehen Sie mit verschiedenen OS-Versionen um, thematisierte/undthemed, zukünftige Versionen des Betriebssystems, die sich in der Art und Weise, wie sie Nicht-Client-Regionen malen, stark unterscheiden?

Mit Google finden Sie Möglichkeiten, wie here

zu tun
Verwandte Themen