CPicture.Show

Dipsi

Mitglied
Hallo

Ich hab im Forum ein Beispiel mit der Klasse CPicture gefunden.

Hab es selber mal ausprobiert.
Aber...
Wenn ich das Programm starte passiert nichts :confused:
(Also dert unten stehende Code funktioniert nicht)
Wieso?

Code:
void CpictDlg::OnBnClickedOk()
{
	CRect displaysize;
	int width, height, picwidth, picheight;
	width = (int)displaysize.right;
	height = (int)displaysize.bottom;

	CDC *pDC = new CClientDC(this);
	CPicture m_Picture;
	m_Picture.Load("Niagara.jpg");
	m_Picture.UpdateSizeOnDC(pDC);
	picwidth = (int)m_Picture.m_Width;
	picheight = (int)m_Picture.m_Height;
	m_Picture.Show(pDC,CRect(0,0,width,height));

}

Dann hätte ich noch eine Frage.
Muss ich das Bild in einem speziellen Feld öffnen?
Z.B. PictureBox? <--- (Geht aber bei mir nicht, weiss nicht wieso) :confused:
 
Hi, leider schreibst du nicht, was für eine Anwendung du hast, ob dialog-basiert oder SDI.
Könnte sein, daß es am auf dem Heap allokierten DC liegt(?). Vielleicht versuchst du es mal so:
Code:
   CClientDC dc(this);
   m_Picture.Show(&dc,CRect(0,0,width,height));
Hast du mal im Einzelschritt-Modus geschaut, was in den Funktionen passiert?

Mfg

langer
 
Porjekt ist Dialogbasiert.
Mein Code erzeugt keinen Fehler beim compilieren.
Ich weiss nur nicht, ob ich das Bild in einer spezielen Box z.B.(wie schon erwähnt PictureBox) anzeigen muss.

Aber PictureBox kann ich nicht im Dialogbasierten Projekt anwenden. (Kann es nicht anklicken.)

Wie geht das genau?
 
Ich habe das Projekt nachgebaut. Es funktioniert bei mir problemlos. Der Fehler bei dir ist, dass du ein CRect displaysize definierst, aber nicht initialisierst. Dann errechnest du aus den uninitialisierten Werten die Größe der Bitmap. Das muß schiefgehen. Wenn du die Werte in displaysize ordentlich vorbelegst, gibt es keine Probleme mehr.

Mfg

langer
 
Zurück