2017-08-11 50 views
1

我想更改我的mfc應用程序的標題顏色。我已經使用了OnNcPaint()方法。但是這些更改是在客戶區而不是標題欄上完成的。更改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); 

} 

}

回答

3

毫無疑問,你可以做到這一點,但它幾乎肯定一個非常糟糕的主意,這樣做。

當UI可預測且一致時,UI運行良好! 您嘗試進行的更改使UI不可預測且不一致!

你將如何處理操作系統的不同操作系統版本,主題/未知,將來的操作系統版本可能與繪製非客戶區域的方式完全不同?

使用谷歌,你可以找到像here