我目前在WPF中托管Win32 OSG(基于OpenGL构建)控件。我正在使用telerik扩展坞。当窗格与MainWindow停靠在一起时,一切正常。但是,当我撕下标签时,不会在撕下标签中重新创建OSG图形。
我是子类化HwndHost,用于CreateWindowEx创建本机Win32主机并返回本机句柄(请参见下面的代码)。然后,我将该句柄传递给由用户控件托管的本机OSG代码。
// inside my ControlHost class which derives from HwndHost
protected override HandleRef BuildWindowCore(HandleRef hwndParent)
{
hwndControl = IntPtr.Zero;
hwndHost = IntPtr.Zero;
hwndHost = CreateWindowEx(0, "MDIClient", "",
WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN,
0, 0,
hostHeight, hostWidth,
hwndParent.Handle,
(IntPtr)HOST_ID,
IntPtr.Zero,
0);
return new HandleRef(this, hwndHost);
}
Run Code Online (Sandbox Code Playgroud)
调试到上述方法时,如预期的那样,hwndParent.handle当选项卡停靠在主窗口中时,该参数是WPF MainWindow的句柄。但是,当我拉出选项卡并将其变成浮动选项卡时,该hwndParent.handle属性是我无法在Spy ++中找到的值。Spy ++的浮动标签“ hwnd”值与上述方法产生的值相同。我怀疑这可能是OSG图形未显示的原因。
我的问题是:
我本来就知道使用WPF,每个Window对象都只有一个HWND,但是这如何与停靠库中的浮动面板一起使用?浮动面板实际上是作为基础对象还是用户控件的窗口?
有什么想法为什么我的本机OSG图形未显示在浮动撕下标签上?它与传入的父句柄有关吗?
| 归档时间: |
|
| 查看次数: |
1507 次 |
| 最近记录: |