0

我目前有一个在 Open GL 中显示数据的 MFC SDI 程序。我正在尝试修改程序以使用拆分器窗口一次显示多个数据文件。换句话说,如果有四个拆分窗口,每个窗口都显示不同的文件。

到目前为止,我发现的所有示例都只在多个视图中显示一个文档,但我需要一次显示多个文档。

我开始得出结论,问题可能是因为这是一个 SDI 接口。我想我最初认为因为我使用的是拆分器窗口,所以它会同时支持多个文档。

所以我的第一个问题是,SDI 接口有问题吗?我一次只能使用一个文件吗?

如果答案是我需要使用 MDI,那么我可以使用拆分器在一个 MDI 视图中显示多个文档,还是必须打开多个 MDI 窗口?

谢谢

4

1 回答 1

0

我认为创建多个 MDI 子窗口应该是非常可接受的,因为它们功能齐全(它们可以最大化、关闭或平铺)。你也可以发布一个 Window->Tile 命令,只要你的应用程序进入空闲状态(yields);他们将完全占据客户区。您甚至可以更深入地为您的 CMDIChildWnd 派生类提供一些自定义,例如禁用关闭、移动或调整大小,或者具有更短或自定义或没有标题栏(您可能需要自定义非客户区消息处理)。还可以尝试使用 WS_EX_TOOLWINDOW 扩展窗口样式(但不确定这是否适用于 MDI 子窗口,您必须至少在 Windows 8/10 和 7 下对其进行测试)。

另一种解决方案可能是最初创建一个带有选项卡式视图的 MDI 应用程序,并自定义容纳选项卡的窗口,以便它们不是...实际上是选项卡,只是简单的非重叠子窗口(您必须自己在客户区安排它们)。如果视图窗口具有“固定”大小(设置大小或由文档数据确定,例如图像大小)并且不应(由用户)调整大小,则这可能是优选的。然后也应该自定义 MainFrame 窗口,以在显示所有视图所需的区域超出其客户区域时显示滚动条。虽然这是很多工作,因为您需要修改窗口类以提供 MFC 最初不支持的功能,并深入挖掘 MFC 源代码。

于 2017-02-01T18:05:22.693 回答