如何让子窗口(a.k.a.拥有的窗口)的父窗口与winapi保持活动状态?

时间:2011-09-02 13:35:55

标签: c winapi parent

我正在使用winapi编写一个小型C应用程序。在那里,我有一个带有子窗口(工具箱)的窗口。我能够将它保留在这个窗口中等等,但我的问题是:如果子窗口聚焦,如何保持主窗口处于活动状态?

此时主窗口显示为灰色。

窗口由:

创建
hMainWindow = DialogBoxParam(.......);
hChildWindow = CreateDialogParam(..., hMainWindow, ...); 
ShowWindow (hChildWindow, SW_SHOW);

这里有两个窗口行为的小图片:

The behaviour of the windows

3 个答案:

答案 0 :(得分:3)

我发现只需将其创建为WS_CHILD并明确 NOT ,因为WS_POPUP解决了这个问题。它还将绝对窗口坐标转换为相对窗口坐标,这样我就不必再关心窗口位置了。通过移动父窗口。

//解决了

答案 1 :(得分:1)

将子窗口创建为无模式对话框而不是模态对话框。因此,请使用DialogBox

,而不是使用CreateDialog

答案 2 :(得分:1)

抱歉,这就是Windows的工作方式:一次只能有一个活动窗口。

如果将“查找和替换”作为工具窗口显示,您可以在Visual Studio中看到这一点,您将看到它被激活并且主VS窗口变为非活动状态。

尝试让它们同时处于活动状态可能会混淆用户和屏幕阅读器等辅助功能工具。