如何从 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"
);
我正在使用 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"
);