结合多个Windows

时间:2014-04-01 14:49:58

标签: c++ winapi sfml

我们如何将多个Windows客户端区域合二为一。

我有2个不同的窗口,我希望将它合并为一个。

第一个窗口是在open cv中创建的,第二个窗口是所有的界面选项 (第二个窗口是用sfml设计的)

第三个窗口(我希望其他窗口可以合并)是在win32 api中设计的

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以合并它们的唯一方法是拥有一个顶级父窗口,并具有承载OpenCV和SFML内容的单独子窗口。

但是,我怀疑OpenCV(可能还有SFML)需要一个顶级窗口;你必须做实验才能确定。

快速搜索OpenCV documentation表明没有标准的OpenCV函数需要(提供的)HWND,所以你必须深入挖掘OpenCV内部(最有可能namedWindow)并创建您自己的函数,它从给定的HWND父级创建子窗口。

SFML似乎有相同的限制;在这种情况下,由于SFML似乎基于OpenGL,因此可能根本不可能,因为OpenGL不喜欢在子窗口中。

另一种方法是将OpenCV和SFML窗口上的窗口样式设置为无边框,并在Win32窗口移动时让Win32窗口移动/调整其他窗口的大小。这需要大量注意细节以尽量减少“撕裂”,但可以做到。 (例如,Windows Media Player为其控制窗口执行此操作。)