#include "l_bitmap.h"
L_LTKRN_API L_VOID L_SetStatusCallBack(pfnCallback, pUserData, pfnOldCallback, ppOldUserData)
STATUSCALLBACK pfnCallback; |
pointer to your callback function |
L_VOID* pUserData; |
pointer to more parameters for the callback |
STATUSCALLBACK* pfnOldCallback; |
pointer to old callback function |
L_VOID** ppOldUserData; |
pointer to more parameters for the old callback |
Sets the new status callback function and gets the old status callback.
Parameter |
Description |
pfnCallback |
Pointer to your callback function. The callback function must adhere to the function syntax specified in STATUSCALLBACK Function. |
|
This callback function must return SUCCESS if the operation was successfully done, or any error if the function call was a failure. If the callback function returns a failure, the current function will terminate and return the same error that the callback returned. |
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. |
pfnOldCallback |
Pointer to a variable which will be updated with the old status callback function |
ppOldUserData |
Pointer to a variable which will be updated with the user data for the old status callback function |
None.
The status callback is returned through a parameter. You used to have to call L_GetStatusCallBack to get the user data prior to calling L_SetStatusCallback. Now you can get the old callback and set the new callback in one function call.
You can use this function to specify a callback for any of the following functions:
L_AddBitmapNoise
L_AverageFilterBitmap
L_BinaryFilterBitmap
L_ChangeBitmapContrast
L_ChangeBitmapHue
L_ChangeBitmapIntensity
L_ChangeBitmapSaturation
L_ClearBitmap
L_ColorMergeBitmap
L_ColorSeparateBitmap
L_CombineBitmap
L_DeskewBitmap
L_DespeckleBitmap
L_EmbossBitmap
L_FillBitmap
L_FlipBitmap
L_GammaCorrectBitmap
L_GetBitmapHistogram
L_GrayScaleBitmap
L_HalfToneBitmap
L_HistoEqualizeBitmap
L_IntensityDetectBitmap
L_InvertBitmap
L_MedianFilterBitmap
L_MMConvertFromBitmapList(Video Module only)
L_MMSaveFile(Video Module only)
L_MosaicBitmap
L_PaintDCEffect
L_PosterizeBitmap
L_PrintBitmap
L_RemapBitmapIntensity
L_ResizeBitmap
L_ReverseBitmap
L_RotateBitmap
L_SharpenBitmap
L_ShearBitmap
L_SizeBitmap
L_SpatialFilterBitmap
L_StretchBitmapIntensity
L_UnderlayBitmap
Both the old status callback function and the user data required for the old status callback function are updated in the pfnOldCallbaclk and ppOldUserData parameters, respectively.
1. |
Call the L_SetStatusCallBack function, assigning its return value to a STATUSCALLBACK variable, and passing the pointer to your callback as the new value. |
2. |
Call the function that uses the callback (for example L_AverageFilterBitmap). |
3. |
Call the L_SetStatusCallBack function again, restoring the original value by passing the variable that you saved in Step 1. |
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, Linux.
Functions: |
|
Topics: |
/* This is the STATUSCALLBACK function, which stops the process if the user has pressed the interrupt key. */L_BOOL KillProgress;L_INT EXT_CALLBACK StatusCallBack (L_INT nPercent, L_VOID *pUserData){HWND hWnd=NULL;L_TCHAR achMsg[80]; /* message string */MSG msg;hWnd = (HWND)pUserData;/* Let the application detect other events - good for cancel */while (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE)){TranslateMessage (&msg);DispatchMessage (&msg);}/* Check the global variable and return an error if necessary */if (KillProgress){wsprintf (achMsg, TEXT("Interrupted by the user with %d percent finished"),nPercent);MessageBox (hWnd, achMsg, TEXT("Notice"), MB_OK);return (ERROR_USER_ABORT);}wsprintf(achMsg, TEXT("Percentage: %d\n"), nPercent);OutputDebugString(achMsg);return SUCCESS;}/* This function uses L_SetStatusCallBack to implement the STATUSCALLBACKfunction when applying a median filter. */L_INT SetStatusCallbackExample(BITMAPHANDLE *pBitmap){STATUSCALLBACK lpfnOldStatusCB; /* Pointer to the previous STATUSCALLBACK function */L_INT nRet=SUCCESS;L_VOID * pOldData; /* Pointer to the user data for the previous status callback function *//* Set the STATUSCALLBACK function, saving the pointer to the previous one */L_SetStatusCallBack(StatusCallBack, NULL, &lpfnOldStatusCB, &pOldData );/* Apply an intentionally slow median filter with a neighborhood of 7x7 pixels */KillProgress = FALSE;nRet = L_MedianFilterBitmap(pBitmap, 7, 0);/* Restore the previous STATUSCALLBACK function */L_SetStatusCallBack (lpfnOldStatusCB, pOldData, NULL, NULL);return nRet;}
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
