#include "Ltprinter.h"
L_LTPRINTER_API L_INT EXT_FUNCTION L_PrnRegisterEMFCallback(pszPrinterName, fnEMFCallback, pData)
L_TCHAR * pszPrinterName; |
printer's name |
PRNEMFRGSPROC fnEMFCallback; |
pointer to a EMF callback |
L_VOID * pData; |
pointer to additional parameters |
Registers and enables the firing of the EMF callback function.
Parameter |
Description |
pszPrinterName |
Character string that contains the name of the LEADTOOLS Virtual Printer Driver. |
fnEMFCallback |
Callback function to be registered. This callback function gets the printed job as an EMF data file. |
pData |
Void pointer that you can use to pass one or more additional parameters that the callback function(s) needs. |
SUCCESS |
The function was successful. |
< 1 |
An error occurred. Refer to Return Codes. |
Initialize the COM library by calling the CoInitialize Windows C API before using callbacks. After you are finished using the callbacks release the COM library by calling the CoUninitialize Windows C API.
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 LEADTOOLS Virtual Printer Driver Application. |
Win32, x64.
Functions: |
|
Topics: |
LEADTOOLS Virtual Printer: Register and Un-register Callback Functions |
|
L_INT EXT_CALLBACK OnEmfRgsProc(L_WCHAR * pszPrinter,
HGLOBAL hMem,
L_UINT uSize,
L_VOID * pData)
{
UNREFERENCED_PARAMETER(pszPrinter);
UNREFERENCED_PARAMETER(pData);
static L_INT nCounter = 0;
HANDLE hFile = INVALID_HANDLE_VALUE;
DWORD uSizeWritten = 0;
L_UCHAR * pEmfData= (L_UCHAR*) GlobalLock( hMem );
L_TCHAR szFileName[MAX_PATH];
L_TCHAR szPathDir[MAX_PATH];
GetTempPath(MAX_PATH,szPathDir);
GetTempFileName(szPathDir,TEXT("AnyName"),0,szFileName);
if( pEmfData )
{
hFile = CreateFile( szFileName, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,NULL);
if( hFile != INVALID_HANDLE_VALUE )
{
WriteFile( hFile, pEmfData, uSize, & uSizeWritten, NULL );
CloseHandle( hFile );
HENHMETAFILE hMetaFile = GetEnhMetaFile(szFileName);
//
// Do what ever you need in hMetaFile then delete it
//
DeleteEnhMetaFile(hMetaFile);
}
GlobalUnlock( hMem );
}
// Don't forget freeing the mem.
GlobalFree( hMem );
return 1;
}
L_INT RegistrationEMFCallback()
{
int nRet = L_PrnRegisterEMFCallback(TEXT("TEST LEADTOOLS Printer"),OnEmfRgsProc,NULL);
if(nRet == SUCCESS)
{
L_PrnUnRegisterEMFCallback(TEXT("TEST LEADTOOLS Printer")) ;
}
return nRet;
}