如何从 wxPHP 中的 wxFrame 检索单个控件?

How to retrieve individual controls from a wxFrame in wxPHP?

我正在使用 wxXmlResource() 在 PHP 程序中加载 wxWidgets 资产。这很好地加载了 window,但我不确定如何获取对命名 window 元素的对象引用。

这是我的代码:

// Load the window
$resource = new wxXmlResource();
$resource->InitAllHandlers();
$resource->Load(__DIR__ . '/forms.xrc.xml');

// Get a reference to a window
$frame = new wxFrame();
$resource->LoadFrame($frame, NULL, 'frmOne');
$frame->Show();

// Fetch a named element - the class returned is the base class
$textCtrl = $frame->FindWindow('m_staticText12');
echo get_class($textCtrl) . "\n";

$textCtrl 项应该是一个 wxStaticText 对象,但它已作为 wxWindow(它是父项 class)返回。由于它没有被转换为正确的对象类型,所以我无法调用属于控件自己的方法 class(例如 Wrap())。

我认为 FindWindow() 调用有效,因为如果我故意弄错名字,它 returns null.

我做错了什么?

您需要使用 wxDynamicCast 函数将对象转换为正确的类型,例如:

$textCtrl = wxDynamicCast(
    $frame->FindWindow('m_staticText12'), 
    "wxStaticText"
);