001
24.11.2005, 22:34 Uhr
(un)wissender
Niveauwart
|
Folgenden Code verwende ich zum laden einer Bilddatei:
C++: |
//Z.B. pszFileName = "testBild.jpg" HANDLE hFile = ::CreateFile(pszFileName, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
if(INVALID_HANDLE_VALUE == hFile) { //Hier gibt es schon Ärger ::MessageBox(NULL, "INVALID_HANDLE_VALUE", _T("Error"), MB_ICONHAND); return false; }
//datei größe ermitteln DWORD dwFileSize = ::GetFileSize(hFile, NULL);
//speicher in größe der datei allokieren HGLOBAL hGlobal = ::GlobalAlloc(GMEM_MOVEABLE, dwFileSize); LPVOID pvData = ::GlobalLock(hGlobal);
//datei lesen u. im speicher behalten DWORD dwBytesRead = 0; BOOL bRead = ::ReadFile(hFile, pvData, dwFileSize, &dwBytesRead, NULL);
if(!bRead) { ::GlobalUnlock(hGlobal); ::CloseHandle(hFile); return false; }
::GlobalUnlock(hGlobal); ::CloseHandle(hFile);
//IStream* aus dem speicher erzeugen LPSTREAM pstm = NULL; HRESULT hr = ::CreateStreamOnHGlobal(hGlobal, TRUE, &pstm);
//IPicture vom bild erzeugen this->release();
hr = ::OleLoadPicture(pstm, dwFileSize, FALSE, IID_IPicture, (LPVOID*)&this->picture); pstm->Release();
|
-- Wer früher stirbt ist länger tot. |