【发布时间】:2011-11-09 04:44:44
【问题描述】:
我正在使用 winapi 编写一个小型 C 应用程序。我有一个带有子窗口(工具箱)的窗口。我可以将其保留在此窗口中等等,但我的问题是:如果子窗口获得焦点,如何保持主窗口处于活动状态?
此时主窗口变灰。
窗口由以下人员创建:
hMainWindow = DialogBoxParam(.......);
hChildWindow = CreateDialogParam(..., hMainWindow, ...);
ShowWindow (hChildWindow, SW_SHOW);
这里是两个窗口行为的小图:
【问题讨论】:
-
AFAIK 活动窗口是有焦点的窗口,所以如果孩子有焦点,那么主窗口也不能有焦点。
-
也许不是这样,但我知道其他应用程序,比如 - 你可能知道 - Paint.NET 是可能的。
-
您可能想要定义您所说的“活跃”是什么意思?你在使用 MDI 窗口吗?
-
我没有使用 MDI 窗口。 (不知道如何在 C 中做到这一点)并且“活动”= 不像非活动窗口那样灰显。
-
如果看到 Paint.NET 执行此操作。讨厌的黑客,它过滤 Windows 消息以说服窗口它仍然处于活动状态,因此它不会重新绘制标题栏。我不记得确切的细节足以在这里重现它。源代码不再可用,也许您可以在某处挖掘旧副本。考虑一个无标题的工具窗口,而不是在客户区域中绘制一个模拟的标题栏。