C# 使用标准窗口将wxWidgets绘制到?

C# 使用标准窗口将wxWidgets绘制到?,c#,c++,.net,wxwidgets,C#,C++,.net,Wxwidgets,以下情况:我有一个基于wxWidgets的DLL,可以生成许多wxWidgets GUI元素。接下来是一个调用应用程序,它使用这个DLL及其函数 例如,这个调用实例可以是一个完全没有wxWidgets绑定的C#应用程序。它具有自己的用户界面,其中包括一个wf:Panel 在下一步中,C#-应用程序检索此wf:面板的windows HWND并将其交给我的DLL。此HWND是有效的本机Windows句柄 我的问题是:为了将这个HWND/wf:Panel用作wxWidgets元素,在这里我可以放置标准

以下情况:我有一个基于wxWidgets的DLL,可以生成许多wxWidgets GUI元素。接下来是一个调用应用程序,它使用这个DLL及其函数

例如,这个调用实例可以是一个完全没有wxWidgets绑定的C#应用程序。它具有自己的用户界面,其中包括一个wf:Panel

在下一步中,C#-应用程序检索此wf:面板的windows HWND并将其交给我的DLL。此HWND是有效的本机Windows句柄

我的问题是:为了将这个HWND/wf:Panel用作wxWidgets元素,在这里我可以放置标准的GUI元素,比如wxButton/wxSizers等等,我必须在我的DLL中做些什么


我找到了一个函数SetHWND()但这似乎没有达到预期的效果,因为它需要一个wxWidgets生成的面板,而我有一个在我的C#-应用程序中生成的面板…

您可以使用
wxNativeContainerWindow
创建一个
WXtopLevel窗口
来表示给定的外部
HWND
,然后将其用作所有其他应用程序的父级windows。

您可以使用
wxNativeContainerWindow
创建一个
wxTopLevelWindow
来表示您获得的外部
HWND
,然后将其用作所有其他窗口的父窗口。

@HansPassant此函数仅返回wxWidgets对象-但由于我的面板是在C中创建的,此函数为MEF返回NULL。根据文档,您可以按id、标签或名称搜索窗口。你能让主应用的开发者给你这样的信息吗?然后,您只需调用
wxWindiw*parent=FindWindowByXXX();如果(父项)新的wxButton(父项,…)。看起来在3.1.3中有FindItemByWnd(),但我在master的文档中找不到它的文档。而且它不是静态的。@HansPassant此函数只返回wxWidgets对象-但由于我的面板是在C#中创建的,因此此函数为我返回NULL。根据文档,您可以按id、标签或名称搜索窗口。你能让主应用的开发者给你这样的信息吗?然后,您只需调用
wxWindiw*parent=FindWindowByXXX();如果(父项)新的wxButton(父项,…)。看起来在3.1.3中有FindItemByWnd(),但我在master的文档中找不到它的文档。而且它不是静态的。它不会在C#one上创建另一个窗口吗?可能有可能使
静态wxWindow::FindWindowByHWND()
?不,
wxNativeContainerWindow
表示现有窗口,不创建新窗口。好的,当HWND来自C#/WPF应用程序时,这不起作用。虽然HWND是有效的,但wxWidgets不能将其用作父级。还有其他想法吗?你说的“不能”是什么意思?会发生什么?它不会在C#one上创建另一个窗口吗?可能有可能使
静态wxWindow::FindWindowByHWND()
?不,
wxNativeContainerWindow
表示现有窗口,不创建新窗口。好的,当HWND来自C#/WPF应用程序时,这不起作用。虽然HWND是有效的,但wxWidgets不能将其用作父级。还有其他想法吗?你说的“不能”是什么意思?会发生什么?