Drckerausgabe



  • Hallo.

    Ich wollte in auf einem Drucker unterschiedliche Schriften und Schriftstärken ausgeben.
    Habe in der Hilfe nichts passendes gefunden.Weiß jemand, von euch wie man das realisieren kann.

    Heir mein Druckaufruf:

    CPrintDialog *printDlg =
               new CPrintDialog(FALSE, PD_ALLPAGES | PD_RETURNDC, NULL);
    
        // Display Windows print dialog box.
           printDlg->DoModal();
    
           HDC    hdcPrn ;
    
           // Obtain a handle to the device context.
           hdcPrn = printDlg->GetPrinterDC();
           if (hdcPrn != NULL)
           {
                CDC *pDC = new CDC;
                pDC->Attach (hdcPrn);   // attach a printer DC
    
                pDC->StartDoc("test");  // begin a new print job
                                       // for Win32 use
                                       // CDC::StartDoc(LPDOCINFO) override
    
                pDC->Ser
                //SetPrintAlign(pDC, hdcPrn);// Set the printing alignment
                char   pbuf[100] = "Hello World.";
                pDC->StartPage();          // begin a new page
    
                pDC->TextOut(10, 10, pbuf);// write the string in pbuf
                pDC->EndPage();            // end a page
    
                pDC->EndDoc();             // end a print job
    
                pDC->Detach();             // detach the printer DC
                delete pDC;
             }
    
             delete printDlg;
    

    Cu
    Oli



  • Weiß den niemand, wie man das machen kann???

    Cu
    Oli



  • Hi,

    kannst Du es mal ein bißchen genauer beschreiben.
    Hast Du ein Dokument auf dem sich die die verschieden Schriften befinden oder willst Du den Text direkt auf den Drucker schieben und vorher sagen welche Schriftgröße und -art das gedruckt werden soll.
    Dialoganwendung oder SDI/MDI ?

    Ich habs gerade gesehen, Text direct auf Drucker.
    Dann mußt Du dir verschiedene Fonts anlegen und mit pDC->SelectObject(font) die entsprechende Schrift auswählen bevor du es auf den Drucker schiebst.

    Aufpassen mußt Du nur dabei, das verschieden Drucker die Schrift und Anordnung verschieden interpretieren. Um das unabhängig zu machen gibt es eine Möglichkeit, aber da müßte ich erstmal nachsehen, wenn's Dich interessiert.

    Manuela



  • Original erstellt von Oli_1977:
    **Hallo.

    Ich wollte in auf einem Drucker unterschiedliche Schriften und Schriftstärken ausgeben.
    Habe in der Hilfe nichts passendes gefunden.Weiß jemand, von euch wie man das realisieren kann.

    Heir mein Druckaufruf:

    CPrintDialog *printDlg =
               new CPrintDialog(FALSE, PD_ALLPAGES | PD_RETURNDC, NULL);
    
        // Display Windows print dialog box.
           printDlg->DoModal();
    
           HDC    hdcPrn ;
        
           // Obtain a handle to the device context.
           hdcPrn = printDlg->GetPrinterDC();
           if (hdcPrn != NULL)
           {
                CDC *pDC = new CDC;
                pDC->Attach (hdcPrn);   // attach a printer DC
    
                pDC->StartDoc("test");  // begin a new print job
                                       // for Win32 use
                                       // CDC::StartDoc(LPDOCINFO) override
    
                pDC->Ser //<----------HÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ????????????????
                //SetPrintAlign(pDC, hdcPrn);// Set the printing alignment
                char   pbuf[100] = "Hello World.";
                pDC->StartPage();          // begin a new page
               
                pDC->TextOut(10, 10, pbuf);// write the string in pbuf
                pDC->EndPage();            // end a page
    
                pDC->EndDoc();             // end a print job
    
                pDC->Detach();             // detach the printer DC
                delete pDC;
             }
    
             delete printDlg;
    

    Cu
    Oli**

    Fonts musst du erstellen und dann mit SetFont auswählen bevor du TextOut sagst...



  • Hallo Manuela.

    Bei mir handelt es sich um eine Dialogfeldbasierende Anwendung.
    Meine Daten, die ich ausdrucken möchte, befinden sich in einem struct.
    Daher muß ich wohl meine Blattaufteilung selber gestalten.

    Wäre echt super, wenn D mal nach schauen könntest. Finde nichts zu diesem Thema, was mir weiter hilft.

    @MaSTaH

    pDC->Ser //<----------HÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ????????????????
    Ist versehentlich rein gerutscht. War gerade am rumprobieren. 🙂

    Cu
    Oli

    [ Dieser Beitrag wurde am 22.01.2003 um 13:29 Uhr von Oli_1977 editiert. ]



  • Guten Morgen,

    also ich habs dir ja im groben schon geschrieben.
    In der OnDraw-Funktion müßtest Du zum unabhängig machen noch folgendes:

    pDC->SetMapMode(MM_ANISOTROPIC); 
            pDC->SetWindowExt(1440,1440);
            pDC->SetViewportExt(pDC->GetDeviceCaps(LOGPIXELSX),pDC->GetDeviceCaps(LOGPIXELSY));
    

    einfügen.

    Schriften werden so angelegt:

    CFont myFont;
        myFont.CreateFont(15,8,0,0,600,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,
                                        CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FIXED_PITCH | FF_MODERN,"Courier New");
    

    und bevor Du den Text rausschiebst mußt Du dir die alte Schrift merken und die neue nehmen:

    CFont* pOldFont = pDC->SelectObject(&myFont);
    

    Ansonsten hab ich das Drucken aus einer Dialogfeldanwendung hier schon mal gepostet gehabt. Es müßte also auch die Suchfunktion helfen

    Manuela



  • Morgen.

    Danke, werde mal danach suchen und Deinen Code ausprobieren.

    Cu
    Oli


Anmelden zum Antworten