<?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[OnFilePrint()]]></title><description><![CDATA[<p>Hallo,</p>
<p>meine Anwendung soll alle Parameter, die im Document enthalten sind ausdrucken.<br />
Ich habe eine Klasse CPrintView von CView abgeleitet, in der ich die zum drucken benötigten Methoden implementiere.<br />
Dann rufe ich die Methode OnFilePrint() auf, es öffnet sich der Druckdialog. Ich bestätige mit Ok, und ich bekomme eine Zugriffsverletzung in</p>
<pre><code class="language-cpp">GetWindowText(strTitle);
</code></pre>
<p>Der Zeiger auf mein Document ist Null. Weiß jemand warum ich keinen gültigen Zeiger auf mein Document bekomme?</p>
<pre><code class="language-cpp">// set up document info and start the document printing process
		CString strTitle;
		CDocument* pDoc = GetDocument();
		if (pDoc != NULL)
			strTitle = pDoc-&gt;GetTitle();
		else
			GetParentFrame()-&gt;GetWindowText(strTitle);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/189545/onfileprint</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 17:08:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/189545.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 14 Aug 2007 11:12:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to OnFilePrint() on Tue, 14 Aug 2007 11:12:15 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>meine Anwendung soll alle Parameter, die im Document enthalten sind ausdrucken.<br />
Ich habe eine Klasse CPrintView von CView abgeleitet, in der ich die zum drucken benötigten Methoden implementiere.<br />
Dann rufe ich die Methode OnFilePrint() auf, es öffnet sich der Druckdialog. Ich bestätige mit Ok, und ich bekomme eine Zugriffsverletzung in</p>
<pre><code class="language-cpp">GetWindowText(strTitle);
</code></pre>
<p>Der Zeiger auf mein Document ist Null. Weiß jemand warum ich keinen gültigen Zeiger auf mein Document bekomme?</p>
<pre><code class="language-cpp">// set up document info and start the document printing process
		CString strTitle;
		CDocument* pDoc = GetDocument();
		if (pDoc != NULL)
			strTitle = pDoc-&gt;GetTitle();
		else
			GetParentFrame()-&gt;GetWindowText(strTitle);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1344201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344201</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Tue, 14 Aug 2007 11:12:15 GMT</pubDate></item><item><title><![CDATA[Reply to OnFilePrint() on Tue, 14 Aug 2007 12:03:12 GMT]]></title><description><![CDATA[<p>Wie hast Du den View erzeugt? Wieso hast Du nicht in OnPrint/OnDraw des entsprechenden Views die ganze Druck Methodik implementiert.<br />
Ein View muss entsprechend erzeugt werden und mit dem CDocument verbunden werden. Zudem braucht der View ein CFrameWnd als Parent.</p>
<p>Einen neuen View nur für den Druck zu erzeugen halte ich nicht für sinnreich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1344246</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344246</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 14 Aug 2007 12:03:12 GMT</pubDate></item><item><title><![CDATA[Reply to OnFilePrint() on Wed, 15 Aug 2007 06:49:47 GMT]]></title><description><![CDATA[<p>Martin Richter schrieb:</p>
<blockquote>
<p>Wie hast Du den View erzeugt?</p>
</blockquote>
<p>Ich habe den View mit dem Klassenassitenten von VS <a href="http://2003.NET" rel="nofollow">2003.NET</a> erzeugt.</p>
<p>Nun dann werde ich jetzt mal versuchen den Druckvorgang in meiner FormView in OnDraw zu implementieren.<br />
Wie geh ich am besten vor?<br />
Ich lege mir zuerst ein DC-Objekt und eine PrintInfo struktur an. Dann implementiere ich den MFC-code aus OnFilePrint() in der Methode OnDraw().<br />
Könnte das so funktionieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1344729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344729</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Wed, 15 Aug 2007 06:49:47 GMT</pubDate></item><item><title><![CDATA[Reply to OnFilePrint() on Wed, 15 Aug 2007 07:12:09 GMT]]></title><description><![CDATA[<p>Nein! Du musst nicht in OnPrint den Onfileprint Code implementieren.</p>
<p>IMHO langt es wenn die Basis Funktion von OnFilePrint aufgerufen wird. Du musst nur OnPrint implementieren in dem der eigentliche Druckvorgang abläuft. Diese Funktion wird vom FRamework im View verwendet.<br />
OnPrepareDC und was sonst zum Drucken gehört natürlich auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1344738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344738</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 15 Aug 2007 07:12:09 GMT</pubDate></item><item><title><![CDATA[Reply to OnFilePrint() on Wed, 15 Aug 2007 07:49:10 GMT]]></title><description><![CDATA[<p>Das habe ich so auch schon mal probiert.<br />
Ich rufe OnFilePrint() auf, und das Framework ruft dann die Methoden OnPreparePrinting(), OnPrepareDC() usw. auf.<br />
Mein Problem war das wenn die Methode OnPreparePrinting() aufgerufen wird die Methode CView::OnPreparePrinting() aufgerufen wird und nicht die von mir überschriebene Methode CMyView::OnPreparePrinting(). IMHO liegt es vielleicht daran das mein View von CFormView abgeleitet ist und nicht von CView.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1344757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344757</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Wed, 15 Aug 2007 07:49:10 GMT</pubDate></item><item><title><![CDATA[Reply to OnFilePrint() on Wed, 15 Aug 2007 09:01:25 GMT]]></title><description><![CDATA[<p>Hast Du auch sicherlich OnPreparePrnting mit der richtigen Signatur belegt?</p>
<pre><code class="language-cpp">virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
</code></pre>
<p>Diese Funktion ist virtuell und muss aus Deiner Klasse aufgerufen werden!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1344800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344800</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 15 Aug 2007 09:01:25 GMT</pubDate></item><item><title><![CDATA[Reply to OnFilePrint() on Wed, 15 Aug 2007 09:38:37 GMT]]></title><description><![CDATA[<p>Die Signatur stimmt! Du meinst ich muss sie also aus CMyFormView aufrufen?<br />
Wird sie ja aber nicht, sie wird ja aus der Methode OnFilePrint() aufgerufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1344827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344827</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Wed, 15 Aug 2007 09:38:37 GMT</pubDate></item><item><title><![CDATA[Reply to OnFilePrint() on Wed, 15 Aug 2007 12:00:20 GMT]]></title><description><![CDATA[<p>Eben! Die Funktion ist virtuell und wird vom Framework aufgerufen sofern eben diese Klasse OnPreparePrinting überschreibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1344958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344958</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 15 Aug 2007 12:00:20 GMT</pubDate></item><item><title><![CDATA[Reply to OnFilePrint() on Wed, 15 Aug 2007 13:48:29 GMT]]></title><description><![CDATA[<p>Nee funktioniert einfach nicht, entweder steh ich total auf dem Schlauch oder das Drucken funktioniert mit einer FormView so nicht.<br />
Hier mal mein Code:</p>
<pre><code class="language-cpp">void CMyFormView::Print()
{	
	CMyFormView::OnFilePrint();
}
</code></pre>
<pre><code class="language-cpp">BOOL CMyFormView::OnPreparePrinting(CPrintInfo* pInfo)
{
	return CMyFormView::DoPreparePrinting(pInfo);
}
</code></pre>
<pre><code class="language-cpp">virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
</code></pre>
<p>OnFilePrint() sollte die überschriebene Methode CMyFormView::OnPreparePrinting(CPrintInfo* pInfo) aufrufen, aber sie ruft die Methode CView::OnPreparePrinting(CPrintInfo* pInfo) auf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345081</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Wed, 15 Aug 2007 13:48:29 GMT</pubDate></item><item><title><![CDATA[Reply to OnFilePrint() on Wed, 15 Aug 2007 14:28:43 GMT]]></title><description><![CDATA[<p>Verstehe ich nicht. Ein mit dem Wizard erzeugtes Sample arbeitet korrekt...<br />
Kann ich in keiner Weise nachvollziehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345112</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 15 Aug 2007 14:28:43 GMT</pubDate></item><item><title><![CDATA[Reply to OnFilePrint() on Wed, 15 Aug 2007 14:52:02 GMT]]></title><description><![CDATA[<p>Hmm??<br />
Wie hast du das Sample erzeugt?<br />
Wenn ich die Ansichtsklasse von CView ableite funktionierts, aber mit meiner CFormView leider nicht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345132</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Wed, 15 Aug 2007 14:52:02 GMT</pubDate></item><item><title><![CDATA[Reply to OnFilePrint() on Wed, 15 Aug 2007 16:06:18 GMT]]></title><description><![CDATA[<p>Ich habe eine normale SDI Anwednung erzeugt mit einem normalen CView...<br />
Wenn man ein CFormView hat wird hier das Drucken verhindert.</p>
<p>Aber die grundsätzliche Technik mit den entsprechedenden On...Print Funktionen lässt sich damit prima testen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345170</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 15 Aug 2007 16:06:18 GMT</pubDate></item><item><title><![CDATA[Reply to OnFilePrint() on Thu, 16 Aug 2007 06:41:08 GMT]]></title><description><![CDATA[<p>Martin Richter schrieb:</p>
<blockquote>
<p>Wenn man ein CFormView hat wird hier das Drucken verhindert.</p>
</blockquote>
<p>Also kann ich mit dieser Methode mein CFormView nicht drucken?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345479</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Thu, 16 Aug 2007 06:41:08 GMT</pubDate></item><item><title><![CDATA[Reply to OnFilePrint() on Thu, 16 Aug 2007 08:19:36 GMT]]></title><description><![CDATA[<p>Doch schon. Du musst nur selber OnPrint überschreiben und den ganzen Käse selber machen. Aber die grundsätzliche Funktion unterscheidet sich nicht!</p>
<p>In Codeproject suche mal nach &quot;CFormView Print&quot;, das findest Du eine halbgare Lösung die ds Formular in eine Bitmap kopiert und dann druckt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345542</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 16 Aug 2007 08:19:36 GMT</pubDate></item><item><title><![CDATA[Reply to OnFilePrint() on Thu, 16 Aug 2007 09:45:31 GMT]]></title><description><![CDATA[<p>Das habe ich mir auch schonmal angeschaut. Ich möchte allerdings nicht die komplette Oberfläche mit allen Controls drucken, sondern nur die Einträge in den Editfeldern ausdrucken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345585</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Thu, 16 Aug 2007 09:45:31 GMT</pubDate></item><item><title><![CDATA[Reply to OnFilePrint() on Thu, 16 Aug 2007 10:39:53 GMT]]></title><description><![CDATA[<p>Dann mach das doch... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Ich habe einfach in meiner CView Klasse diese beiden Funktionen über den Class View hinzugefügt:</p>
<pre><code class="language-cpp">void CTestSDIFormPrintView::OnFilePrint()
{
	__super::OnFilePrint();
}

BOOL CTestSDIFormPrintView::OnPreparePrinting(CPrintInfo* pInfo)
{
	return DoPreparePrinting(pInfo);
}
</code></pre>
<p>Jetzt nur noch ein bischen DrawText in OnPrint und das wars...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345622</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345622</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 16 Aug 2007 10:39:53 GMT</pubDate></item><item><title><![CDATA[Reply to OnFilePrint() on Thu, 16 Aug 2007 12:08:40 GMT]]></title><description><![CDATA[<p>Also mach ich doch ne eigene Ansichtsklasse zum drucken-&gt; CPrintView, abgeleitet von CView-&gt; dann kann ich OnPreparePrinting überschreiben.<br />
Doch dann hab ich wieder das andere Problem das OnFilePrint() nicht an mein Document rankommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345712</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Thu, 16 Aug 2007 12:08:40 GMT</pubDate></item><item><title><![CDATA[Reply to OnFilePrint() on Thu, 16 Aug 2007 12:45:11 GMT]]></title><description><![CDATA[<p>Falsch... Wieso CPrintView?</p>
<p>Du sollst das ganze drucken in Deine eigene CFormView Klasse packen und icht in eine Extraklasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345733</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 16 Aug 2007 12:45:11 GMT</pubDate></item><item><title><![CDATA[Reply to OnFilePrint() on Fri, 17 Aug 2007 12:35:12 GMT]]></title><description><![CDATA[<p>Wer ruft denn die Methode OnPrint() auf?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346324</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Fri, 17 Aug 2007 12:35:12 GMT</pubDate></item><item><title><![CDATA[Reply to OnFilePrint() on Fri, 17 Aug 2007 12:44:16 GMT]]></title><description><![CDATA[<p>OnFilePrint</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346331</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346331</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 17 Aug 2007 12:44:16 GMT</pubDate></item><item><title><![CDATA[Reply to OnFilePrint() on Fri, 17 Aug 2007 12:57:22 GMT]]></title><description><![CDATA[<p>Habe mir jetzt mal das Beispiel projekt von <a href="http://CodeProject.com" rel="nofollow">CodeProject.com</a> runtergeladen. Genau so hatte ich es auch vor, aber bei denen funktionierts.<br />
In deren Message Map der Klasse CFormViewPrint2View steht</p>
<pre><code class="language-cpp">ON_COMMAND(ID_FILE_PRINT, OnFilePrint)
</code></pre>
<p>In meiner Anwendung musste ich das in die Applikationsklasse schreiben und nicht in die CFormView. Wenn ich es in der CFormView implementiere bleibt der Menü-Eintrag ausgegraut.<br />
Haben die irgendwie die Druckunterstützung aktiviert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1346350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346350</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Fri, 17 Aug 2007 12:57:22 GMT</pubDate></item></channel></rss>