我在对话框中嵌入了一个无模式属性表。我没有为控件使用新的窗口类,但确实使属性表成为对话框中容器的子级。除了一件事,一切都很好。当用户单击属性页时,对话框的标题栏从蓝色(活动)变为灰色(不活动);当属性页处于活动状态时,我希望对话框的标题栏保持蓝色,因为属性页对用户来说是对话框的一部分。属性页没有标题栏。
C++Win32 API无MFC
问题:
1)当属性表处于活动状态时,是否有方法使对话框标题栏保持蓝色?
2)如果我为属性表使用了一个新的窗口类,并将使用该类的控件添加到对话框中,它的工作方式是否会有所不同?

最佳答案

非常感谢塞尔塔克·阿克尤斯的建议。
每当工作表处于活动状态时,似乎其中一个属性工作表页处于活动状态,即我无法使属性工作表的主对话框处于活动状态。因此,您可以使用页面对话框中的wm_activate消息处理程序,在页面变为活动时使用wm_ncactivate 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。
如果你想在对话演示中得到我的小财产清单的副本,请给我发一封电子邮件。[email protected]

关于windows - 主动窗口-如何防止标题栏呈蓝色/灰色变化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6678358/

10-14 03:33