Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Bilder mit ActiveX-Control

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
24.11.2005, 21:55 Uhr
(un)wissender
Niveauwart


Hallo, ich habe meine ActiveX.dll. Das Control darin soll einige Bilder laden. Diese werden aber nicht gefunden. Die liegen im selben Verzeichnis wie die dll. Ich teste momentan rein lokal.
Wie kann ich die Bilder denn finden? Müssen die in die Ressourcen oder in einen cab? Bin leider schon an beidem gescheitert.
Wie sieht die Vorgehensweise denn da aus. Ich verwende ATL 7.0.

Danke.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: