Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Загрузка иконки из ресурса приложения.

1.8K
24 ноября 2006 года
rSolanov
106 / / 04.05.2005
Здравствуйте. Мне необходимо загрузить из ресурсов приложения иконку и отобразить ее в главной форме. Сам ресурс в виде иконки содержится в файле ресурсов и подгружается с помощью директивы {$RESOURCE MyRes}. Вот код:

procedure TMainForm.Button1Click(Sender: TObject);
begin
Icon := LoadIcon(Application.Handle, 'My');
end;

Но иконка при этом на заголовке главной формы не отображается.
Что тут может быть?
547
24 ноября 2006 года
Hydra
488 / / 20.06.2006
попробуй
 
Код:
MainForm->Icon->Handle=Icon;
1.8K
24 ноября 2006 года
rSolanov
106 / / 04.05.2005
Да, я пробовал и такой код, и такой:

SendMessage(Handle, WM_SETICON, 1, LoadIcon(Application.Handle, 'My'));
Получается установить только стандартную иконку, когда вместо Application.Handle устанавливать NULL и в имени писать стандартный идентификатор иконки. Не удается установить только свою иконку.
Хотя ведь по логике все делаю правильно. Что это может быть?
11K
24 ноября 2006 года
_io_lock
73 / / 05.10.2006
Уверен, что твою иконку зовут 'My' ? Я бы тебе посоветовал поковырять экзешник например ResHacker'ом, найти в нем числовой идентификатор иконки и грузить так:
 
Код:
Icon := LoadIcon(Application.Handle, PChar(101));
// ну это типа если идент. иконки 101
1.8K
24 ноября 2006 года
rSolanov
106 / / 04.05.2005
Да, я попробовал с посмотрел спомощью ResHacker свою программу. Увидел там все иконки, которые присоединял в проект, но с номерами, которые присваивает им видно сам ResHacker, поскольку я номеров никаких не давал. Хотя попробовал и эти номера. Пробовал применять ResHacker, применял и функцию MAKEINTRESOURCE, пробовал применять преобразования типов (PChar), все-равно не работает. А в том, что имя моей иконки 'My', я абсолютно уверен. А вы пробовали загрузить иконку в Delphi или в Builder'е?
11K
24 ноября 2006 года
_io_lock
73 / / 05.10.2006
нет, номера эти присваивает не resHacker, а дельфячий линкер.
Иконку я в дельфях загружал, но было это дело давно, я уж давно на Це++ перешел.
Только вчера я мутил что-то с иконкой, и дело было именно так:
 
Код:
wndclass.hIcon = LoadIcon(hInstance, (char*)101);

Незнаю даже. Может у вас hInstance паленый? Должно быть $400000.
257
24 ноября 2006 года
kosfiz
1.6K / / 18.09.2005
например, файл ресурсов:
 
Код:
myicon ICON "C:\Program Files\Borland\Delphi7\Projects\AppIcon\icon.ico"

а потом код:
 
Код:
Form1.Icon.Handle:=LoadIcon(hInstance,pchar('myicon'));

или
 
Код:
SendMessage(form1.Handle,WM_SETICON,1,LoadIcon(hInstance,pchar('myicon')));

вся проблема в том, что надо использовать hInstance, а не Application.Handle.
1.8K
27 ноября 2006 года
rSolanov
106 / / 04.05.2005
Да, все при установки вместо Application.Handle на hInstance, все заработало. Я тогда, не совсем понимаю работу функции LoadIcon: параметр hInstance я понимал дескриптор ресурса-приложения.
Объясните, пожалуйста, как это работает?
1.8K
27 ноября 2006 года
rSolanov
106 / / 04.05.2005
Внимательнее посмотрев Help, я узнал, что Application.Handle- это не дескриптор приложения, а десриптор главного окна приложения. На мой взгляд логичнее если борландцы сделали бы Application.Handle-дескриптор приложения, а Application.MainForm.Handle-дескриптор главного окна приложения. ВСЕМ БОЛЬШОЕ СПАСИБО ЗА ПОМОЩЬ!
355
27 ноября 2006 года
<SCORP>
786 / / 21.10.2006
переменные Handle имеют тип HWND, а hInstance типа HINSTANCE (в Win API, в дельфе, помоему просто . хотя я могу ошибаться)
hInstance это дескриптор экземпляра приложения, а Handle это дескриптор окна!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог