我目前有一个MFC SDI程序,它在Open GL中显示数据。我试图修改程序,使用拆分器窗口一次显示多个数据文件。换句话说,如果有四个分割窗口,每个窗口都显示不同的文件。
到目前为止,我发现的所有示例只在多个视图中显示一个文档,但我需要一次显示多个文档。
我开始得出结论,问题可能是因为这是一个SDI接口。我想我最初认为,因为我使用分割窗口,它会同时支持多个文件。
所以我的第一个问题是,SDI接口是问题吗?我一次只能限制一个文件吗?
如果答案是我需要使用MDI,那么我可以使用分割器在一个MDI视图中显示多个文档,还是必须打开多个MDI窗口?
谢谢
答案 0 :(得分:0)
我认为创建多个MDI子窗口应该是非常可接受的,因为它们功能齐全(可以最大化,关闭或平铺)。一旦您的应用进入空闲状态(收益),您也可以发布Window-> Tile命令;他们将完全占据客户区。您甚至可以更深入地为CMDIChildWnd派生类提供一些自定义,例如禁用关闭,移动或调整大小,或者使用更短或自定义或无标题栏(您可能需要自定义非客户区消息处理)。还尝试使用WS_EX_TOOLWINDOW扩展窗口样式(不确定这是否适用于MDI子窗口,并且您必须至少在Windows 8/10和7下测试它。)
另一种解决方案可能是最初创建一个带有选项卡式视图的MDI应用程序,并自定义容纳选项卡的窗口,使它们不是......实际上是标签,只是简单的非重叠子窗口(您必须将它们排列在客户区自己)。如果视图wnidows是"固定"这可能是更可取的。大小(设置大小或由文档数据确定,例如图像大小),并且不应该(由用户)调整大小。然后,也应该自定义MainFrame窗口,如果显示所有视图所需的区域超出其客户区域,则显示滚动条。这是很多工作,因为您需要修改窗口类,以便提供MFC最初不打算支持的功能,并深入挖掘MFC源。