#include "LtCon.h"
L_LTCON_API L_INT L_ContainerSetCallback(pContainer, pCallback, pUserData)
pCONTAINERHANDLE pContainer; |
pointer to a container handle |
const pCONTAINERCALLBACK pCallback; |
optional callback function |
L_VOID * pUserData; |
pointer to more parameters for the callback |
Specifies a callback function for handling container events.
Parameter |
Description |
pContainer |
Pointer to a container handle. |
pCallback |
Optional callback function for additional processing. If you do not provide a callback function, use NULL as the value of this parameter. If you do provide a callback function, use the function pointer as the value of this parameter. The callback function must adhere to the function prototype described in CONTAINERCALLBACK Function. |
pUserData |
Void pointer that you can use to pass one or more additional parameters that the callback function needs. |
|
To use this feature, assign a value to a variable or create a structure that contains as many fields as you need. Then, in this parameter, pass the address of the variable or structure, casting it to L_VOID *. The callback function, which receives the address in its own pUserData parameter, can cast it to a pointer of the appropriate data type to access your variable or structure. |
|
If the additional parameters are not needed, you can pass NULL in this parameter. |
SUCCESS |
The function was successful. |
< 1 |
An error occurred. Refer to Return Codes. |
Required DLLs and Libraries
LTCON For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application |
Functions: |
|
Topics: |
L_INT EXT_CALLBACK LeadContainerProc(pCONTAINERHANDLE pContainer,
CONTAINEREVENTTYPE nEventType,
L_VOID* pEventData,
L_VOID* pUserData)
{
UNREFERENCED_PARAMETER(pContainer);
UNREFERENCED_PARAMETER(pEventData);
UNREFERENCED_PARAMETER(pUserData);
pCONTAINEROBJECTDATA pObjectData = ( pCONTAINEROBJECTDATA ) pEventData ;
switch ( nEventType )
{
case CONTAINER_EVENT_TYPE_DRAW:
{
switch ( pObjectData->nObjectType )
{
/* Process the point object events */
case CONTAINER_OBJECT_TYPE_POINT:
{
switch ( pObjectData->fState )
{
case CONTAINER_STATE_BEGIN:
break ;
case CONTAINER_STATE_PROCESS:
break ;
case CONTAINER_STATE_END:
break ;
case CONTAINER_STATE_ABORT:
break ;
}
}
break ;
/* Process the line object events */
case CONTAINER_OBJECT_TYPE_LINE:
{
switch ( pObjectData->fState )
{
case CONTAINER_STATE_BEGIN:
break ;
case CONTAINER_STATE_PROCESS:
break ;
case CONTAINER_STATE_END:
break ;
case CONTAINER_STATE_ABORT:
break ;
}
}
break ;
/* Process the square object events */
case CONTAINER_OBJECT_TYPE_SQUARE:
{
switch ( pObjectData->fState )
{
case CONTAINER_STATE_BEGIN:
break ;
case CONTAINER_STATE_PROCESS:
break ;
case CONTAINER_STATE_END:
break ;
case CONTAINER_STATE_ABORT:
break ;
}
}
break ;
/* Process the rectangle object events */
case CONTAINER_OBJECT_TYPE_RECT:
{
switch ( pObjectData->fState )
{
case CONTAINER_STATE_BEGIN:
break ;
case CONTAINER_STATE_PROCESS:
break ;
case CONTAINER_STATE_END:
break ;
case CONTAINER_STATE_ABORT:
break ;
}
}
break ;
/* Process the circle object events */
case CONTAINER_OBJECT_TYPE_CIRCLE:
{
switch ( pObjectData->fState )
{
case CONTAINER_STATE_BEGIN:
break ;
case CONTAINER_STATE_PROCESS:
break ;
case CONTAINER_STATE_END:
break ;
case CONTAINER_STATE_ABORT:
break ;
}
}
break ;
/* Process the ellipse object events */
case CONTAINER_OBJECT_TYPE_ELLIPSE:
{
switch ( pObjectData->fState )
{
case CONTAINER_STATE_BEGIN:
break ;
case CONTAINER_STATE_PROCESS:
break ;
case CONTAINER_STATE_END:
break ;
case CONTAINER_STATE_ABORT:
break ;
}
}
break ;
/* Process the polyline object events */
case CONTAINER_OBJECT_TYPE_POLYLINE:
{
switch ( pObjectData->fState )
{
case CONTAINER_STATE_BEGIN:
break ;
case CONTAINER_STATE_PROCESS:
break ;
case CONTAINER_STATE_END:
break ;
case CONTAINER_STATE_ABORT:
break ;
}
}
break ;
/* Process the bezier object events */
case CONTAINER_OBJECT_TYPE_BEZIER:
{
switch ( pObjectData->fState )
{
case CONTAINER_STATE_BEGIN:
break ;
case CONTAINER_STATE_PROCESS:
break ;
case CONTAINER_STATE_END:
break ;
case CONTAINER_STATE_ABORT:
break ;
}
}
break ;
}
}
break ;
}
return SUCCESS ;
}
L_INT ContainerSetCallbackExample(HWND hWnd, pCONTAINERHANDLE * ppContainer)
{
L_INT nRet;
CONTAINERMETRICS Metrics ;
/* If the contianer doesn't exist, create the container and attach it to its owner window */
if(ppContainer != NULL)
{
/* check the validity of the container handle */
nRet = L_ContainerIsValid ( *ppContainer );
if(nRet != SUCCESS)
*ppContainer = NULL;
}
if(*ppContainer == NULL)
{
/* Initiate the container handle */
nRet = L_ContainerInit ( ppContainer ) ;
if(nRet != SUCCESS)
return nRet;
nRet = L_ContainerCreate ( *ppContainer, hWnd ) ;
if(nRet != SUCCESS)
return nRet;
}
/* check the validity of the container handle */
nRet = L_ContainerIsValid ( *ppContainer );
if (nRet == SUCCESS )
{
/* Set the container object type to rectangle */
nRet = L_ContainerSetObjectType ( *ppContainer, CONTAINER_OBJECT_TYPE_RECT ) ;
if(nRet != SUCCESS)
return nRet;
/* Initiate the container metrics */
Metrics.nSize = sizeof ( CONTAINERMETRICS ) ;
Metrics.dwMask = CMF_LIMITS ;
/* Set the container limits to some value */
SetRect ( &Metrics.rcLimits, 0, 0, 500, 500 ) ;
/* Set the container metrics */
nRet = L_ContainerSetMetrics ( *ppContainer, &Metrics ) ;
if(nRet != SUCCESS)
return nRet;
nRet = L_ContainerSetCallback ( *ppContainer, LeadContainerProc, NULL ) ;
}
return nRet;
}