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