我正在更新在C中用win32编写的旧应用程序,并且要求是根据某些标志隐藏mdi子窗口。我尝试了几种方法但无济于事。
我尝试使用ShowWindow
SW_HIDE
,但这不起作用。窗口保持空白(并且不生成绘制消息)。使用SetWindowPos
作为其中一个标志的SWP_HIDEWINDOW
也会发生同样的情况。带有SetWindowLong
的{{1}}是最糟糕的。它既不会使客户区空白,也不会生成绘制消息,因此当其他窗口移动时会涂抹它。
甚至可以这样做吗?如果是这样,怎么样?
PS:我确实在这里看到了同样要求的德尔福问题,但我不了解德尔福并且无法做出任何事情。答案 0 :(得分:1)
正如之前的讨论所解释的那样,例如:
How to hide a MDI Child form in Delphi
MDI根本不是为了允许隐藏子窗口而设计的,而且Delphi的VCL具有内部逻辑来防止用户代码试图犯这个错误。由于MDI的限制,试图规避该逻辑会导致不必要的副作用。
简而言之,隐藏"在MDI子窗口中,您必须销毁,然后重新创建,当您想要"显示"它再次。这是MDI支持的唯一可靠选项。