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

时间:2015-12-17 08:45:40

标签: php wxphp

我正在使用wxXmlResource()在PHP程序中加载wxWidgets资源。这很好地加载了窗口,但我不知道如何获得对命名窗口元素的对象引用。

这是我的代码:

// 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(父类)返回。由于它不是强制转换为正确的对象类型,因此我无法调用属于控件自己的类的方法(例如Wrap())。

我认为FindWindow()调用正在运行,因为如果我故意错误地命名,则返回null

我做错了什么?

1 个答案:

答案 0 :(得分:1)

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

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