<?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[dialog neu zeichnen mit hintergrundbild]]></title><description><![CDATA[<p>Hy,</p>
<p>ich habe das Problem , dass das Neuzeichen des Hintergundbildes mir die Steuerelemente(gruppenfelder usw.) übermalt.</p>
<pre><code>CRect cr;
	GetWindowRect(cr); 
    CClientDC dc(this);
	CBitmap bitmap;
	CDC dcMemory;
	bitmap.LoadBitmap(IDB_BITMAP1); 
	dcMemory.CreateCompatibleDC(&amp;dc); 
	CBitmap* pOldBitmap = dcMemory.SelectObject(&amp;bitmap);
	dc.PatBlt(cr.left , cr.top , cr.Width() ,cr.Height() , PATCOPY);
	dc.SetStretchBltMode(COLORONCOLOR); 
	dc.StretchBlt(0,0,cr.right - cr.left ,cr.bottom - cr.top ,&amp;dcMemory,0,0,256,256,SRCCOPY);//SRCAND SRCCOPY  
	dc.SelectObject(pOldBitmap);
</code></pre>
<p>Wie erreiche ich ,dass die Steuerelemente oben liegen , wenn OnPaint aufgerufen wird ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/82951/dialog-neu-zeichnen-mit-hintergrundbild</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Apr 2026 02:26:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/82951.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 16 Aug 2004 12:50:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to dialog neu zeichnen mit hintergrundbild on Mon, 16 Aug 2004 12:50:17 GMT]]></title><description><![CDATA[<p>Hy,</p>
<p>ich habe das Problem , dass das Neuzeichen des Hintergundbildes mir die Steuerelemente(gruppenfelder usw.) übermalt.</p>
<pre><code>CRect cr;
	GetWindowRect(cr); 
    CClientDC dc(this);
	CBitmap bitmap;
	CDC dcMemory;
	bitmap.LoadBitmap(IDB_BITMAP1); 
	dcMemory.CreateCompatibleDC(&amp;dc); 
	CBitmap* pOldBitmap = dcMemory.SelectObject(&amp;bitmap);
	dc.PatBlt(cr.left , cr.top , cr.Width() ,cr.Height() , PATCOPY);
	dc.SetStretchBltMode(COLORONCOLOR); 
	dc.StretchBlt(0,0,cr.right - cr.left ,cr.bottom - cr.top ,&amp;dcMemory,0,0,256,256,SRCCOPY);//SRCAND SRCCOPY  
	dc.SelectObject(pOldBitmap);
</code></pre>
<p>Wie erreiche ich ,dass die Steuerelemente oben liegen , wenn OnPaint aufgerufen wird ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/583733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/583733</guid><dc:creator><![CDATA[wuTangl]]></dc:creator><pubDate>Mon, 16 Aug 2004 12:50:17 GMT</pubDate></item><item><title><![CDATA[Reply to dialog neu zeichnen mit hintergrundbild on Mon, 16 Aug 2004 13:04:28 GMT]]></title><description><![CDATA[<p>Servus,</p>
<p>rufe einfach vor deinem Code die Methode CDialog::OnPaint() auf:</p>
<p>Bsp:</p>
<pre><code class="language-cpp">void CDeinDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // Gerätekontext zum Zeichnen

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast&lt;WPARAM&gt;(dc.GetSafeHdc()), 0);

		// Symbol in Clientrechteck zentrieren
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&amp;rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Symbol zeichnen
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
		CRect cr; 
		GetWindowRect(cr); 
		CClientDC dc(this); 
		CBitmap bitmap; 
		CDC dcMemory; 
		bitmap.LoadBitmap(IDB_BITMAP1); 
		dcMemory.CreateCompatibleDC(&amp;dc); 
		CBitmap* pOldBitmap = dcMemory.SelectObject(&amp;bitmap); 
		dc.PatBlt(cr.left , cr.top , cr.Width() ,cr.Height() , PATCOPY); 
		dc.SetStretchBltMode(COLORONCOLOR); 
		dc.StretchBlt(0,0,cr.right - cr.left ,cr.bottom - cr.top ,&amp;dcMemory,0,0,256,256,SRCCOPY);//SRCAND SRCCOPY   
		dc.SelectObject(pOldBitmap); 
	}
}
</code></pre>
<p>Sollte (eigentlich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> ) funzen..</p>
<p>*winke*<br />
Hellsgore</p>
]]></description><link>https://www.c-plusplus.net/forum/post/583743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/583743</guid><dc:creator><![CDATA[Hellsgore]]></dc:creator><pubDate>Mon, 16 Aug 2004 13:04:28 GMT</pubDate></item><item><title><![CDATA[Reply to dialog neu zeichnen mit hintergrundbild on Mon, 16 Aug 2004 13:24:57 GMT]]></title><description><![CDATA[<p>Also bei mir war das Zauberwort der OnEraseBkgnd Event:<br />
statt IDB_BITMAP4 setzt du einfach deine Resource ein ....<br />
durch den Event kann man auch das Fenster mal überlappen lassen.</p>
<p>BOOL CGameSelect::OnEraseBkgnd(CDC* pDC)<br />
{<br />
// TODO: Fügen Sie hier Ihren Meldungsbehandlungscode ein, und/oder benutzen Sie den Standard.</p>
<p>CDC* pDC2 = GetDC();<br />
CBitmap bitmap;<br />
bitmap.LoadBitmap(IDB_BITMAP4);<br />
CDC dc2;<br />
CRect rect;<br />
GetClientRect(rect);<br />
BITMAP bm;<br />
bitmap.GetBitmap(&amp;bm);<br />
dc2.CreateCompatibleDC(pDC2);<br />
dc2.SelectObject(bitmap);<br />
pDC-&gt;StretchBlt(0,0,rect.Width(), rect.Height(),&amp;dc2,0,0, bm.bmWidth, bm.bmHeight, SRCCOPY);<br />
// und hier ein code um ein Bitmap auf einen Button zu bekommen ...<br />
bitmap.DeleteObject();<br />
bitmap.LoadBitmap(IDB_deineBitmapResource);<br />
m_button.SetBitmap(bitmap);</p>
<p>//return CDialog::OnEraseBkgnd(pDC);<br />
return 1;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/583764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/583764</guid><dc:creator><![CDATA[thenoname]]></dc:creator><pubDate>Mon, 16 Aug 2004 13:24:57 GMT</pubDate></item><item><title><![CDATA[Reply to dialog neu zeichnen mit hintergrundbild on Mon, 16 Aug 2004 13:35:23 GMT]]></title><description><![CDATA[<p>Erstmal danke für die Anworten ..<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4497">@Hellsgore</a> : das habe ich ja auch probiert .. war eben ein Misserfolg(sollte eben nur rein theoretisch funzen..)</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5227">@thenoname</a>: Was mache ich wenn ich nicht WM_ERASEBKGND im klassenAssitent aufrufen kann und somit nicht OnEraseBkgnd() ?<br />
Ich benutze eine Dialogbasierte Anwendung .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/583779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/583779</guid><dc:creator><![CDATA[wuTangl]]></dc:creator><pubDate>Mon, 16 Aug 2004 13:35:23 GMT</pubDate></item><item><title><![CDATA[Reply to dialog neu zeichnen mit hintergrundbild on Mon, 16 Aug 2004 20:12:07 GMT]]></title><description><![CDATA[<p>Ja, das ist Dialogbasierend.<br />
Gehe mit Rechtsklick auf deinen kompletten Dialog und schau in den Eigenschaften<br />
das Dingen neben dem Blitz an (Meldungen). Da muss es sein !!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/584134</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/584134</guid><dc:creator><![CDATA[thenoname2]]></dc:creator><pubDate>Mon, 16 Aug 2004 20:12:07 GMT</pubDate></item><item><title><![CDATA[Reply to dialog neu zeichnen mit hintergrundbild on Tue, 17 Aug 2004 07:50:20 GMT]]></title><description><![CDATA[<p>Hy ,</p>
<p>welche Eigenschaften meinst du ? Die Dialogeigenschaften ? und wo soll denn da ein Blitz sein (auf welcher Tabkarte-- es gibt dort keine Meldungen)? Die Nachrichten stehen doch Im Klassenassitent unter Nachrichtzuordnungstabellen(da ist es wie gesagt nicht vorhanden)<br />
Ich benutze den VC++6..<br />
(Manche dinge sind doch echt zum verzweifeln ..)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/584352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/584352</guid><dc:creator><![CDATA[wuTangl]]></dc:creator><pubDate>Tue, 17 Aug 2004 07:50:20 GMT</pubDate></item></channel></rss>