#define MAKE_IMAGE_PATH(pFileName) TEXT("C:\\Users\\Public\\Documents\\LEADTOOLS Images\\")pFileName
typedef struct tagIMAGECBPARM
{
HWND hwnd;
HDC hdc;
} IMAGECBPARM;
static L_INT EXT_CALLBACK LoadImageCB(pFILEINFO pFileInfo,
pBITMAPHANDLE pBitmap,
L_UCHAR * pBuffer,
L_UINT uFlags,
L_INT nRow,
L_INT nLines,
L_VOID * pUserData)
{
static RECT rLeadSource;
static RECT rLeadDest;
IMAGECBPARM *pData = (IMAGECBPARM*)pUserData;
if((uFlags & FILEREAD_FIRSTPASS) && (uFlags & FILEREAD_FIRSTROW) )
{
SetRect(&rLeadSource, 0, 0, pFileInfo->Width, pFileInfo->Height);
GetClientRect(pData->hwnd, &rLeadDest);
}
L_PaintDCBuffer( pData->hdc,
pBitmap,
&rLeadSource,
&rLeadSource,
&rLeadDest,
&rLeadDest,
SRCCOPY,
pBuffer,
nRow,
(uFlags & FILEREAD_COMPRESSED) ? -nLines : nLines );
return( SUCCESS );
}
L_LTFILTEX_API L_INT LoadMemoryExample(HWND hWnd)
{
L_INT nRet;
BITMAPHANDLE TmpBitmap;
HGLOBAL hFileInMemory=NULL;
L_SIZE_T uMemSize;
L_UCHAR *pData;
static IMAGECBPARM UserData;
FILEREADCALLBACK lpfnCallBack;
nRet = L_LoadBitmap (MAKE_IMAGE_PATH(TEXT("ImageProcessingDemo\\Image3.cmp")), &TmpBitmap, sizeof(BITMAPHANDLE), 0, ORDER_BGR, NULL, NULL);
if(nRet != SUCCESS)
return nRet;
nRet = L_SaveBitmapMemory(&hFileInMemory, &TmpBitmap, FILE_CMP, 24, QS, &uMemSize, NULL);
if(nRet != SUCCESS)
return nRet;
L_FreeBitmap(&TmpBitmap);
pData = (L_UCHAR *) GlobalLock (hFileInMemory);
UserData.hwnd = hWnd;
UserData.hdc = GetDC( hWnd );
lpfnCallBack = (FILEREADCALLBACK)LoadImageCB;
nRet = L_LoadMemory(pData,
&TmpBitmap, sizeof(BITMAPHANDLE),
0,
ORDER_BGR,
LOADFILE_ALLOCATE | LOADFILE_STORE,
lpfnCallBack,
&UserData,
uMemSize,
NULL, NULL);
if(nRet != SUCCESS)
return nRet;
GlobalUnlock (hFileInMemory);
GlobalFree (hFileInMemory);
nRet = L_SaveBitmap(MAKE_IMAGE_PATH(TEXT("Result.BMP")), &TmpBitmap, FILE_BMP, 24, 0, NULL);
L_FreeBitmap(&TmpBitmap);
if(nRet != SUCCESS)
return nRet;
return SUCCESS;
}