Windows 活动窗口-如何防止标题栏变蓝/变灰

Windows 活动窗口-如何防止标题栏变蓝/变灰,windows,winapi,focus,Windows,Winapi,Focus,我在对话框中嵌入了一个无模式属性表。我没有为控件使用新的窗口类,而是将属性表作为对话框中容器的子级。除了一件事,一切都很好。当用户单击属性页时,对话框的标题栏从蓝色(活动)变为灰色(非活动);当属性页处于活动状态时,我希望对话框的标题栏保持蓝色,因为属性页对用户来说似乎是对话框的一部分。属性页没有标题栏 c++win32api无mfc 问题: 1) 当属性页处于活动状态时,是否有办法使对话框标题栏保持蓝色 2) 如果我在属性表中使用了一个新的窗口类,并在对话框中添加了一个使用该类的控件,效果会有

我在对话框中嵌入了一个无模式属性表。我没有为控件使用新的窗口类,而是将属性表作为对话框中容器的子级。除了一件事,一切都很好。当用户单击属性页时,对话框的标题栏从蓝色(活动)变为灰色(非活动);当属性页处于活动状态时,我希望对话框的标题栏保持蓝色,因为属性页对用户来说似乎是对话框的一部分。属性页没有标题栏

c++win32api无mfc

问题:

1) 当属性页处于活动状态时,是否有办法使对话框标题栏保持蓝色


2) 如果我在属性表中使用了一个新的窗口类,并在对话框中添加了一个使用该类的控件,效果会有所不同吗?

非常感谢Sertac Akyus的建议

每当属性页处于活动状态时,该属性页的一个页面似乎处于活动状态,即,我无法使属性页的主对话框处于活动状态。因此,您可以使用页面对话框中的WM_ACTIVATE消息处理程序,在页面激活时使用WM_ACTIVATE TRUE将主对话框的标题栏设置为蓝色。当页面停用时,还需要使用WMNCACTIVATE FALSE将主对话框的标题栏设置为灰色,除非在主对话框中激活窗口

这是我使用的代码

    case WM_ACTIVATE:
        switch LOWORD(wParam)
        {
        case WA_ACTIVE:                 // 1
        case WA_CLICKACTIVE:            // 2
            SendMessage (hwndContainer,WM_NCACTIVATE,TRUE,NULL);
            return true;
        case WA_INACTIVE:
            if ((HWND) lParam != hwndContainer)
            {
                SendMessage (hwndContainer,WM_NCACTIVATE,FALSE,NULL);
                return true;
            };
        }
        break;
hwndContainer是包含属性表的对话框的HWND


如果你想在对话框演示中复制我的小财产清单,请给我发一封电子邮件。迈克。dorl@gmail.com

您可以发送一个带有wParam True的“WM\u NCACTIVATE”对话框,但我认为当应用程序失去/获得焦点时,它会失去协调。@Sertac Akyus:谢谢!虽然我不能让它变得完美,但至少我可以让它变得更好。通过执行WM_NCACTIVATE TRUE,当对话框处于停用状态时,有利于属性表,当激活时,它工作得相当好。其余不起作用的情况是,另一个窗口被激活,用户单击鼠标返回属性页;我当然不能破坏主属性表对话框。如果属性表中有其他类似的回调,那就太好了。不客气!我想知道当应用程序停用时,如果您禁用属性页是否会有所帮助。也许这会使事情复杂化。虽然我不能访问属性页的主对话框,但我可以控制组成属性页的对话框。我可以通过添加从他们的WM_激活处理程序发送WM_NCACTIVATE消息来修复上一个问题。