我有一个GUI应用程序,它使用GStreamer从捕捉卡捕捉视频,然后播放视频。音频和视频流发送到GStreamer,GStreamer自动打开自己的窗口播放视频。一旦视频窗口打开,我需要取出视频窗口并删除边框并设置窗口的大小和位置,并将我的GUI窗口作为该窗口的父窗口,以便将其“锚定”到我的GUI窗口。SetWindowPos()不移动或调整窗口大小
因为我知道视频窗口的名称,所以我使用FindWindow()
来获取窗口的HWND句柄。然后,我将该HWND传递给SetWindowPos()
,如下所示SetWindowPos(VideoWindow, GUIWindow, GUIWindowLeft, GUIWindowTop, 640, 360, SWP_SHOWWINDOW)
。然后我设置视频窗口的父母SetParent(VideoWindow, GUIWindow)
。
当我开始我的应用程序时,在一个非常短暂的时刻,它看起来像我的窗口正在调整大小并正确放置,但随后窗口返回到其默认位置(几乎就像忽略了SetWindowPos()
甚至被称为)。这是否有明显的原因?我对窗口操作很陌生,所以很可能我犯了一个简单的错误,但这并不能解决为什么我的窗口会在短时间内正确定位,然后又回到默认位置。
这几乎肯定是错误的做法。我确信GStreamer有一种方法可以让你指定你想要视频播放的窗口,所以你不必采用这种黑客技术。 –