我正在黑色背景上以白色文本更新Win32应用程序的GUI。这对我的内容来说很简单。但是我怎样才能改变我儿童窗户的颜色(标题栏,滚动条等)。我知道有WM_CTLCOLORDLG
来设置对话框的颜色。我也知道有WM_NCPAINT
,但这会留下所有的绘画(即Scrollbars)给我。我想要的只是设置我选择的颜色。
答案 0 :(得分:1)
您可以使用SetSysColors()更改窗口标题,边框等的颜色(请参阅http://msdn.microsoft.com/en-us/library/ms724940(VS.85).aspx)。然而,这将改变所有窗户的颜色,而不仅仅是你的颜色,所以它至少是一件不友好的事情。
一种选择是使用SetSysColors()在应用程序具有焦点时更改活动窗口标题颜色,并在失去焦点时将其重置为默认值。但我会说这很笨拙并且不符合良好实践(假设您的应用程序崩溃了?可能会有一些闪烁)。
WM_NCPAINT就是这样,你可以做这样的事情。这有点痛苦,但也许这是为了阻止你创建非标准窗口...; - )
答案 1 :(得分:1)
Hook GetSysColor()(使用像Microsoft Detours这样的东西)