peicher Geschrieben 15. Januar 2003 Geschrieben 15. Januar 2003 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:
Sgt. Smith Geschrieben 15. Januar 2003 Geschrieben 15. Januar 2003 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!
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden