Здравствуйте, 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. :( :( :(
}
}
}