如何使用win32 api隐藏C中的mdi子窗口?

时间:2015-01-19 18:19:21

标签: c winapi

我正在更新在C中用win32编写的旧应用程序,并且要求是根据某些标志隐藏mdi子窗口。我尝试了几种方法但无济于事。

我尝试使用ShowWindow SW_HIDE,但这不起作用。窗口保持空白(并且不生成绘制消息)。使用SetWindowPos作为其中一个标志的SWP_HIDEWINDOW也会发生同样的情况。带有SetWindowLong的{​​{1}}是最糟糕的。它既不会使客户区空白,也不会生成绘制消息,因此当其他窗口移动时会涂抹它。

甚至可以这样做吗?如果是这样,怎么样?

PS:我确实在这里看到了同样要求的德尔福问题,但我不了解德尔福并且无法做出任何事情。

1 个答案:

答案 0 :(得分:1)

正如之前的讨论所解释的那样,例如:

How to hide a MDI Child form in Delphi

MDI根本不是为了允许隐藏子窗口而设计的,而且Delphi的VCL具有内部逻辑来防止用户代码试图犯这个错误。由于MDI的限制,试图规避该逻辑会导致不必要的副作用。

简而言之,隐藏"在MDI子窗口中,您必须销毁,然后重新创建,当您想要"显示"它再次。这是MDI支持的唯一可靠选项。