Размеры дочерних окон win32 без стилей - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть окно win32, которое мне нужно поместить в окно WPF.

Это окно win32 НЕ изначально является дочерним окном.

var style = (SetWindowLongFlags)GetWindowLong(_hwnd, WindowLongIndexFlags.GWL_STYLE);
            style &= ~(SetWindowLongFlags.WS_POPUP|SetWindowLongFlags.WS_CAPTION);
OR // style &= ~(SetWindowLongFlags.WS_BORDER);
            style |= SetWindowLongFlags.WS_CHILD;

SetWindowLong(_hwnd, WindowLongIndexFlags.GWL_STYLE, style);

SetParent(_hwnd, hwndParent.Handle);

Все в порядке, пока я не попытаюсь на самом деле изменить размер дочернего окна с помощью MoveWindow или SetWindowPos.Он будет рисовать на всю высоту родительского окна и игнорировать параметры высоты (и ширины).С позиционированием все в порядке.

Я также попробовал следующий подход https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/walkthrough-hosting-a-win32-control-in-wpf (с небольшими изменениями, поскольку я сам не создаю окно win32, поэтому не могу дать ему WS_CHILD с самого начала) ибез стиля я не получаю сообщения SIZE.Если я сам создаю его как дочернее окно с самого начала, то все в порядке.

Любая идея, почему удаление стилей WS_BORDER или WS_POPUP из окна мешает мне изменить его размер?

...