Take the following steps to create and run a program that uses the LEADTOOLS Network Virtual Printer Driver.
1. |
Start Visual Studio 2008. |
2. |
From the Main Menu, choose File->New->Project... |
3. |
In the New Project dialog box, choose Visual C++ in the Projects Types, and choose Win32 Project in the Templates section. |
4. |
In the Project Name field, type the project name as "LEADTOOLS Printer Client Demo". |
5. |
In the Location field, use the Browse button to navigate to the Examples subdirectory (such as C:\LEAD Technologies\LEADTOOLS 19\Examples\CDLL). Clear both the Create Directory For Solution and Add To Source Control Check boxes. Click OK. |
6. |
Click Next> in the Win32 Project Wizard. |
7. |
Select "DLL" as the application type. Then click Finish. Three folders will be created, entitled: "Header Files", "Resource Files", and "Source Files". |
8. |
From the Main Menu, choose Project->Properties. |
9. |
In the Properties dialog box, choose Configuration Properties and then select C/C++, then select Preprocessor. |
10. |
In right side set Preprocessor definitions property to use LTVXX_CONFIG then click OK. |
11. |
In Solution Explorer, right-click the Header Files folder, open stdafx.h, and add the following code to the end of the file: |
#include "..\..\..\include\ltPrinterClient.h" 12. |
Open LEADTOOLS Printer Client Demo.cpp, and add the following functions: |
L_BOOL EXT_FUNCTION L_PrnClntStartup(const L_WCHAR *pszPrinterName, L_UCHAR * pbtInitialData, L_ULONG dwLenght, L_VOID ** ppUserData){//set any user-defined data to ppUserDataTCHAR * szAdditionalMessage = TEXT("additional user data");*ppUserData = malloc(_tcslen(szAdditionalMessage) * sizeof(TCHAR));memset(*ppUserData, 0, _tcslen(szAdditionalMessage) * sizeof(TCHAR));memcpy(*ppUserData, szAdditionalMessage, _tcslen(szAdditionalMessage) * sizeof(TCHAR));//Function will get called as printer job startsWCHAR szMessage[1024];wsprintfW(szMessage, TEXT("Job received from printer %s"), pszPrinterName);MessageBox(NULL, szMessage, TEXT("Printer Client Demo"), 0);return TRUE;}L_VOID EXT_FUNCTION L_PrnClntShutdown(const L_WCHAR *pszPrinterName, L_VOID * pUserData){//Function will get called when job finishesWCHAR szMessage[1024];wsprintfW(szMessage, TEXT("Job ended from printer %s"), pszPrinterName);MessageBox(NULL, szMessage, TEXT("Printer Client Demo"), 0);//free the allocated user datafree(pUserData);}L_BOOL EXT_FUNCTION L_PrnClntPrintJob(PRNJOBDATA* pPrintJobData, L_VOID * pUserData){//Function will get called when job is being printerWCHAR szMessage[1024];wsprintfW(szMessage, TEXT("Job name %s"), pPrintJobData->szPrintJobName);MessageBox(NULL, szMessage, TEXT("Printer Client Demo"), 0);//cast the user data to the appropriate formatTCHAR * szAdditionalMessage = (TCHAR*)pUserData;MessageBox(NULL, szAdditionalMessage, TEXT("User additional data"), 0);char *pszMessage = "Network Printer";pPrintJobData->hUserData = GlobalAlloc(GHND, strlen(pszMessage));PVOID pVoid = GlobalLock(pPrintJobData->hUserData);memcpy(pVoid, pszMessage, strlen(pszMessage));GlobalUnlock(pPrintJobData->hUserData);pPrintJobData->uUserDataSize = strlen(pszMessage);return TRUE;}
13. |
Right-click the LEADTOOLS Printer Client Demo project in the Solution Explorer, select Add->New Item..., and choose Module - Definition file ( .def ). Name it "PrinterClient.def" and add the following code to it: |
LIBRARYEXPORTSL_PrnClntStartup @1L_PrnClntShutdown @2L_PrnClntPrintJob @3
14. |
Compile and run the code to test it. Now you need to connect the demo DLL to a printer. |
For more information, refer to LEADTOOLS Network Printer Client Installer Demo.