Drucken



  • okay, sorry habs wo falsch eingegeben 😉
    Kann das sein, dass das unter MFC gar nicht funktioniert?
    Von irgendwelchen includes steht da auch nichts,



  • Doch, lies es nochmal durch und achte besonders auf das Wort "Requirements" ziemlich weit unten und die Buchstabenkombination ".h".

    Bei letzterem hilft dir auch die Tastenkombination Strg+F. 😉



  • yup, danke, ist klar 🤡



  • hi

    wie kann ich Zeichen abschneiden
    z.B steht in de, String str jetzt z.B.
    "\\A\B\DRUCKERNAME"

    Ich möchte aber nur das DRUCKERNAME in dem String drin steht
    Also immer bis zum ersten \ von rechts

    kann mir da jemand bitte helfen 🙂
    vielen dank



  • Das müsste so gehen

    int nPos = str.ReverseFind( '\\'); 
    str = str.Mid(1, pos-1);
    

    Gruß
    :: NoName ::



  • :: NoName :: schrieb:

    int nPos = str.ReverseFind( '\\'); 
    str = str.Mid(1, pos-1);
    

    Schreibfehler, richtige Version:

    int nPos = str.ReverseFind( '\\'); 
    str = str.Mid(1, nPos-1);
    

    Denke aber, dass du das selbst gemerkt hast 😉

    MfG me



  • Hmm, stimmt. Manchmal bin ich nicht ganz bei der Sache... 😃

    Gruß
    :: NoName ::



  • hi

    klasse, vielen Dank für eure Hilfe 🙂 👍



  • wie kann ich Zeichen abschneiden
    z.B steht in de, String str jetzt z.B.
    "\\A\DRUCKERNAME"

    Ich möchte aber nur das DRUCKERNAME in dem String drin steht
    Also das \\A\ soll wegfallen
    SO wollt ich das eigentlich

    wenn so aussieht:

    int nPos = str.ReverseFind( '\\'); 
    str = str.Mid(1, nPos-1);
    

    Dann sieht der String so aus "\A"
    Aber ich möcht nur DRUCKERNAME drin stehen haben
    WIe würde das dann aussehen
    danke 🙂

    wenn ich das schreibe : int nPos = str.ReverseFind( '\');
    funktioniert's nicht



  • Du musst doch nur andere Positionen nehmen. 🙄

    In Zahlen ausgedrückt:
    Nicht
    (0, 4) // Startzeichen, Anzahl
    sondern
    (4, 11)

    Auf die 11 kommst du mit der Funktion GetLength und etwas nachdenken. 😉



  • aso ist das, jetzt gehts 😉



  • Hallo,

    weiß jemand wie man zeilenweise Drucken kann?

    Also das hier hab ich hier mal gefunden: Aber ich glaub das ist nicht das richtige oder?

    CPrintDialog dlgPrint(FALSE,PD_ALLPAGES,this); 
        CString printAusgabe; 
    
        //AU zeilenweise auslesen 
        //sofort jede Zeile drucken 
    
        if (dlgPrint.DoModal()==IDOK) 
        { 
    
    		CDC dcPrint; 
    		dcPrint.Attach(dlgPrint.GetPrinterDC()); 
    
    		DOCINFO myPrintJob; 
    		myPrintJob.cbSize = sizeof(myPrintJob); 
    		myPrintJob.lpszDocName = "Drehen32: Arbeitsunterweisung drucken"; 
    		myPrintJob.lpszOutput = NULL; 
    		myPrintJob.lpszDatatype = NULL; 
    		myPrintJob.fwType = NULL; 
    
    		if (dcPrint.StartDoc(&myPrintJob)>=0) 
    		{ 
    
    			dcPrint.StartPage(); 
    
    			//Schleife zum AU-file auslesen 
    
    			string filename=AU_File_Name; 
    
    			FILE *aufile; 
    			char c; 
    			string s,a; 
    			CString printAusgabe; 
    			int linecnt=0; 
    
    			string au_file=AU_Pfad; 
    			au_file.append(AU_File_Name); 
    			aufile = fopen(au_file.c_str(),"r"); 
    			while(!feof(aufile)) 
    			{ 
    				c=fgetc(aufile); 
    				if(c=='\n') 
    				{ 
    					//s.append(" \n\r"); 
    					printAusgabe=s.c_str(); 
    					printAusgabe.OemToAnsi(); 
    					dcPrint.TextOut(0,linecnt,printAusgabe); 
    					linecnt+=100; 
    					s=""; 
    				} 
    				else 
    				{ 
    					a=c; 
    					s.append(a); 
    				} 
    
    				if(linecnt>(66*100)) 
    				{ 
    					// Seite auswerfen 
    					dcPrint.EndPage(); 
    
    					linecnt=0; 
    
    					dcPrint.StartPage(); 
    
    			} 
    
        } 
    
        printAusgabe=s.c_str(); 
        printAusgabe.OemToAnsi(); 
        //dcPrint.DrawText(printAusgabe,rect,DT_WORDBREAK); 
    
        // Seite auswerfen 
        dcPrint.EndPage(); 
    
        // Dokument schließen 
        dcPrint.EndDoc(); 
        } 
    
        // Druckergerätekontext löschen 
        dcPrint.DeleteDC(); 
        }
    


  • hi

    Geht soetwas?
    Es soll eine Zeile oder Text
    gedruckt werden und dann angehalten werden .Sprich die
    Seite soll nicht durchgezogen werden .
    Später kommt dann vielleicht nochmal eine Zeile aber
    dann einen bestimmten Absatz drunter (das geht
    automatisch mit so einem Plotter)

    Aber keine Ahnung ob das überhaupt möglich ist 😕
    Jemand ne Ahnung?

    Merci



  • hi
    nochmal eine Frage:

    Drucken tu ich so, hab ich ja hier in der "Suche" gefunden:

    //Drucken
     			CPrintDialog dlgPrint(FALSE,PD_ALLPAGES,this); 
     			UpdateData(TRUE); 
     			if (dlgPrint.DoModal()==IDOK) 
     			{ 
     			CDC dcPrint; 
     			dcPrint.Attach(dlgPrint.GetPrinterDC()); 
     			DOCINFO myPrintJob; 
     			myPrintJob.cbSize = sizeof(myPrintJob); 
    			myPrintJob.lpszDocName = "PrintingTest"; //Name des Druckauftrages, wie er im Spooler erscheint
     			myPrintJob.lpszOutput = NULL; 
    			myPrintJob.lpszDatatype = NULL; 
     			myPrintJob.fwType = NULL; 
    			if (dcPrint.StartDoc(&myPrintJob)>=0) 
    			{ 
     				dcPrint.StartPage(); 
     				RECT rctA; 
     				rctA.left = 20;   
     				rctA.top = 30;   
     				rctA.right  = 800;   
    				rctA.bottom = 800;; 
    
     				dcPrint.DrawText(m_strText, &rctA, DT_LEFT); 
     				dcPrint.EndPage(); 
     				dcPrint.EndDoc(); 
     			} 
     			dcPrint.DeleteDC(); 
     			}
    

    Wenn ich nun auf mein "Drucken" Button drück, wird immer das "Drucker auswählen" Menü hochgepoppt.

    Weiß jemand wie man das ausschalten kann. Es soll einfach gedruckt werden , wie im Word,wenn man in der Symbolleiste auf den Drucker klickt

    Vielen Dank!!



  • Du hast die ganzen Druckbefehle in eine if-Abfrage eingepackt die mit der DoModal() - Funktion des PrintDialogs aufgerufen wird. Lass mal das DoModal() bzw die if-Abfrage weg.


Anmelden zum Antworten