<?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[Drucken über Buffer-DC]]></title><description><![CDATA[<p>Hallo!<br />
Ich versuche gerade eine Druckfunktion in ein Programm einzubauen die einfach einen Screenshot an den Drucker ausgiebt. Leider funktioniert das nicht ganz so einfach wie ich mir das vorgestellt habe, bzw. nicht bei allen Rechnern und Druckern.<br />
Deshalb wollte ich jetzt so eine Art CDC-buffer einführen auf den ich das ganze vorher kopiere damit ich dann beim eigentlichen Drucken keine Probeleme mit überlagerten Fenstern und sowas habe.</p>
<pre><code class="language-cpp">CDC *buffer=new CDC();
	buffer-&gt;CreateCompatibleDC(GetDC());

	buffer-&gt;StretchBlt(0,0,Width,Heigh,GetDC(),0,0,Width,Heigh,SRCCOPY);

	CDC printer;
	DOCINFO job;
	CPrintDialog dlgPrint(FALSE,PD_ALLPAGES|PD_USEDEVMODECOPIES|PD_NOPAGENUMS|PD_HIDEPRINTTOFILE|PD_NOSELECTION,this);
	if (dlgPrint.DoModal()==IDOK)
	{
		printer.Attach(dlgPrint.GetPrinterDC());

		job.cbSize=sizeof(job);
		job.lpszDocName=(&quot;Titel&quot;);
		job.lpszOutput=NULL;
		job.lpszDatatype=NULL;
		job.fwType=NULL;

		if(printer.StartDoc(&amp;job)&gt;=0)
		{
			printer.StartPage();
			printer.StretchBlt(0,0,1000,1000,buffer,0,0,Width,Heigh,SRCCOPY);
			printer.EndPage();
			printer.EndDoc();
			printer.Detach();
			printer.DeleteDC();
		}
	}
</code></pre>
<p>Ich kopier das ganze zuerst auf einen buffer und will es dann auf den Drucker StretchBlt-en aber da kommt nix raus...<br />
Width und Heigh sind globale Variablen die auch stimmen, das hab ich überprüft. Statt dem ersten StretchBlt könnte man auch ein BitBlt machen, aber das ändert auch nix...<br />
Kann mir wer von euch sagen was dabei falsch ist?</p>
<p>MfG<br />
Headshot</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/186775/drucken-über-buffer-dc</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 02:20:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/186775.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 12 Jul 2007 10:32:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Drucken über Buffer-DC on Thu, 12 Jul 2007 10:32:40 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Ich versuche gerade eine Druckfunktion in ein Programm einzubauen die einfach einen Screenshot an den Drucker ausgiebt. Leider funktioniert das nicht ganz so einfach wie ich mir das vorgestellt habe, bzw. nicht bei allen Rechnern und Druckern.<br />
Deshalb wollte ich jetzt so eine Art CDC-buffer einführen auf den ich das ganze vorher kopiere damit ich dann beim eigentlichen Drucken keine Probeleme mit überlagerten Fenstern und sowas habe.</p>
<pre><code class="language-cpp">CDC *buffer=new CDC();
	buffer-&gt;CreateCompatibleDC(GetDC());

	buffer-&gt;StretchBlt(0,0,Width,Heigh,GetDC(),0,0,Width,Heigh,SRCCOPY);

	CDC printer;
	DOCINFO job;
	CPrintDialog dlgPrint(FALSE,PD_ALLPAGES|PD_USEDEVMODECOPIES|PD_NOPAGENUMS|PD_HIDEPRINTTOFILE|PD_NOSELECTION,this);
	if (dlgPrint.DoModal()==IDOK)
	{
		printer.Attach(dlgPrint.GetPrinterDC());

		job.cbSize=sizeof(job);
		job.lpszDocName=(&quot;Titel&quot;);
		job.lpszOutput=NULL;
		job.lpszDatatype=NULL;
		job.fwType=NULL;

		if(printer.StartDoc(&amp;job)&gt;=0)
		{
			printer.StartPage();
			printer.StretchBlt(0,0,1000,1000,buffer,0,0,Width,Heigh,SRCCOPY);
			printer.EndPage();
			printer.EndDoc();
			printer.Detach();
			printer.DeleteDC();
		}
	}
</code></pre>
<p>Ich kopier das ganze zuerst auf einen buffer und will es dann auf den Drucker StretchBlt-en aber da kommt nix raus...<br />
Width und Heigh sind globale Variablen die auch stimmen, das hab ich überprüft. Statt dem ersten StretchBlt könnte man auch ein BitBlt machen, aber das ändert auch nix...<br />
Kann mir wer von euch sagen was dabei falsch ist?</p>
<p>MfG<br />
Headshot</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1323744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323744</guid><dc:creator><![CDATA[headshot0815]]></dc:creator><pubDate>Thu, 12 Jul 2007 10:32:40 GMT</pubDate></item></channel></rss>