[英]SetWindowPos() not moving or resizing window
我有一個GUI應用程序,該應用程序使用GStreamer從捕獲卡捕獲視頻,然后播放視頻。 音頻和視頻流將發送到GStreamer,GStreamer會自動打開其自己的窗口以播放視頻。 打開視頻窗口后,我需要獲取視頻窗口並移除邊框,並設置窗口大小和位置,並使我的GUI窗口成為該窗口的父窗口,以便將其“錨定”到我的GUI窗口中。
因為我知道視頻窗口的名稱,所以我使用FindWindow()
來獲取窗口的HWND句柄。 然后,我將HWND傳遞給SetWindowPos()
如下SetWindowPos(VideoWindow, GUIWindow, GUIWindowLeft, GUIWindowTop, 640, 360, SWP_SHOWWINDOW)
。 然后,設置視頻窗口SetParent(VideoWindow, GUIWindow)
的父SetParent(VideoWindow, GUIWindow)
。
當我啟動應用程序時,在很短的時間內,看起來好像我的窗口正在調整大小並正確放置,但是隨后窗口返回到其默認位置(幾乎就像它只是忽略了SetWindowPos()
)。 發生這種情況的原因很明顯嗎? 我不熟悉窗口操作,因此很可能犯了一個簡單的錯誤,但由於我的窗口會在很短的時間內正確定位然后又回到默認位置,所以並沒有犯錯。
這是因為設置了SWP_SHOWWINDOW或SWP_HIDEWINDOW,不會移動或調整窗口大小(請參見SetWindowPos文檔)。 似乎有點奇怪。 嘗試使用其他標志。
從文檔:
如果設置了SWP_SHOWWINDOW或SWP_HIDEWINDOW標志,則無法移動窗口或調整窗口大小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.