Hallo erstmal,
ich würde gern in C++ per code Text auf einen Netzwerkdrucker ausdrucken und dabei den "CPrintDialog" übergehen. Es funktioniert schon bei Druckern, die an meinem Rechner angeschlossen sind, über Netzwerk allerdings nicht.
Habe die Foren schon durchsucht, auch schon code gefunden, es funktioniert aber wie gesagt noch nicht endgültig.
Entwicklungsumgebung: Microsoft Visual Studio 2005
Betriebssystem: Windows XP
hier mein code:
Kann mir dann noch jemand sagen wie ich im "LPPRINTER_INFO_2" die Eigenschaft "pDevMode->dmFormName" ändern kann?
Vielen Dank schon mal für die Hilfe,
Matze
ich würde gern in C++ per code Text auf einen Netzwerkdrucker ausdrucken und dabei den "CPrintDialog" übergehen. Es funktioniert schon bei Druckern, die an meinem Rechner angeschlossen sind, über Netzwerk allerdings nicht.
Habe die Foren schon durchsucht, auch schon code gefunden, es funktioniert aber wie gesagt noch nicht endgültig.
Entwicklungsumgebung: Microsoft Visual Studio 2005
Betriebssystem: Windows XP
hier mein code:
Code:
void PrintText::OnBnClickedButtonPrint2() { CDC* pDC = new CDC(); HDC hdcPrinter; hdcPrinter = CreateHandleForPrinter(TEXT("HP Color LaserJet 3600")); pDC->Attach(hdcPrinter); DOCINFO di; di.cbSize=sizeof(DOCINFO); di.lpszDocName=_T("Testdokument"); di.lpszOutput=NULL; di.lpszDatatype=NULL; di.fwType=0; pDC->StartDoc(&di); pDC->StartPage(); pDC->Rectangle(0,0,1350,500); pDC->TextOutW(5, 2, _T("Beliebiger Text")); int erg =pDC->EndPage(); if (erg>=0) pDC->EndDoc(); else pDC->AbortDoc(); pDC->Detach(); } HDC PrintText::CreateHandleForPrinter(LPWSTR printerName) const { HANDLE hPrinter; HDC* m_hDC = new HDC(); if ( ( ::OpenPrinter(printerName, &hPrinter, NULL ) ) ) { LPPRINTER_INFO_2 lpPrinterInfo2 = NULL; DWORD sizeOfPrintInfo = 0; DWORD cbReturned = 0; ::GetPrinter( hPrinter, 2, NULL, 0, &sizeOfPrintInfo ); lpPrinterInfo2 = (LPPRINTER_INFO_2)new char[sizeOfPrintInfo]; if ( ::GetPrinter( hPrinter, 2, (LPBYTE)lpPrinterInfo2, sizeOfPrintInfo, &cbReturned ) ) { *m_hDC = ::CreateDC( lpPrinterInfo2->pDriverName, lpPrinterInfo2->pPrinterName, NULL, lpPrinterInfo2->pDevMode ); } delete[] lpPrinterInfo2; lpPrinterInfo2=NULL; ClosePrinter( hPrinter ); } return *m_hDC; }
Vielen Dank schon mal für die Hilfe,
Matze
Comment