Visual c++ 更改mfc应用程序的标题栏颜色

Visual c++ 更改mfc应用程序的标题栏颜色,visual-c++,mfc,Visual C++,Mfc,我想更改mfc应用程序的标题颜色。我使用了OnNcPaint()方法,但更改是在客户端区域而不是标题栏上完成的 void CTitleBarColorView::OnNcPaint() { CRect rc; GetWindowRect(&rc); CWindowDC dc(this); rc.top = GetSystemMetrics(SM_CYFRAME); rc.right = rc.Width() - 2; rc.left = GetSystemMetrics(

我想更改mfc应用程序的标题颜色。我使用了OnNcPaint()方法,但更改是在客户端区域而不是标题栏上完成的

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

}
void-CTitleBarColorView::OnNcPaint()
{
正确的rc;
GetWindowRect(&rc);
CWindowDC dc(本);
rc.top=GetSystemMetrics(SM_CYFRAME);
rc.right=rc.Width()-2;
rc.left=GetSystemMetrics(SM_CXFRAME);
rc.bottom=GetSystemMetrics(SM_CYCAPTION);
对于(int i=2;i

}毫无疑问,你可以做到这一点,但这样做几乎肯定是一个非常糟糕的主意

UI在可预测和一致的情况下工作良好! 您正在尝试的更改使UI不可预测且不一致

您将如何处理不同的操作系统版本,主题化/非主题化的,操作系统的未来版本,这些版本在绘制非客户端区域的方式上可能会有很大的不同

使用谷歌,你可以找到自己喜欢的方法