Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Servus,

wie kann ich eine Bilddatei in ein CBitmap Objekt laden?

CBitmap Bild1;

Bild1.LoadBitmap ("bild1.bmp");

... wollte dann das Bild in eine CImageList zuweisen und es funktionierte nicht.

"LoadBitmap( LPCTSTR lpszResourceName );" --> Wie muss der Bildpfad bei der Methode LoadBitmap angegeben werden?

Hoffe auf schnelle Antworten!

Danke schonmal,

Phil:confused:

Geschrieben

Hallo!

Eine Möglichkeit wäre vielleicht so:

BOOL Klassenname::Load(LPCTSTR szFileName)

{

	_ASSERTE(szFileName);


	CFile file;

	HGLOBAL hGlobal;

	DWORD dwSize;


	if (!file.Open(szFileName,

				CFile::modeRead | 

				CFile::shareDenyWrite) )

	{

		TRACE(_T("Load (file): Error opening file %s\n"),szFileName);

		return FALSE;

	}


	dwSize = file.GetLength();

	hGlobal = GlobalAlloc(GMEM_MOVEABLE | GMEM_NODISCARD,dwSize);

	if (!hGlobal)

	{

		TRACE(_T("Load (file): Error allocating memory\n"));

		return FALSE;

	}


	char *pData = reinterpret_cast<char*>(GlobalLock(hGlobal));

	if (!pData)

	{

		TRACE(_T("Load (file): Error locking memory\n"));

		GlobalFree(hGlobal);

		return FALSE;

	}


	TRY

	{

		file.Read(pData,dwSize);

	}

	CATCH(CFileException, e);                                          

	{

		TRACE(_T("Load (file): An exception occured while reading the file %s\n"),

			szFileName);

		GlobalFree(hGlobal);

		e->Delete();

		file.Close();

		return FALSE;

	}

	END_CATCH

	GlobalUnlock(hGlobal);

	file.Close();


	BOOL bRetValue = Load(hGlobal,dwSize);

	GlobalFree(hGlobal);

	return bRetValue;

}


BOOL Klassenname::Load(HGLOBAL hGlobal, DWORD dwSize)

{

	IStream *pStream = NULL;

	UnLoad();


	if (!(m_pRawData = reinterpret_cast<unsigned char*> (GlobalLock(hGlobal))) )

	{

		TRACE(_T("Load: Error locking memory\n"));

		return FALSE;

	}


	m_nDataSize = dwSize;

	GlobalUnlock(hGlobal);


		// don't delete memory on object's release

		if (CreateStreamOnHGlobal(hGlobal,FALSE,&pStream) != S_OK)

			return FALSE;


		if (OleLoadPicture(pStream,dwSize,FALSE,IID_IPicture,

			reinterpret_cast<LPVOID *>(&m_pPicture)) != S_OK)

		{

			pStream->Release();

			return FALSE;

		}

		pStream->Release();

}


So, ich hoffe ich hab nix vergessen!

Hoffentlich hilft es Dir!

Die moral von der Geschichte ist, dass Du einen Stream vom Datenträger in den Speicher bauen musst.

Ist das erledigt, musst Du das Abbild im Speicher auf einen DC bringen, dies könnte mittels Render() geschehen!

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...