从级联中排除某些 MDI 子窗口



我编写了一个包含许多子窗体的 MDI 应用程序,每个子窗体都不同。假设用户创建了三个子窗体:第一个窗体的左上角位于屏幕坐标 0,0;第二个表格已拖动到屏幕右侧(坐标100、300(,第三个表格出现在坐标20,20处。如果我使用主窗体的级联命令,则第二个窗体将移动到 10,10。

我希望第二种形式

保持在原地,并使第三种形式移动到 10、10(即级联顺序的第二位(。有没有办法从主窗体的"级联"命令中排除特定的 MDI 子窗体?

无法

影响通过向 MDI 容器窗口发送WM_MDICASCADE消息来实现的 Cascade 方法的行为,ClientHandle

现在,查看WM_MDICASCADE它有一个选项,可以从级联中跳过残疾的MDI子级。因此,您可以禁用某些子窗口,自己发送WM_MDICASCADE消息,然后重新启用子窗口。我没有尝试这样做,但在我看来它很可能会奏效。

另一个选项是实现自己的 MDI 子定位方法。这实际上相对容易做到。我建议您查阅 Wine 项目的源代码以了解如何执行此操作。密钥文件mdi.cuser32 DLL 中。

最新更新