Страница 1 из 2

Подгружение иконок с *.ехе файлов

Добавлено: 16 дек 2004, 17:29
xpymep
Задача:"Показать иконку на форме зная, только путь к *.exe файлу"
Я себе представляю это так(C++ Builder):

Код: Выделить всё

void* ic = LoadLibrary("some.exe");
 if (ic!=NULL)
  { 
   TIcon *icon = new TIcon();
    HICON _i;
    _i = LoadIcon(ic,IDI_APPLICATION)
      if (_i!=NULL)
         {
            icon->Handle = _i;
         }
   }
К сожалению этот код не пашет... :( . Как быть ? Помогите пожалуйста.

Добавлено: 16 дек 2004, 18:52
Romeo
IDI_APPLICATION - это идентификатор системной иконки. При вызове LoadIcon для системных иконок, HINSTANCE процесса должен равняться NULL.

Добавлено: 17 дек 2004, 12:11
xpymep
Все равно не пашет... :(

Добавлено: 17 дек 2004, 12:35
Romeo

Код: Выделить всё

HICON hIcon = ::LoadIcon(NULL, IDI_APPLICATION);
Не пашет? Т.е. hIcon равняется нулю? Или что?

Добавлено: 17 дек 2004, 12:45
Eugie
Попробуй LoadFromResourceName(NULL, MAKEINTRESOURCE(IDI_APPLICATION))

Добавлено: 17 дек 2004, 12:54
Romeo
Define IDI_APPLICATION уже учитывает макрос MAKEINTRESOURCE.

Добавлено: 17 дек 2004, 13:15
Eugie
Romeo, ты прав. Просто BCB по идее мог его переопределить как числовой. В windows.h он тоже объявлен по-разному, в зависимости от контекста.

Добавлено: 17 дек 2004, 19:03
xpymep
Romeo, Да равен NULL.
LoadFromResourceName(); первый параметр это деструктор окна?

Добавлено: 20 дек 2004, 13:39
Romeo
Деструктор? :) Тяжёлый случай, господин xpymep, читайте литературу - не владеете терминологией. Первый параметр - инстанс (instance) приложения.

Добавлено: 21 дек 2004, 17:51
Hawk
В данном случае как мне кажется надо использовать SHGetFileInfo с флагом SHGFI_ICON