Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запутался, Как получить иконку сайта? Через CInternetSession получил а дальше? 
:(
    Опции темы
Прохожий
Дата 3.5.2007, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 12.1.2007

Репутация: 1
Всего: 1



Вот такой код выдаёт мне иконку в виде файла.
Код

LPCTSTR lpConnect = "http://www.msdn.com/favicon.ico";
CInternetSession mysession;
CHttpFile *remotefile = (CHttpFile *)mysession.OpenURL(lpConnect,1,INTERNET_FLAG_TRANSFER_BINARY);

CFile myfile("C:\\IconInternet.ico", CFile::modeCreate|CFile::modeWrite|CFile::typeBinary);

int numbytes = 0;
long lHTTPBUFLEN = 1000;

HICON httpbuff = NULL;

while (numbytes = remotefile->Read(&httpbuff, lHTTPBUFLEN))
{
    myfile.Write(&httpbuff, numbytes);
}


Теперь мне надо в своё приложение запихать, а конкретно в ИмагеЛист.
  •  Накой мне создавать на диске когда надо сразу в проге ну что - то вроде HICON
    (я понимаю что HICON это не иконка, а где вона находится) но сам принцип
  •  Уж если так низя, то тогда как её с файла выцепить?
  • Пробовал вот это 
    HICON hIconL = (HICON)::LoadImage(NULL, "C:\\IconInternet.ico", 
                    IMAGE_ICON, NULL, 
                    NULL, LR_DEFAULTSIZE 
                    | LR_DEFAULTCOLOR 
                    | LR_LOADFROMFILE);
    без толку.
  • Стрим тоже вроде работает. Но как из потока выдернуть? Может не правильно выразился?
  • GDI+ не предлагать в принципе.

PM MAIL   Вверх
Прохожий
Дата 3.5.2007, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 12.1.2007

Репутация: 1
Всего: 1



Попутно возникают ещё вопросы как определить что у сайта нет иконки?
Почему когда не правильно в ведено имя сайта, не срабатывает исключение?

Вот такой пример нашёл с использованием Стрима

Код

IStream* pIStream = NULL;
    HRESULT hr = NULL;
    HINTERNET hInternet = ::InternetOpen(
        "Microsoft® Internet Explorer",
        INTERNET_OPEN_TYPE_DIRECT,
        NULL,
        NULL,
        INTERNET_FLAG_FROM_CACHE | INTERNET_FLAG_ASYNC );
    DWORD dwContext = 0;
    HINTERNET hInetUrl = ::InternetOpenUrlW(
        hInternet,
        L"http://www.msn.com/favicon.ico",
        NULL,
        0,
        INTERNET_FLAG_NEED_FILE,
        dwContext );
    if ( hInetUrl )
    {
        hr = ::CreateStreamOnHGlobal( NULL, TRUE, &pIStream );
        char buf[16384];
        DWORD dwRead;
        for ( ;; )
        {
            dwRead = 0;
            ULONG ulWrite;
            BOOL bRead = ::InternetReadFile( hInetUrl, buf, sizeof( buf ), &dwRead );
            if ( bRead && dwRead )
            {
                ulWrite = dwRead;
                ULONG ulWritten = 0;
                hr = pIStream->Write( (void const *)buf, ulWrite, &ulWritten );
            }
            else
                break;
        }
        PICTDESC pictDesc;
        pictDesc.cbSizeofstruct = sizeof( PICTDESC );
        pictDesc.picType = PICTYPE_ICON;
        pictDesc.icon.hicon = hIcon;
        IPicture * pPicture = NULL;
        HRESULT hrI = OleCreatePictureIndirect( &pictDesc, IID_IPicture, FALSE, reinterpret_cast< LPVOID * >( &pPicture ) );
        pPicture->SaveAsFile(pIStream, TRUE, NULL);
        ::InternetCloseHandle(hInetUrl);
    }
    ::InternetCloseHandle( hInternet );

Но здесь совсем не понимаю как получить то что мне надо. Там если какие ошибки и есть то это я сам накрутил.

Это сообщение отредактировал(а) Прохожий - 3.5.2007, 14:27
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0870 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.