Drucken mit MM_LOMETRIC



  • Hallo,

    ich wollte mal ein bisschen das Drucken probieren:

    #include <windows.h>
    #include <commdlg.h>
    
    int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
    {
    
    	PRINTDLG pd;
    
    	pd.lStructSize=sizeof(PRINTDLG);
    	pd.hwndOwner=NULL;
    	pd.hDevMode=NULL;
    	pd.hDevNames=NULL;
    	pd.hDC=NULL;
    	pd.Flags=PD_ALLPAGES|PD_COLLATE|PD_RETURNDC|PD_NOSELECTION;
    	pd.nFromPage=0;
    	pd.nToPage=0;
    	pd.nMinPage=0;
    	pd.nMaxPage=0;
    	pd.nCopies=1;
    	pd.hInstance=hInstance;
    	pd.lCustData=0L;
    	pd.lpPrintTemplateName=NULL;
    	pd.lpSetupTemplateName=NULL;
    	pd.lpfnPrintHook=NULL;
    	pd.lpfnSetupHook=NULL;
    	pd.hPrintTemplate=NULL;
    	pd.hSetupTemplate=NULL;
    
    	if(PrintDlg(&pd))
    	{
    
    		SetMapMode(pd.hDC,MM_LOMETRIC);
    
    		DOCINFO di={sizeof(DOCINFO),"Das ist ein Druckobjekt"};
    
    		if(StartDoc(pd.hDC,&di)>0)
    		{
    			if(StartPage(pd.hDC)>0)
    			{
    
    				Rectangle(pd.hDC,200,200,800,800);
    				TextOut(pd.hDC,100,800,"TEXT TEXT",9);
    
    				if(EndPage(pd.hDC)>0)
    					EndDoc(pd.hDC);
    			}
    		}
    	}
    
    	return 0;
    }
    

    Dazu wollte ich logische Koordinaten verwenden, damit es auf jeden Drucker gleich aussieht und habe MM_LOMETRIC genommen. Allerdings zieht er das Blatt nur durch ohne irgendetwas draufzudrucken. Wenn ich dagegen MM_TEXT nehme, geht es, aber halt mit Pixeln, was ich nicht will. Kann mir jemand helfen? 😞

    edit: sry, hab mich im Forum verguckt, bitte ins WinAPI schieben.



  • Dieser Thread wurde von Moderator/in Jansen aus dem Forum Borland C++ Builder (VCL/CLX) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • MM_LOMETRIC
    Each logical unit is mapped to 0.1 millimeter. Positive x is to the right; positive y is up.

    MM_TEXT
    Each logical unit is mapped to one device pixel. Positive x is to the right; positive y is down.

    Ich denke, du musst folglich negative Y-Werte verwenden - wenn du den Ursprung nicht an das Ende der Seite verschiebst 🙂



  • Achso, jetzt gehts erstmal, thx 😉

    Aber was ich noch nicht verstehe ist, warum eine Schrift auf dem Bildschrim größer als auf dem Drucker erscheint. Das Maß ist doch angeblich "logisch" bei der Schrift (Punkt oder?). Ergo müsste es doch dann WYSIWYG sein, ist es aber nicht 😞


Anmelden zum Antworten