Drucken aus CFormView ohne Druckerdialog
-
Hallo!
Da ich mit den normalen Funktionen irgendwie nicht hingekommen bin, habe ich dieses Beispiel aus einem Buch abgetippert. Ich habe insgesamt das Forum, Codeguru und 2 Bücher durchstöbert - dafür ist das Ergebnis irgendwie mager...
void CKasseView::OnBtnFertig() { // Druckparameter festlegen PRINTDLG printDlg; ZeroMemory(&printDlg, sizeof(PRINTDLG)); printDlg.lStructSize = sizeof(PRINTDLG); printDlg.hwndOwner = m_hWnd; printDlg.hDevMode = NULL; printDlg.hDevNames = NULL; printDlg.Flags = PD_RETURNDC; printDlg.nCopies = 1; printDlg.nFromPage = 0xFFFF; printDlg.nToPage = 0xFFFF; printDlg.nMinPage = 1; printDlg.nMaxPage = 0xFFFF; if (PrintDlg(&printDlg) == TRUE) { // Druckjob anlegen DOCINFO docInfo; docInfo.cbSize = sizeof(DOCINFO); docInfo.lpszDocName = _T("AD3 Kasse"); docInfo.lpszOutput = (LPTSTR)NULL; docInfo.fwType = 0; // Druckjob beginnen StartDoc(printDlg.hDC, &docInfo); StartPage(printDlg.hDC); // Die Ausgaben machen // Druckjob beenden EndPage(printDlg.hDC); EndDoc(printDlg.hDC); // DC löschen DeleteDC(printDlg.hDC); } }
Leider ist es WinApi (ich poste auch nochmal in dem Forum), aber mit MFC habe ich es nicht hinbekommen und bin froh, dass ich schon mal eine leere Seite produzieren kann.
Jetzt möchte ich aber den Druckerdialog nicht anzeigen. Ohne den Aufruf funktioniert aber gar nix.
Und ich würde gerne den printDialog.hDC in einen CDC umwandeln. (Dann fühle ich mich "heimischer".)Danke für Ideen und Lesequellen!
-
Okay, hat sich glaubich erledigt - ich finde mit der Suche immer dann was, wenn ich schon gepostet habe...
So geht es:
// Druckjob anlegen DOCINFO docInfo; docInfo.cbSize = sizeof(DOCINFO); docInfo.lpszDocName = _T("AD3 Kasse"); docInfo.lpszOutput = (LPTSTR)NULL; docInfo.fwType = 0; CDC dc; CPrintDialog dlg(FALSE); dlg.GetDefaults(); dc.Attach(dlg.GetPrinterDC()); dc.StartDoc(&docInfo); dc.StartPage(); dc.EndPage(); dc.EndDoc();
Fehlt da noch was? BOA hatte da noch einen Befehl (ResetDC) drunter, aber der war doch blos wegen Querformat, oder?