【发布时间】:2019-12-20 07:34:58
【问题描述】:
以下情况:我有一个基于wxWidgets的DLL,可以生成很多wxWidgets-GUI-elements。接下来是一个调用应用程序,它使用这个 DLL 及其函数。
这个调用实例例如可以是一个完全没有 wxWidgets 绑定的 C# 应用程序。它带有一个包含 wf:Panel 的自己的用户界面。
在下一步中,C# 应用程序检索此 wf:Panel 的 Windows HWND 并将其交给我的 DLL。此 HWND 是有效的本机 Windows 句柄。
我的问题:我必须在我的 DLL 中做什么才能将这个 HWND/这个 wf:Panel 用作 wxWidgets 元素,我可以在其中放置标准 GUI 元素,例如 wxButton/wxSizers 等等?
我找到了一个函数 SetHWND() 但这似乎并不能解决问题,因为它需要一个 wxWidgets 生成的面板,而我有一个在我的 C# 应用程序中生成的面板...
【问题讨论】:
-
@HansPassant 此函数仅返回 wxWidgets-objects - 但由于我的面板是用 C# 创建的,因此此函数为我返回 NULL
-
根据文档,您可以通过 id、标签或名称搜索窗口。你能要求开发者主应用程序给你这样的信息吗?那么您需要做的就是致电
wxWindiw *parent = FindWindowByXXX(); if( parent) new wxButton( parent, ... );。看起来在 3.1.3 中有 FindItemByHWND(),但我在 master 文档中找不到它的文档。而且它不是静态的。