Device-Kontext / PrintDialog



  • Hallo Leute,
    ich möchte mit meiner Methode den DeviceContext ansprechen, der soll ein Formular (siehe Code) ausdrucken. Aber das "Gelumpe" will einfach nicht "funzen"!!!

    Der Drucker wird zwar angesprochen, ich kann auch den Drucker auswählen, aber ich sehe nur ein leeres weißes Blatt/Seitenansicht 😕 !

    Wer kann mir helfen?

    void CSendOrder::SendPrinter()   //Druckfunktion
    {
       CDC pDC;
       CPrintDialog    printDlg(FALSE);
       // ask the user to select a printer
        if (printDlg.DoModal() == IDCANCEL)
            return;
    
        // Attach a printer DC
        pDC.Attach(printDlg.GetPrinterDC());
        pDC.m_bPrinting = TRUE;
    
        // use Textmappingmode, that's easiest to map the fontsize
        pDC.SetMapMode(MM_TEXT);
    
       //pDC.SetMapMode(MM_LOMETRIC);            // Angaben in 1/10 mm
        // Initialise print document details
         DOCINFO di;
        ::ZeroMemory (&di, sizeof (DOCINFO));
        di.cbSize = sizeof (DOCINFO);
        // application title appears in the spooler view
       di.lpszDocName = "Hallo";
    
      :confused:    // Begin a new print job
        BOOL bPrintingOK = pDC.StartDoc( &di );
        CPrintInfo Info;
        int w = pDC.GetDeviceCaps(HORZRES);
        int h = pDC.GetDeviceCaps(VERTRES);
        Info.m_rectDraw.SetRect(0,0, w, h);    
       // Font setzen
       CFont font, *pAltFont;
       font.CreateFont(50, 0, 0, 0, 400, FALSE, FALSE, 0, 
                   ANSI_CHARSET, OUT_DEFAULT_PRECIS, 
                   CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, 
                   DEFAULT_PITCH | FF_SWISS, 
                   "Arial");
    
        pAltFont = (CFont*)(pDC.SelectObject(&font));       // Wichtig: alten Font merken
       pDC.SetTextAlign(TA_LEFT | TA_BOTTOM);             // Text linksbündig ausrichten
       pDC.BeginPath();
       pDC.TextOut(200, -100,"Kunden-Nr.:" +m_kdnr);
       pDC.TextOut(200, -150,""         +m_name);
       pDC.TextOut(200, -200,""         +m_kdnr);
       pDC.TextOut(200, -250,""          +m_strasse);
       pDC.TextOut(200, -350,""          +m_plz +m_wohnort);
       pDC.TextOut(200, -450,""          +m_telefon);
       pDC.TextOut(200, -500,""          +m_fax);
    
       pDC.TextOut(200, -1000,"weißichnicht gmbh");
       pDC.TextOut(200, -1050,"versandhandelsges.mbh");
       pDC.TextOut(200, -1100,"Postfach 1111");
       pDC.TextOut(200, -1200,"D-32423 Stemwede");
    
       pDC.TextOut(2000, -1000,"Bestell-Fax: 0180-525 17 16");
       pDC.TextOut(2000, -1050,"Bestell-Tel: 0180-525 17 16");
    
       pDC.TextOut(2300, -1000,"(dtms/ 12 ct./min)");
       pDC.TextOut(2300, -1050,"(dtms/ 12 ct./min)");
    
       pDC.TextOut(1500, -2000,"Bestellung");
       pDC.TextOut(1500, -2050,"__________");
    
       pDC.TextOut(200, -2050,"Menge");
       pDC.TextOut(300, -2050,"Best.-Nr.");
       pDC.TextOut(450, -2050,"Interp./Komp.");
       pDC.TextOut(1200, -2050,"Titel/Werk");
    
       pDC.SetTextAlign(TA_RIGHT | TA_BOTTOM);
       pDC.TextOut(2500, -2050,"Einzelpreis");
       pDC.TextOut(2800, -2050,"Gesamtpreis");
    
       pDC.SetTextAlign(TA_LEFT | TA_BOTTOM);
       pDC.TextOut(200, -2100,""+m_dynbody);
    
       pDC.TextOut(1500,-3000,"SUMME:");
       pDC.TextOut(2500,-3000,"EUR");
       pDC.TextOut(3200,-3000,""+m_gessumme);
    
       pDC.SetTextAlign(TA_LEFT | TA_BOTTOM);
       pDC.TextOut(200,-4500,"Anmerkung");
       pDC.TextOut(200,-4550,"Bitte schnellstmöglich liefern.");
       pDC.TextOut(200,-4600,"Vielen Dank.");
       pDC.TextOut(200,-4800,"Ich bestelle oben aufgeführte Artikel gegen Rechnung zu den aktuellen Versandbedingungen.");
       pDC.TextOut(200,-4950,"Datum:");
       pDC.TextOut(200,-5000,"________________________________________________________________________________________________________");
       pDC.TextOut(2300,-4950,"Unterschrift");
       pDC.EndPath();
    
       // end a print job
          if (bPrintingOK)
          pDC.EndDoc();
              else
              // abort job.
              pDC.AbortDoc();
    
       // restore font
       pDC.SelectObject(pAltFont);   // alten Font zurücksetzen
    
       // free font memory
        //CFont.DeleteProject();
    
       // detach the printer DC
        pDC.Detach();
    };
    

    [ Dieser Beitrag wurde am 18.10.2002 um 10:07 Uhr von Unix-Tom editiert. ]

    [ Dieser Beitrag wurde am 18.10.2002 um 10:08 Uhr von chappa70 editiert. ]



  • z.B.

    wo ist dein
    StartPage();
    EndPage();

    http://www.mut.de/media/buecher/VCPLUS6/data/start.htm



  • Hallo Unix-Tom,

    war das jetzt ne Frage oder eine Feststellung? Und wo bzw. an welcher Stelle baue ich deinen Vorschlag ein? (Sorry, aber ich bin Greenhorn im Programmieren!!!)

    Thanks


Anmelden zum Antworten