我尝试在WM_NCPAINT中设置背景颜色以更改标题栏的颜色,但不会以某种方式改变。问题是,SetBkColor和SetTextColor对WM_NCPAINT有效吗?
case WM_NCPAINT:
{
HDC hdc = ::GetWindowDC(hwnd);
::SetTextColor(hdc,RGB(0,0,0));
::SetBkColor(hdc,RGB(255,255,255));
ReleaseDC(hwnd,hdc);
return 0;
}
答案 0 :(得分:0)
这些功能有效,但你没有画任何东西。试试FillRect
或类似的东西。
答案 1 :(得分:0)
您应该注意的第一件事是这些功能可以失败。您应该始终检查返回值,如果仅记录它们失败的事实。
其次,我认为这些颜色只会影响给定上下文的未来TextOut
调用。标题栏可能不会使用这些调用。
至少,您应该尝试做一些会导致这种情况发生的事情,比如更改标题栏文字。
并不是说这是为了阻止你,我可能没有所有的事实,但我个人发现忽视我的愿望的程序非常烦人。如果我作为一个用户,希望我的程序有不同的彩色标题栏,我会自己设置它们,非常感谢你: - )
而且,除了另一个之外,如果你捕获了WM_NCPAINT消息,你要么自己完成整个事情(不建议),要么先调用基本版本,然后在顶部进行更改那个(并且,老实说,由于布局的变化很大,这也是不可取的。)