Re[5]: Загрузка иконки из файла
От: Multix  
Дата: 03.02.11 09:03
Оценка:
Здравствуйте, Aniskin, Вы писали:

A>Здравствуйте, Multix, Вы писали:


M>>Я же бы хотел получить hIcon от этих двоичных данных


A>Я думаю, что CreateIconIndirect будет лучшим/наипростейшим решением.


Я уже тоже ее на примету взял. Только она мне всегда ноль почему то возвращает
Может кто подскажет что не так сделал
Пример кода:


      PHGlobal hGlobal = GlobalAlloc( GMEM_MOVEABLE|GMEM_NODISCARD, file.Size() ); // мой класс, который  в диструкторе освобождает память 
      if( HGLOBAL(hGlobal) )
      {
         char* buffer = (char*)GlobalLock( hGlobal );
         if( buffer )
         {
            file.Seek( 0 ); 
            file.Read( buffer, file.Size() ); // прочитал данные из потока
            GlobalUnlock( hGlobal );
            file.Close();

            IStream* strm;
            IPicture* picture;
            ICONINFO icnf = {0};
            icnf.fIcon = TRUE;
            HBITMAP hBitmap=NULL;
            if( CreateStreamOnHGlobal( hGlobal, FALSE, &strm ) == S_OK )
               if( strm )
                  if( OleLoadPicture( strm, size, FALSE, IID_IPicture, (LPVOID*)&picture ) == S_OK )
                  {
                     picture->get_Handle((OLE_HANDLE*)(UINT*)&hBitmap);
                     icnf.hbmColor = hBitmap;
                     hIcon = ::CreateIconIndirect(&icnf); // здесь получаю NULL.  :(  :(  :(
                  }
         }      
      }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.