Я загружаю ресурсы wxWidgets в программу PHP, используя wxXmlResource()
, Это очень хорошо загружает окно, но я не уверен, как получить ссылку на объект на именованные элементы окна.
Вот мой код:
// 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
,
Что я делаю неправильно?
Вам нужно будет использовать функцию wxDynamicCast для приведения объекта к нужному типу, например:
$textCtrl = wxDynamicCast(
$frame->FindWindow('m_staticText12'),
"wxStaticText");
Других решений пока нет …