jpg in Picture Control einfügen

Jasmin84

Grünschnabel
Hi!

Ich habe vor kurzem angefangen mit Visual c++ zu programmieren und möchte nun in meine SDI Anwendung in einem Picture Control ein jpg. einfügen, weiß allerdings nicht wie und finde nur Funktionen zum einfügen von bitmaps. Daher versuche ich nun das jpg in bitmap zu konvertieren. Dazu verwende ich folgenden Quellcode:

void CMaske::OnBnClickedBild()
{
// Benötigte Variablen erstellen
CFileDialog m_File(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "Bilder (*.bmp) (*.jpg)|*.bmp;*.jpg;||");

CString str_filename;
char Zeichen;
CImage bild;
// File Dialog öffnen und Ergebnis auffangen
if(m_File.DoModal()==IDOK)
{
// Gewählten Dateinamen ermitteln
str_filename=m_File.GetPathName();
CString filename = str_filename.Left(
str_filename.Find('.')) + ".bmp";
bild.Save(filename);

// Länge des Dateinamens ermitteln
int laenge=filename.GetLength();

// Alle \ mit \\ ersetzen
for(int i = 0; i < laenge; i++)
{
Zeichen=filename.GetAt(i);
if(Zeichen=='\\')
{
filename.Insert(i, "\\");
i+=1;
}
}


// Bild anzeigen
m_ctlbild.SetBitmap((HBITMAP)LoadImage( NULL ,filename ,IMAGE_BITMAP , 100 , 120 , LR_LOADFROMFILE | LR_CREATEDIBSECTION ));


}

Ich habe die ganze Sache mal in dem "Debug-Modus" laufen lassen und der filename wurde tatsächlich in die Endung ".bmp" verwandelt, nur angezeigt wird das Bild immernoch nicht. Nur bitmaps sind sichtbar! :eek:(

Fällt euch vielleicht was dazu ein?

LG Jasmin
 
Mit folgendem Quellcode:

DEFINE_GUID(ImageFormatBMP, 0xb96b3cab,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e);
void CMaske::OnBnClickedBild()
{
// Benötigte Variablen erstellen
CFileDialog m_File(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "Bilder (*.bmp) (*.jpg)|*.bmp;*.jpg;||");

CString filename;
char Zeichen;
CImage bild;

// File Dialog öffnen und Ergebnis auffangen
if(m_File.DoModal()==IDOK)
{





filename=m_File.GetPathName();
bild.Load(filename);
bild.Save(filename,ImageFormatBMP);




// Bild anzeigen
m_ctlbild.SetBitmap((HBITMAP)LoadImage( NULL ,filename ,IMAGE_BITMAP , 100 , 120 , LR_LOADFROMFILE | LR_CREATEDIBSECTION ));


}

}

Dazu noch die stdafx.h um folgende Headerdateien erweitern(bin mir allerdings nicht sicher ob alle nötig sind ;o))

#include <atlimage.h>
#include <atlstr.h>
#include <afxstr.h>
#include <Gdiplusimaging.h>

Dann funktioniert es! Ein Rätsel ist mir allerdings wieso man die Konstante ImageFormatBMP nochmals definieren muss, die ist eigentlich schon in dem Header #include <Gdiplusimaging.h> definiert. Na ja Visual C++ eben...

LG Jasmin
 
Zuletzt bearbeitet:
Zurück