xellon Geschrieben 5. November 2002 Geschrieben 5. November 2002 Hi! Ich brauche wieder mal euere hilfe. Hier erstmal mein quelltext: CPrintDialog dlg(FALSE); int ok; ok = dlg.DoModal(); if(ok == IDOK) { CDC dc; dc.Attach(dlg.GetPrinterDC()); dc.StartDoc("MyDoc"); int MaxX = dc.GetDeviceCaps(HORZRES); int MaxY = dc.GetDeviceCaps(VERTRES); //hier gebe ich meinen text aus dc.TextOut(MaxX/60,MaxY/45,"Test"); dc.EndDoc(); DeleteDC(dc.Detach()); } [/PHP] Ich will das beim drucken die schrifftgröße immer gleich ist. Beim drucken zeichne ich auch eine Tabelle und in der tabelle schreibe ich die daten. Wenn die schrifftgröße dann größer ist als ich will sieht das ganze nicht gut aus. Weis jemand wie ich dem Drucker 'sagen' kann eine bestimmte Schrifftgröße zu benutzen?
Guybrush Threepwood Geschrieben 5. November 2002 Geschrieben 5. November 2002 Hi, TextOut benutz immer die aktuell ausgewählte Schrift. Um eine Andere Schrift zu wählen mußt du SelectObject benutzen, ich weiß aber nicht ob das in den MFC genauso funktioniert, einfach mal ausprobieren. Gruß Guybrush
Klotzkopp Geschrieben 5. November 2002 Geschrieben 5. November 2002 Beispiel: CFont font; font.CreateFont( 80, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, VARIABLE_PITCH, L"Arial" ); dc.SelectObject( font ); Die 80 ist hier ein Beispiel, du musst mit den Werten ein wenig experimentieren. Falls mehrere Druckauflösungen unterstützt werden sollen, solltest Du beim ersten Parameter von CreateFont noch den Wert von dc.GetDeviceCaps( LOGPIXELSY ) berücksichtigen.
xellon Geschrieben 5. November 2002 Autor Geschrieben 5. November 2002 Es funktioniert! Danke Guybrush und Klotzkopp!
xellon Geschrieben 5. November 2002 Autor Geschrieben 5. November 2002 ...es funktioniert doch nicht richtig. Originally posted by Klotzkopp CFont font; font.CreateFont( 80, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, VARIABLE_PITCH, L"Arial" ); dc.SelectObject( font ); Wenn ich die höhe auf 80 setze dann sieht dass nicht auf alle Drucker gleich. Es muss eine möglichkeit geben die schrifft auf alle Drucker gleich aussehen zu lassen. Ich hoffe jemand kann mir helfen!
Klotzkopp Geschrieben 5. November 2002 Geschrieben 5. November 2002 Hast Du meinen Hinweis mit LOGPIXELSY ausprobiert? Es könnte an unterschiedlichen Auflösungen der Drucker liegen.
xellon Geschrieben 5. November 2002 Autor Geschrieben 5. November 2002 ...ups!!! Sorry, ich habe deinen hinweis übersehen und kann es leider erst morgen ausprobieren. Kann sein dass das die lösung für meinen problem ist. Danke nochmal!!!
xellon Geschrieben 6. November 2002 Autor Geschrieben 6. November 2002 Originally posted by Klotzkopp Falls mehrere Druckauflösungen unterstützt werden sollen, solltest Du beim ersten Parameter von CreateFont noch den Wert von dc.GetDeviceCaps( LOGPIXELSY ) berücksichtigen. Auf einen Drucker hatte pixelY denn wert 200, auf einen zweiten 1200 und auf einen dritten 180. Ich habe es so: int pixelY = dc->GetDeviceCaps(LOGPIXELSY); CFont *fon = new CFont(); fon->CreateFont(pixelY/6,0,0,0,FW_DONTCARE,0,0,0,ANSI_CHARSET,OUT_TT_PRECIS,CLIP_TT_ALWAYS, PROOF_QUALITY, FIXED_PITCH, NULL); [/PHP] versucht aber es funktioniert nicht. Hast vieleicht einen kleinen beispiel für mich?
Guybrush Threepwood Geschrieben 7. November 2002 Geschrieben 7. November 2002 Ich sowas in der Art mal ohne MFC gemacht, und hab dann nachdem der Benutzer den Drucker ausgewählt hatte mir die aktuelle Auflösung (also die DPI Zahl) zurückgeben lassen und dann das in meine Rechnungen miteinbezogen. Das ging damals nachdem aufruf des PrintDLG() über die DEVMODE Strukter, aber wie gesagt das war ohne MFC. Vielleicht hilfts dir ja trotzdem. Gruß Guybrush
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden