2017-08-11 3 views
1

Je veux changer la couleur du titre de mon application mfc. J'ai utilisé la méthode OnNcPaint(). Mais les modifications sont effectuées sur la zone client au lieu de la barre de titre.Changer la couleur du titre de l'application mfc

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); 

} 

}

Répondre

3

Sans doute, vous pouvez le faire, mais il est presque sûrement une très mauvaise idée de le faire.

L'interface utilisateur fonctionne bien lorsqu'elle est prévisible et cohérente! Les modifications que vous essayez de rendre une interface utilisateur non prévisible et non cohérente! Comment traitera-t-on les différentes versions du système d'exploitation, avec ou sans thème, les futures versions du système d'exploitation qui peuvent être très différentes dans la façon dont ils peignent les régions non-client?

Utilisation de Google vous trouver des moyens de le faire comme here