我有一个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
样式会阻止我调整大小吗?