<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Unterschiede zwischen Windows 2000 und Windows 98 beim Drucken!!]]></title><description><![CDATA[<p>Hallo,<br />
ich habe die untere Funktion, die ein Reportfile (reine Textdatei) auf einem Drucker ausgibt. Das Ganze funktioniert auch problemlos unter Windows 2000. Aber unter Windows 98 funktioniert es nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> . Wenn ich unter Windows 98 den Druckauftrag in eine Datei schreiben lasse, erhalte ich immer eine Datei mit der Grösse von 0 Bytes.</p>
<p>Hat jemand eine Idee, was unter Windows 98 geändert werden sollte, damit die Funktion wieder funktioniert. Der Drucker unter Windows 98 funkioniert, weil ich die Reportdatei mit einem normalen Editor problemlos drucken kann.</p>
<pre><code>// Drucken des Reportfiles 
// Parameter: 
// CString sDatei = Dateiname + Path der zu druckenden Reportdatei 
// Rückgabewerte: 
// 0 = Fehler frei 
// 1 = Fehler aufgetretten 
// 2 = Benutzerabbruch 
int Test::PrintReportFile(CString sDatei) 
{ 
 bool bPrintOk = false; 
 int iZeilen = 0; 
 int iMaxLength = 0; 
 CString sPrintFile = &quot;&quot;; 
 CString sMaxLength = &quot;&quot;; 

 //Datei öffnen 
 CStdioFile PrintFile; 
 do 
 { 
  if(PrintFile.Open(sDatei, CFile::modeRead,NULL)) 
  { 

   CString sTemp; 
   //Zeile einlesen 
   while(PrintFile.ReadString(sTemp)) 
   { 
    //Anzahl der Zeichen in länster Zeile ermitteln 
    if(iMaxLength &lt; sTemp.GetLength()) 
    { 
     iMaxLength = sTemp.GetLength(); 
     sMaxLength = sTemp; 
    } 
    //Anzahl der Zeilen ermitteln 
    iZeilen++; 
    //String anhängen 
    sPrintFile = sPrintFile + sTemp + &quot;\n&quot;; 
   } 

   // Ein CPrintDialog-Object konstruieren 
   CPrintDialog dlgPrint(FALSE,PD_ALLPAGES,this); 

   if (dlgPrint.DoModal()==IDOK) 
   { 
    //Den Drucker-DC vom Dialogfeld mit einem CDC-Objekt verbinden 
    CDC dcPrint; 
    dcPrint.Attach(dlgPrint.GetPrinterDC()); 

    // Eine DOCINFO-Struktur erzeugen und füllen 
    DOCINFO myPrintJob; 
    myPrintJob.cbSize = sizeof(myPrintJob); 
    myPrintJob.lpszDocName = &quot;MeinDruckAuftrag&quot;; 
    myPrintJob.lpszOutput = NULL; 
    myPrintJob.lpszDatatype = NULL; 
    myPrintJob.fwType = NULL; 

    // Ausdruck des Dokuments starten 
    if(dcPrint.StartDoc(&amp;myPrintJob) &gt;= 0) 
    { 
     //Eine Seite beginnen 
     dcPrint.StartPage(); 

     //Platzbedarf der längsten Zeile ermitteln 
     CSize Groesse = dcPrint.GetTextExtent(sMaxLength); 

     //Rechteck erstellen 
     //Maximale Zeilenlänge steht in Groesse.cx 
     //Maximale Dokumentlänge ist Groesse einer Zeile mal 
     //Anzahl der Zeilen (Groesse.cy*iZeilen) 
     CRect SeiteGroesse(0,0,Groesse.cx,Groesse.cy*iZeilen); 

     // Zeichnen beginnen 
     dcPrint.DrawText(sPrintFile,SeiteGroesse,DT_EXPANDTABS); 

     // Dokument schließen 
     dcPrint.EndDoc(); 
     // Drucken erfolgreich!! 
     bPrintOk = true; 
    } 
    else 
    { 
     if(MessageBox(&quot;Fehler beim drucken des Reports!\r\n&quot; 
      &quot;Nochmal versuchen?&quot;,&quot;DRUCKFEHlER&quot;, MB_ICONERROR | MB_YESNO) == IDNO) 
     { 
      //Funktion mit Fehler beenden 
      return 1; 
     } 
    } 

    //Druckergerätekontext löschen 
    dcPrint.DeleteDC(); 
   } 
   else 
   { 
    //Benutzer hat abgebrochen 
    return 2; 
   } 
  } 
  else 
  { 
   if(MessageBox(&quot;Fehler beim öffnen des Reports zum Drucken!\r\n&quot; 
    &quot;Nochmal versuchen?&quot;,&quot;DRUCKFEHlER&quot;, MB_ICONERROR | MB_YESNO) == IDNO) 
   { 
    //Funktion mit Fehler beenden 
    return 1; 
   } 
  } 
 }while(bPrintOk == false); 
 return 0; 
}
</code></pre>
<p>Danke<br />
Walter</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/54438/unterschiede-zwischen-windows-2000-und-windows-98-beim-drucken</link><generator>RSS for Node</generator><lastBuildDate>Mon, 01 Jun 2026 18:39:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/54438.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 07 Nov 2003 10:59:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unterschiede zwischen Windows 2000 und Windows 98 beim Drucken!! on Fri, 07 Nov 2003 10:59:30 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe die untere Funktion, die ein Reportfile (reine Textdatei) auf einem Drucker ausgibt. Das Ganze funktioniert auch problemlos unter Windows 2000. Aber unter Windows 98 funktioniert es nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> . Wenn ich unter Windows 98 den Druckauftrag in eine Datei schreiben lasse, erhalte ich immer eine Datei mit der Grösse von 0 Bytes.</p>
<p>Hat jemand eine Idee, was unter Windows 98 geändert werden sollte, damit die Funktion wieder funktioniert. Der Drucker unter Windows 98 funkioniert, weil ich die Reportdatei mit einem normalen Editor problemlos drucken kann.</p>
<pre><code>// Drucken des Reportfiles 
// Parameter: 
// CString sDatei = Dateiname + Path der zu druckenden Reportdatei 
// Rückgabewerte: 
// 0 = Fehler frei 
// 1 = Fehler aufgetretten 
// 2 = Benutzerabbruch 
int Test::PrintReportFile(CString sDatei) 
{ 
 bool bPrintOk = false; 
 int iZeilen = 0; 
 int iMaxLength = 0; 
 CString sPrintFile = &quot;&quot;; 
 CString sMaxLength = &quot;&quot;; 

 //Datei öffnen 
 CStdioFile PrintFile; 
 do 
 { 
  if(PrintFile.Open(sDatei, CFile::modeRead,NULL)) 
  { 

   CString sTemp; 
   //Zeile einlesen 
   while(PrintFile.ReadString(sTemp)) 
   { 
    //Anzahl der Zeichen in länster Zeile ermitteln 
    if(iMaxLength &lt; sTemp.GetLength()) 
    { 
     iMaxLength = sTemp.GetLength(); 
     sMaxLength = sTemp; 
    } 
    //Anzahl der Zeilen ermitteln 
    iZeilen++; 
    //String anhängen 
    sPrintFile = sPrintFile + sTemp + &quot;\n&quot;; 
   } 

   // Ein CPrintDialog-Object konstruieren 
   CPrintDialog dlgPrint(FALSE,PD_ALLPAGES,this); 

   if (dlgPrint.DoModal()==IDOK) 
   { 
    //Den Drucker-DC vom Dialogfeld mit einem CDC-Objekt verbinden 
    CDC dcPrint; 
    dcPrint.Attach(dlgPrint.GetPrinterDC()); 

    // Eine DOCINFO-Struktur erzeugen und füllen 
    DOCINFO myPrintJob; 
    myPrintJob.cbSize = sizeof(myPrintJob); 
    myPrintJob.lpszDocName = &quot;MeinDruckAuftrag&quot;; 
    myPrintJob.lpszOutput = NULL; 
    myPrintJob.lpszDatatype = NULL; 
    myPrintJob.fwType = NULL; 

    // Ausdruck des Dokuments starten 
    if(dcPrint.StartDoc(&amp;myPrintJob) &gt;= 0) 
    { 
     //Eine Seite beginnen 
     dcPrint.StartPage(); 

     //Platzbedarf der längsten Zeile ermitteln 
     CSize Groesse = dcPrint.GetTextExtent(sMaxLength); 

     //Rechteck erstellen 
     //Maximale Zeilenlänge steht in Groesse.cx 
     //Maximale Dokumentlänge ist Groesse einer Zeile mal 
     //Anzahl der Zeilen (Groesse.cy*iZeilen) 
     CRect SeiteGroesse(0,0,Groesse.cx,Groesse.cy*iZeilen); 

     // Zeichnen beginnen 
     dcPrint.DrawText(sPrintFile,SeiteGroesse,DT_EXPANDTABS); 

     // Dokument schließen 
     dcPrint.EndDoc(); 
     // Drucken erfolgreich!! 
     bPrintOk = true; 
    } 
    else 
    { 
     if(MessageBox(&quot;Fehler beim drucken des Reports!\r\n&quot; 
      &quot;Nochmal versuchen?&quot;,&quot;DRUCKFEHlER&quot;, MB_ICONERROR | MB_YESNO) == IDNO) 
     { 
      //Funktion mit Fehler beenden 
      return 1; 
     } 
    } 

    //Druckergerätekontext löschen 
    dcPrint.DeleteDC(); 
   } 
   else 
   { 
    //Benutzer hat abgebrochen 
    return 2; 
   } 
  } 
  else 
  { 
   if(MessageBox(&quot;Fehler beim öffnen des Reports zum Drucken!\r\n&quot; 
    &quot;Nochmal versuchen?&quot;,&quot;DRUCKFEHlER&quot;, MB_ICONERROR | MB_YESNO) == IDNO) 
   { 
    //Funktion mit Fehler beenden 
    return 1; 
   } 
  } 
 }while(bPrintOk == false); 
 return 0; 
}
</code></pre>
<p>Danke<br />
Walter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/388771</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/388771</guid><dc:creator><![CDATA[Walter.Wiedmann]]></dc:creator><pubDate>Fri, 07 Nov 2003 10:59:30 GMT</pubDate></item><item><title><![CDATA[Reply to Unterschiede zwischen Windows 2000 und Windows 98 beim Drucken!! on Mon, 10 Nov 2003 11:00:48 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe das Problem gefunden!</p>
<p>Im Codeabschnitt</p>
<pre><code>// Zeichnen beginnen  
dcPrint.DrawText(sPrintFile,SeiteGroesse,DT_EXPANDTABS);  

// Dokument schließen  
dcPrint.EndDoc();
</code></pre>
<p>Fehlt die Zeile dcPrint.PageEnd(); die vor dcPrint.EndDoc(); gehört.</p>
<p>Code sollte als folgendermassen aussehen:</p>
<pre><code>// Zeichnen beginnen  
dcPrint.DrawText(sPrintFile,SeiteGroesse,DT_EXPANDTABS);  

// Seite auswerfen
dcPrint.EndPage();

// Dokument schließen  
dcPrint.EndDoc();
</code></pre>
<p>Ade<br />
Walter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/390668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/390668</guid><dc:creator><![CDATA[Walter.Wiedmann]]></dc:creator><pubDate>Mon, 10 Nov 2003 11:00:48 GMT</pubDate></item></channel></rss>