I'm loading wxWidgets assets in a PHP program using wxXmlResource()
. This loads the window very well, but I am not sure how to get an object reference to named window elements.
Here is my code:
// 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";
The $textCtrl
item should be a wxStaticText
object but it has been returned as a wxWindow
(which is a parent class). Since it is not cast as the correct object type, I can't call methods belonging to the control's own class (such as Wrap()
).
I think the FindWindow()
call is working, since if I get the name deliberately wrong, it returns null
.
What am I doing wrong?
You will need to use the wxDynamicCast function to cast object to proper type like:
$textCtrl = wxDynamicCast(
$frame->FindWindow('m_staticText12'),
"wxStaticText"
);