#include "l_bitmap.h"
L_LTANN_API L_INT L_AnnEnumerate(hObject, pfnCallback, pUserData, uFlags, pUserList)
HANNOBJECT hObject; |
handle of the container object |
ANNENUMCALLBACK pfnCallback; |
callback function for each object |
L_VOID *pUserData; |
pointer to more parameters for the callback |
L_UINT uFlags; |
flags that determine which objects to process |
L_TCHAR *pUserList; |
character string that contains the user list |
Lets you process all of the annotation objects in a container.
Parameter | Description | |
hObject | Handle of the container object. | |
pfnCallback | Callback function for processing each enumerated object. Use the function pointer as the value of this parameter. | |
L_AnnEnumerate calls this callback function as it gets the handle of each annotation object. The callback function must adhere to the function prototype described in ANNENUMCALLBACK 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. | ||
uFlags | Flags that determine which objects to process. Most of the flags apply only to container objects. You can combine values when appropriate by using a bitwise OR ( | ). The following are valid values: | |
Value | Meaning | |
0 | Process only the specified object. | |
ANNFLAG_SELECTED | [0x0001] Process only objects that have the selected property set to TRUE. For getting and setting the selected property, use the L_AnnGetSelected and L_AnnSetSelected functions. | |
ANNFLAG_NOTTHIS | [0x0004] Process only one level of objects within the specified container, not the container itself. | |
ANNFLAG_RECURSE | [0x0008] Process objects within a container, and within any subcontainers, down to any level. | |
ANNFLAG_NOTCONTAINER | [0x0002] (Used with ANNFLAG_RECURSE) Process objects within containers, not the containers themselves. | |
ANNFLAG_USER | [0x0040] Process only those objects that have a user included in pUserList. If pUserList is NULL, process only those objects that do not have an associated user. | |
pUserList | Character string that contains the list of users associated with the specified object. pUserList has the form "User1,User2,,UserN". This must be a NULL terminated string with user names separated by a comma. This parameter is valid only if ANNFLAG_USER is set in uFlags. |
SUCCESS |
The function was successful. |
< 1 |
An error occurred. Refer to Return Codes. |
You pass the handle of the container object in the hObject parameter, and you specify your callback function that is to process each object in the container. The L_AnnEnumerate function calls your callback function as it gets the handle of each annotation object.
You should not call this function during processing of WM_LTANNEVENT if wParam equals LTANNEVENT_REMOVE or LTANNEVENT_INSERT, or during the ANNENUMCALLBACK callback function
Required DLLs and Libraries
For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application. |
Win32, x64.
Functions: |
|
|
|
Topics: |
|
|
|
|
|
|
|
|
This ANNENUMCALLBACK function updates a count of the number of rectangles, ellipses, and polygons, as it processes each annotation object. This example uses a callback function to count the number of rectangles, ellipses, and polygons.
L_INT EXT_CALLBACK TestAnnCallback (HANNOBJECT hObject,
L_INT* pUserData)
{
L_UINT ObjectType; /* The type of annotation object */
L_INT ObjectCount; /* The number of objects */
/* Initialize the object count */
ObjectCount = (L_INT) *pUserData;
/* Get the current object type */
L_AnnGetType (hObject, &ObjectType);
/* Update the counter if the object is a rectangle, ellipse, or polygon */
if ((ObjectType == ANNOBJECT_RECT) ||
(ObjectType == ANNOBJECT_ELLIPSE) ||
(ObjectType == ANNOBJECT_POLYGON))
{
++ObjectCount;
}
/* Update the caller's variable */
*pUserData = ObjectCount;
return SUCCESS;
}
L_INT AnnEnumerateExample(HANNOBJECT hContainer)/* Container annotation object */
{
L_INT nRet;
L_TCHAR szMessage[80];
L_INT ObjectCount; /* Counter for annotation objects */
L_INT* pCount = &ObjectCount; /* Pointer to the object counter */
/* Initialize the object count */
ObjectCount = 0;
/* Set the callback function */
/* Process every object in the root container */
/* Refer to the callback function below to see how the count is updated */
nRet = L_AnnEnumerate(hContainer, TestAnnCallback, pCount, ANNFLAG_RECURSE, NULL);
if(nRet != SUCCESS)
return nRet;
/* Display a message box with the result */
wsprintf (szMessage, TEXT("%d rectangles, ellipses, and polygons"), ObjectCount);
MessageBox (NULL, szMessage, TEXT("Notice"), MB_OK);
return SUCCESS;
}
Raster .NET | C API | C++ Class Library | JavaScript HTML5
Document .NET | C API | C++ Class Library | JavaScript HTML5
Medical .NET | C API | C++ Class Library | JavaScript HTML5
Medical Web Viewer .NET