フレームを表示

L_PrnRegisterEMFCallback

フレームを表示

#include "Ltprinter.h"

L_LTPRINTER_API L_INT EXT_FUNCTION L_PrnRegisterEMFCallbackpszPrinterName、fnEMFCallback、pData

L_TCHAR * pszPrinterName;

/* プリンター名*/

PRNEMFRGSPROC fnEMFCallback;

/* EMFコールバックへのポインター*/

L_VOID * pData;

/* 追加のパラメーターへのポインタ*/

登録して、EMFコールバック関数の発砲を有効にします。

パラメーター

説明

pszPrinterName

LEADTOOLS仮想プリンタドライバーの名前を格納する文字列。

fnEMFCallback

登録されるコールバック関数。このコールバック関数は、EMFデータファイルとして印刷されたジョブを取得します。

pData

コールバック関数が必要とする一つ以上の追加のパラメータを渡すために使用することができるボイドポインター。

戻り値

SUCCESS

関数は成功しました。

<1

エラーが発生しました。リターンコードを参照してください

コメント

コールバックを使う前にCoInitialize Windows C APIを呼び出すことによって、COMライブラリを初期化します。コールバックを使い終わったあと、CoUninitialize Windows C APIを呼び出すことによって、COMライブラリをリリースします。

必須のDLLとライブラリ

LTPRINTER

ツールキットバージョンに基づいた、必要な正確なDLLとライブラリのリストについては、LEADTOOLS仮想プリンタドライバーアプリケーションで含まれるファイルを参照してください。

プラットホーム

Win32 x 64

参照

関数:

L_PrnUnRegisterEMFCallback, PRNEMFRGSPROC

トピック:

LEADTOOLS仮想プリンタ:登録して、コールバック関数を登録解除します

 

LEADTOOLS仮想プリンタドライバの操作

サンプル

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_LTPRINTERTEX_API  L_INT RegistrationEMFCallback()
{
   int nRet = L_PrnRegisterEMFCallback(TEXT("TEST LEADTOOLS Printer"),OnEmfRgsProc,NULL);

   if(nRet == SUCCESS)
   {
      L_PrnUnRegisterEMFCallback(TEXT("TEST LEADTOOLS Printer")) ;
   }

   return nRet;
}