wxFrame 不接收事件

问题描述 投票:0回答:1

我有一个有点复杂的应用程序,在一种情况下,事件没有到达我的主窗口。

场景 1:以通常的方式创建 wxFrame,向其添加 UI 元素,并通过 Connect() 或事件表将事件链接到 wxFrame。这工作正常。

场景二:同一个应用程序被外部调用者使用。该调用者打开一个本地(意味着非 wxWidgets)窗口并提供该窗口或子元素(例如某种子面板)的 HWND 句柄。现在在上面提到的 wxFrame 的同一个构造函数中,我调用这个序列让这个 wxFrame 使用调用者 HWND 而不是打开自己的调用者:

SetHWND((WXHWND)in_initValues->hWnd);
SubclassWin((WXHWND)in_initValues->hWnd);
AdoptAttributesFromHWND();
wxTheApp->SetTopWindow(this);

此代码片段取自 wxWidgets 示例的某处。它部分工作,意味着 wxFrame 不再作为单独的窗口打开,但应用程序利用 HWND 在那里显示其内容。但正如所说,我的事件都没有发生在这种情况下。

所以...知道这里可能有什么问题或遗漏了什么吗?

谢谢:-)

wxwidgets
1个回答
0
投票

首先,你应该真正使用

wxNativeContainerWindow
而不是上面的技巧。

其次,对于没有获取事件最明显的解释是没有运行 wx 事件循环——你可能没有,因为你运行了另一个应用程序的消息循环。您需要将相关事件提供给 wx,例如

wxMFCApp
来自
wx/msw/mfc.h
所做的。

© www.soinside.com 2019 - 2024. All rights reserved.