#include "lvkrn.h"
L_LVKRN_API L_INT L_VecSetEventCallback(pVector, pProc, pUserData, pOldProc, pOldUserData)
pVECTORHANDLE pVector; |
pointer to a vector handle |
pVECTOREVENTPROC pProc; |
pointer to your callback function |
L_VOID * pUserData; |
pointer to more parameters for the callback |
ppVECTOREVENTPROC pOldProc; |
pointer to a pointer |
L_VOID **pOldUserData; |
pointer to more parameters for the old callback function |
Sets a new vector event callback.
Parameter |
Description |
pVector |
Pointer to a vector handle. |
pProc |
Your callback function that supplies the information that LEADTOOLS needs when handling events. The callback function must adhere to the syntax specified in VECTOREVENTPROC. |
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. |
pOldProc |
Pointer to a pointer to a VECTOREVENTPROC that will be updated with the old callback function. |
pOldUserData |
Pointer to the additional data used by the old callback function. |
SUCCESS |
The function was successful. |
< 1 |
An error occurred. Refer to Return Codes. |
For information about the types of events the vector handle can generate, refer to the VECTOREVENT structure.
Required DLLs and Libraries
LVKRN 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: |
This example will disable L_VecSetRotation.
#define VECTOR_ERROR_USERNOROTATION -20000typedef struct tagDATA{pVECTOREVENTPROC pOldProc;L_VOID* pOldUserData;}DATA, *LPDATA;L_INT EXT_CALLBACK VectorEventProc(pVECTORHANDLE pVector,L_UINT uLevel,pVECTOREVENT pEvent,L_VOID* pUserData){L_INT nRet;LPDATA pData;pData = (LPDATA) pUserData;if (pData->pOldUserData != NULL){/* call the old event handler */nRet = pData->pOldProc( pVector, uLevel, pEvent, pData->pOldUserData );if( nRet != SUCCESS )return nRet;}/* disable rotation */if( uLevel == 0 && /* top level event */pEvent->uType == VECTOR_EVENT_ROTATION && /* from a L_VecSelectObject call */pEvent->Status == VECTOR_EVENT_STATUS_BEFORE ) /* before any action is taken */return VECTOR_ERROR_USERNOROTATION;return SUCCESS;}L_INT VecSetEventCallbackExample(pVECTORHANDLE pVector){LPDATA pData;/* set a new vector event callback */pData = (LPDATA) GlobalAllocPtr( GHND, sizeof( LPDATA ) );pData->pOldProc = NULL;pData->pOldUserData = NULL;return L_VecSetEventCallback( pVector, VectorEventProc, pData, &pData->pOldProc, &pData->pOldUserData );}L_VOID TestFunction( pVECTORHANDLE pVector ){L_INT nRet;VECTORPOINT Point;/* try to call L_VecSetRotation */Point.x = 10.0;Point.y = 20.0;Point.z = 30.0;nRet = L_VecSetRotation( pVector, &Point, NULL, NULL, 0L );/* nRet should be VECTOR_ERROR_USERNOROTATION, the value returned from VectorEventProc */}