SetWindowPos()不移动或调整窗口大小

我有一个GUI应用程序,它使用GStreamer从捕捉卡捕捉video,然后播放video。 audio和videostream发送到GStreamer,GStreamer自动打开自己的窗口播放video。 一旦video窗口打开,我需要去video窗口,并删除边框,并设置窗口的大小和位置,使我的GUI窗口的父窗口,以便它将“锚定”我的GUI窗口。

因为我知道video窗口的名称,所以我使用FindWindow()来获取窗口的HWND句柄。 然后,我将该HWND传递给SetWindowPos() ,如下所示SetWindowPos(VideoWindow, GUIWindow, GUIWindowLeft, GUIWindowTop, 640, 360, SWP_SHOWWINDOW) 。 然后我设置video窗口的父窗口SetParent(VideoWindow, GUIWindow)

当我开始我的应用程序,在一个非常短暂的时刻,它看起来像我的窗口正在resize,并正确放置,但窗口返回到它的默认位置(几乎就像忽略了SetWindowPos()甚至被称为)。 是否有明显的原因为什么发生这种情况? 我是窗口操作的新手,所以我很可能犯了一个简单的错误,但是这并不能解释为什么我的窗口在一个非常短的时间内被正确定位,然后回到默认位置。

这是因为设置了SWP_SHOWWINDOW或SWP_HIDEWINDOW,窗口将不会被移动或调整大小(请参阅SetWindowPos文档)。 似乎有点奇怪。 尝试使用不同的标志。

从文档:

如果设置了SWP_SHOWWINDOW或SWP_HIDEWINDOW标志,则不能移动或调整窗口大小。