![]() |
![]() |
![]() |
![]() |
Get the instance pointer for a widget in a given module
#include <Ap.h>
PtWidget_t *ApGetWidgetPtr( PtWidget_t *link_instance,
int wgt_name );
Ap
ApGetWidgetPtr() is used to obtain the widget's instance pointer within the specified link_instance. For most modules, PhAB generates manifests that let you access the widgets within the module directly, provided only one instance of the module exists at a time.
![]() |
You can also use AbGetABW() to get the widget instance pointer more efficiently, though AbGetABW() does not work when there are multiple instances of the widget's window module. |
Because window modules allow you to have multiple instances you can't always use the direct access manifests; the manifest will only be valid for the last instance of the window. For windows, you may need either to save the link_instance pointer when creating the window, or to use this function to find the correct link_instance for the callback.
Once you determine the module link instance, you'll need to extract the widget pointer from it.
A pointer to the widget within the module link_instance, or NULL if it wasn't found.
PtArg_t args[1];
mywindow_callback( PtWidget_t *widget, ... )
{
PtWidget_t *window;
/* from which window did this come? */
if ( window = ApGetInstance( widget ) ) {
/* set the widget selected to red */
PtSetArg( &args[0], Pt_ARG_FILL_COLOR,
Pg_RED, 0 );
PtSetResources(
ApGetWidgetPtr( window, ABN_mywidget ),
1, args );
}
return( Pt_CONTINUE );
}
![]() |
If you compare this example with the one for ApGetInstance(), you'll notice a subtle difference. This example modifies a specific widget identified by ABN_mywidget, while the other example modifies any widget affected by the callback. |
Photon
| Safety: | |
|---|---|
| Interrupt handler | No |
| Signal handler | No |
| Thread | No |
“Handling multiple instances of a window” in the Working with Code chapter of the Photon Programmer's Guide
![]() |
![]() |
![]() |
![]() |