У меня есть окно 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
из окна мешает мне изменить его размер?