如何使用 win32 api 在 C 中隐藏 mdi child windows?

How to hide mdi child windows in C using win32 api?

我正在用 C 更新一个用 win32 编写的旧应用程序,要求是根据一些标志隐藏 mdi 子 windows。试了好几种方法都没用。

我试过 ShowWindowSW_HIDE 但这不起作用。 window 只是留在那里空白(并且不生成绘制消息)。 SetWindowPosSWP_HIDEWINDOW 作为标志之一也会发生同样的情况。 SetWindowLong~WS_VISIBLE 是最糟糕的。它既不会清空客户区也不会生成绘画消息,因此当其他 windows 移动到它上面时会弄脏它。

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

PS:我确实在这里看到一个 Delphi 问题,要求相同,但我不知道 Delphi 并且无法弄清楚任何东西。

正如在之前的讨论中所解释的,例如这个:

How to hide a MDI Child form in Delphi

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

简而言之,要"hide"一个MDI子window,你必须销毁它,然后重新创建 当你想再次 "show" 时。这是 MDI 支持的唯一可靠选项。