<?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[Bitmap in Hauptdialogfeld einbinden]]></title><description><![CDATA[<p>Hallöchen,</p>
<p>ich habe ein Problem in <a href="http://VC++.net" rel="nofollow">VC++.net</a> eine Bitmap in mein Hauptdialogfeld einzubinden.<br />
Beim Kompilieren und Ausführen des Projektes treten keine Fehlermeldungen auf, nur das<br />
Bild wird leider nicht geladen. Beim Debuggen schaut auch alles sehr gut aus...die Bitmap<br />
wird in den Speicher geladen, aber eben nicht im Bereich des Dialogfeldes ausgegeben.</p>
<p>Ich habe die Programmsteuerung in die Funktion OnInitDialog() eingefügt, damit sie gleich<br />
beim Laden des Dialogfeldes gestartet wird. Am Ende wird die Fkt. ShowBitmap aufgerufen, die<br />
die grafische Ausgabe vornehmen soll.</p>
<p>In der Fkt StretchBlt (am Ende von ShowBitmap) konnte ich mit dem Debugger überprüfen, dass die<br />
Maße der geladenen Bitmap in die Argumenten übernommen werden. Aber weshalb funktioniert die<br />
Anzeige nicht?!</p>
<p>Wäre schön, wenn mir jemand helfen kann.</p>
<pre><code class="language-cpp">BOOL CRFID1Dlg::OnInitDialog()
{	
		.
		.
		.
		.
		.
		.
		.
	//Gerätekontext zum Zeichnen
	CPaintDC dc(this);

	// Pointer auf CRFIDDlg holen, um dessen Membervariable zu erreichen
	CRFID1Dlg* pFrame = (CRFID1Dlg*) AfxGetMainWnd();
	HBITMAP hBitmap = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),&quot;Bild.bmp&quot;,
		IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);

	// Ist Handle für das geladene Bild gültig?
	if (hBitmap)
	{
		// Aktuelle Bitmap löschen
		if (pFrame-&gt;m_bmpBitmap.DeleteObject())
		{
			// War Bitmap vorhanden, lösen
			pFrame-&gt;m_bmpBitmap.Detach();
		}
		// Aktuell geladene Bitmap mit Bitmap-Objekt verbinden
		pFrame-&gt;m_bmpBitmap.Attach(hBitmap);
		// Anzeigebereich für ungültig erklären, um Neuzeichnen zu veranlassen
		pFrame-&gt;Invalidate();

		ShowBitmap(&amp;dc);

	}

	return TRUE; 
}
</code></pre>
<pre><code class="language-cpp">void CRFID1Dlg::ShowBitmap(CPaintDC* pdc)
{
	// Pointer auf CRFIDDlg holen, um dessen Membervariable zu erreichen
	CRFID1Dlg* pFrame = (CRFID1Dlg*) AfxGetMainWnd();

	// Geladenes Bitmap holen
	BITMAP bmp;
	pFrame-&gt;m_bmpBitmap.GetBitmap(&amp;bmp);

	// zu pdc kompatiblen Gerätekontext erzeugen, in den Bitmap geladen wird
	CDC SpeicherDC;
	SpeicherDC.CreateCompatibleDC(pdc);

	// Bitmap in den kompatiblen Gerätekontext selektieren
	CBitmap* pAltesBitmap = (CBitmap*)SpeicherDC.SelectObject(pFrame-&gt;m_bmpBitmap);

	// Anzeigebereich verfügbar machen
	CRect lRect;
	GetClientRect(lRect);
	lRect.NormalizeRect();

	// Bitmap normal anzeigen
	pdc-&gt;StretchBlt(0, 0, bmp.bmWidth, bmp.bmHeight, &amp;SpeicherDC,
		0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);
}
</code></pre>
<p>Gruß,<br />
Krommi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/166337/bitmap-in-hauptdialogfeld-einbinden</link><generator>RSS for Node</generator><lastBuildDate>Sat, 02 May 2026 02:06:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/166337.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Nov 2006 12:45:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bitmap in Hauptdialogfeld einbinden on Tue, 28 Nov 2006 12:45:29 GMT]]></title><description><![CDATA[<p>Hallöchen,</p>
<p>ich habe ein Problem in <a href="http://VC++.net" rel="nofollow">VC++.net</a> eine Bitmap in mein Hauptdialogfeld einzubinden.<br />
Beim Kompilieren und Ausführen des Projektes treten keine Fehlermeldungen auf, nur das<br />
Bild wird leider nicht geladen. Beim Debuggen schaut auch alles sehr gut aus...die Bitmap<br />
wird in den Speicher geladen, aber eben nicht im Bereich des Dialogfeldes ausgegeben.</p>
<p>Ich habe die Programmsteuerung in die Funktion OnInitDialog() eingefügt, damit sie gleich<br />
beim Laden des Dialogfeldes gestartet wird. Am Ende wird die Fkt. ShowBitmap aufgerufen, die<br />
die grafische Ausgabe vornehmen soll.</p>
<p>In der Fkt StretchBlt (am Ende von ShowBitmap) konnte ich mit dem Debugger überprüfen, dass die<br />
Maße der geladenen Bitmap in die Argumenten übernommen werden. Aber weshalb funktioniert die<br />
Anzeige nicht?!</p>
<p>Wäre schön, wenn mir jemand helfen kann.</p>
<pre><code class="language-cpp">BOOL CRFID1Dlg::OnInitDialog()
{	
		.
		.
		.
		.
		.
		.
		.
	//Gerätekontext zum Zeichnen
	CPaintDC dc(this);

	// Pointer auf CRFIDDlg holen, um dessen Membervariable zu erreichen
	CRFID1Dlg* pFrame = (CRFID1Dlg*) AfxGetMainWnd();
	HBITMAP hBitmap = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),&quot;Bild.bmp&quot;,
		IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);

	// Ist Handle für das geladene Bild gültig?
	if (hBitmap)
	{
		// Aktuelle Bitmap löschen
		if (pFrame-&gt;m_bmpBitmap.DeleteObject())
		{
			// War Bitmap vorhanden, lösen
			pFrame-&gt;m_bmpBitmap.Detach();
		}
		// Aktuell geladene Bitmap mit Bitmap-Objekt verbinden
		pFrame-&gt;m_bmpBitmap.Attach(hBitmap);
		// Anzeigebereich für ungültig erklären, um Neuzeichnen zu veranlassen
		pFrame-&gt;Invalidate();

		ShowBitmap(&amp;dc);

	}

	return TRUE; 
}
</code></pre>
<pre><code class="language-cpp">void CRFID1Dlg::ShowBitmap(CPaintDC* pdc)
{
	// Pointer auf CRFIDDlg holen, um dessen Membervariable zu erreichen
	CRFID1Dlg* pFrame = (CRFID1Dlg*) AfxGetMainWnd();

	// Geladenes Bitmap holen
	BITMAP bmp;
	pFrame-&gt;m_bmpBitmap.GetBitmap(&amp;bmp);

	// zu pdc kompatiblen Gerätekontext erzeugen, in den Bitmap geladen wird
	CDC SpeicherDC;
	SpeicherDC.CreateCompatibleDC(pdc);

	// Bitmap in den kompatiblen Gerätekontext selektieren
	CBitmap* pAltesBitmap = (CBitmap*)SpeicherDC.SelectObject(pFrame-&gt;m_bmpBitmap);

	// Anzeigebereich verfügbar machen
	CRect lRect;
	GetClientRect(lRect);
	lRect.NormalizeRect();

	// Bitmap normal anzeigen
	pdc-&gt;StretchBlt(0, 0, bmp.bmWidth, bmp.bmHeight, &amp;SpeicherDC,
		0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);
}
</code></pre>
<p>Gruß,<br />
Krommi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1183002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1183002</guid><dc:creator><![CDATA[Krommi]]></dc:creator><pubDate>Tue, 28 Nov 2006 12:45:29 GMT</pubDate></item><item><title><![CDATA[Reply to Bitmap in Hauptdialogfeld einbinden on Tue, 28 Nov 2006 12:48:29 GMT]]></title><description><![CDATA[<p>Krommi schrieb:</p>
<blockquote>
<p>Aber weshalb funktioniert die<br />
Anzeige nicht?!</p>
</blockquote>
<p>Weil das in OnInitDialog nichts zu suchen hat. Siehe auch die Doku zu CPaintDC.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1183004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1183004</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 28 Nov 2006 12:48:29 GMT</pubDate></item><item><title><![CDATA[Reply to Bitmap in Hauptdialogfeld einbinden on Tue, 28 Nov 2006 21:09:03 GMT]]></title><description><![CDATA[<p>Hmm weil das alles so nicht sinnig ist ... wieso holst du dir, wenn du in der Klasse bist noch einen Pointer auf diese?! Naja ... und wie Vorredner schon sagte ... in die OnPaint den Aufruf von ShowBitmap setzen ...</p>
<pre><code class="language-cpp">void CRFID1Dlg::ShowBitmap(CDC* pDC)
{
    if (pDC == NULL || m_bmpBitmap.m_hObject == NULL)
        return;

    BITMAP bmp;
    m_bmpBitmap.GetBitmap(&amp;bmp);

    CDC dcMem;
    dcMem.CreateCompatibleDC(pDC);

    CBitmap* pOldBitmap = (CBitmap*)dcMem.SelectObject(m_bmpBitmap);
    pDC-&gt;BitBlt(0, 0, bmp.bmWidth, bmp.bmHeight, &amp;dcMem, 0, 0, SRCCOPY);
    dcMem.SelectObject(pOldBitmap);

    dcMem.DeleteDC();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1183408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1183408</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Tue, 28 Nov 2006 21:09:03 GMT</pubDate></item><item><title><![CDATA[Reply to Bitmap in Hauptdialogfeld einbinden on Wed, 29 Nov 2006 12:00:36 GMT]]></title><description><![CDATA[<p>Danke für die Tipps, habe es hinbekommen.<br />
Arbeite mich gerade in VC++ ein und muss mich erstmal<br />
zurecht finden.</p>
<p>Falls ein anderer Anfänger Interesse hat, poste ich den Code hier.<br />
...Einfach bescheid geben.</p>
<p>Ciao, Krommi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1183715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1183715</guid><dc:creator><![CDATA[Krommi]]></dc:creator><pubDate>Wed, 29 Nov 2006 12:00:36 GMT</pubDate></item></channel></rss>