SetWindowPos () не перемещает или не изменяет размеры окна - PullRequest
1 голос
/ 30 сентября 2011

У меня есть приложение с графическим интерфейсом, которое использует GStreamer для захвата видео с карт захвата, а затем воспроизводить видео.Аудио- и видеопотоки отправляются в GStreamer, и GStreamer автоматически открывает собственное окно для воспроизведения видео.После того, как окно видео открыто, мне нужно взять окно видео и удалить границу, установить размер и положение окна и сделать мое окно GUI родителем этого окна, чтобы оно было «привязано» к моему окну GUI.

Поскольку я знаю имя видеоокна, я использую FindWindow(), чтобы получить дескриптор HWND для окна.Затем я передаю это HWND на SetWindowPos() следующим образом SetWindowPos(VideoWindow, GUIWindow, GUIWindowLeft, GUIWindowTop, 640, 360, SWP_SHOWWINDOW).Затем я устанавливаю родительский элемент видео окна SetParent(VideoWindow, GUIWindow).

. Когда я запускаю свое приложение, в течение очень короткого момента кажется, что мое окно изменено в размере и размещено правильно, но затем окно возвращается в положение по умолчанию(почти как если бы просто пренебрегали тем, что SetWindowPos() даже называли).Есть ли очевидная причина, почему это происходит?Я новичок в области манипулирования окнами, поэтому вполне возможно, что я делаю простую ошибку, но это не так, поскольку мое окно будет правильно позиционироваться в течение очень короткого момента, а затем вернется в положение по умолчанию.

1 Ответ

1 голос
/ 06 октября 2011

Это связано с тем, что SWP_SHOWWINDOW или SWP_HIDEWINDOW установлены, окно не будет перемещено или изменено в размере (см. Документацию SetWindowPos).Кажется немного страннымПопробуйте использовать другой флаг.

Из документов:

Если установлен флаг SWP_SHOWWINDOW или SWP_HIDEWINDOW, окно не может быть перемещено или изменено в размере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...