Knowledge Base Nr: 00081 PrintSupportSample.cpp - http://www.swe-kaiser.de

Downloads: C++-Klassen

Win32: diese klasse unterstützt das druckerhandling
u.a. kann ein template-file (beliebiges ascii-format) modifiziert (suchen&ersetzen)
und mit einem beliebigen programm auf einem drucker ausgegeben werden.
(z.b. rtf-file mit wordpad)

  
class CPrintSupport
{
...
static int SetDefaultPrinter(const char* lpszPrinterName, bool bDoBroadcastChange = true);

int PrintFile(const char* lpszPrintTool, const char* lpszPrintCmd
, const char* lpszFileOut, int nTimeout_ms, int nTimesToPrint = 1);

int InitConvertFile();
int PrepareConvertFile(const char* lpszFind, const char* lpszReplace);
int ConvertFile(const char* lpszFileIn, const char* lpszFileOut);

const char* GetLastError() { return m_szLastError; }

//SetOrientation funktioniert nicht für den standardprinter (global)!
//lösung: drucker 2mal installieren (1xhoch und 1xquer konfigurieren)
//static int SetOrientation(bool bLandscape);
...
};

void CTestDlg::OnDemo()
{
int nErr = 0;

CPrintSupport print;

//windows standarddrucker einstellen
nErr = print.SetStandardPrinter("FinePrint-Treiber (3.x)");

//SetOrientation funktioniert nicht für den standardprinter (global)!
//lösung: drucker 2mal installieren (1xhoch und 1xquer konfigurieren)
//static int SetOrientation(bool bLandscape);

//ersetzung initialisieren
nErr = print.InitConvertFile();

//zu ersetzende wertepaare
nErr = print.PrepareConvertFile(":FANR:", "4711");
nErr = print.PrepareConvertFile(":WINGDING:", "unserbarcode");
nErr = print.PrepareConvertFile(":FORMTEXT:", "\\plain\\f2\\fs20\\b\\i text mit formattierung \\plain\\f2\\fs20");

//erstellen der ausgabedatei vom template
nErr = print.ConvertFile("c:\\temp\\mydoc.rtf", "c:\\temp\\convmydoc.rtf");

//ausdrucken auf standarddrucker (timeout 60s 3mal drucken)
nErr = print.PrintFile("D:\\Programme\\Windows NT\\Zubehör\\WORDPAD.EXE", "/p \"%s\"", "c:\\temp\\convmydoc.rtf", 60*1000, 3);
}