【发布时间】:2014-04-03 12:03:40
【问题描述】:
使用从HwndHost 派生的类和一些巫术代码:
protected override HandleRef BuildWindowCore(HandleRef hwndHost)
{
CheckGuestValidity();
var guestHwnd = new HandleRef(GuestHwnd, _guestHwnd);
Win32.SetWindowStyle(guestHwnd.Handle, WindowStyles.WS_CHILD | Win32.GetWindowStyle(guestHwnd.Handle));
WindowsFormsHost.EnableWindowsFormsInterop();
System.Windows.Forms.Application.EnableVisualStyles();
Win32.SetParent(guestHwnd.Handle, hwndHost.Handle);
Win32.SetWindowStyle(_guestHwnd, Win32.GetWindowStyle(_guestHwnd) & ~WindowStyles.WS_CAPTION);
return guestHwnd;
}
我已经设法从 Delphi COM 服务器获取了一个没有父窗口(Windows 的主窗口除外)的窗口,以采用我的 WPF 应用程序窗口作为它的父窗口。问题是它位于我的 WPF 窗口最底部的所有其他用户控件等之下。我想调整大小并将其放置在 TabControl 选项卡上的矩形内。我该怎么办?我意识到这将需要一些调整大小和定位 Win32 API 调用,甚至可能需要一些低级别的 Windows 消息,但我已经准备好了。
【问题讨论】: