Text drucken unter Angabe der Position



  • Hallo zusammen,

    durch die Suche habe ich nicht gefunden, was ich brauche, oder ich habe es übersehen.
    Ich möchte einen Text drucken und dabei angeben, dass dieser z.B. 25mm vom oberen Rand und 30mm vom linken Rand gedruckt wird - und zwar in der

    Schriftgröße von 12 in der Schriftart Times New Roman. Das Problem dabei ist allerdings die Umrechnung auf die jeweilige Auflösung, usw...

    Vielleicht hat ja jemand eine Idee oder einen guten Link.

    Hier ist meine kleine Testfunktion:

    struct tPrint
    {
      PRINTDLG pd; 
      DOCINFO di;
      HWND hwndPrint; 
      int iAnzKopien;
      int iFromPage;
      int iToPage;
      string sSpoolname;
    };
    
      ZeroMemory(&MyPrint.pd, sizeof(MyPrint.pd));
      MyPrint.pd.lStructSize = sizeof(MyPrint.pd);
      MyPrint.pd.hwndOwner   = MyPrint.hwndPrint;
      MyPrint.pd.hDevMode    = NULL;     // Don't forget to free or store hDevMode
      MyPrint.pd.hDevNames   = NULL;     // Don't forget to free or store hDevNames
      MyPrint.pd.Flags       = PD_USEDEVMODECOPIESANDCOLLATE | PD_RETURNDC
                     | PD_ALLPAGES | PD_HIDEPRINTTOFILE | PD_NOSELECTION | PD_PRINTSETUP | !PD_NONETWORKBUTTON;
      MyPrint.pd.nCopies     = MyPrint.iAnzKopien;
      MyPrint.pd.nFromPage   = MyPrint.iFromPage;
      MyPrint.pd.nToPage     = MyPrint.iToPage;
      MyPrint.pd.nMinPage    = 1;
      MyPrint.pd.nMaxPage    = MyPrint.iToPage;
      pd.hInstance = MyPrint.hInst;
    
      if (PrintDlg(&MyPrint.pd)==TRUE) 
      {
        memset(&MyPrint.di, 0, sizeof(DOCINFO));
        MyPrint.di.cbSize	= sizeof(DOCINFO);
        MyPrint.di.lpszDocName	= MyPrint.sSpoolname.c_str();
        MyPrint.di.lpszOutput = (LPTSTR) NULL;
        MyPrint.di.fwType = 0;
    
        StartDoc(MyPrint.pd.hDC, &MyPrint.di);
        StartPage(MyPrint.pd.hDC);
    
        //DRUCKEN
        TextOut(MyPrint.pd.hDC, x, y, "test", 4);
    
        EndPage(MyPrint.pd.hDC);
        EndDoc(MyPrint.pd.hDC);  // Dokument wird geschlossen
        DeleteDC(MyPrint.pd.hDC);
    
        if (MyPrint.pd.hDevMode != NULL) GlobalFree(MyPrint.pd.hDevMode);
        if (MyPrint.pd.hDevNames != NULL) GlobalFree(MyPrint.pd.hDevNames);
    
      }
    

    x/y sollten dann die Millimeter-Angaben sein, die es auf die verschiedenen Druckerauflösungen umzurechnen gilt. Aber ich weiß nicht, wie.

    Danke schon einmal.
    Steffen


Anmelden zum Antworten