Загрузка иконки из ресурса приложения.
procedure TMainForm.Button1Click(Sender: TObject);
begin
Icon := LoadIcon(Application.Handle, 'My');
end;
Но иконка при этом на заголовке главной формы не отображается.
Что тут может быть?
Код:
MainForm->Icon->Handle=Icon;
SendMessage(Handle, WM_SETICON, 1, LoadIcon(Application.Handle, 'My'));
Получается установить только стандартную иконку, когда вместо Application.Handle устанавливать NULL и в имени писать стандартный идентификатор иконки. Не удается установить только свою иконку.
Хотя ведь по логике все делаю правильно. Что это может быть?
Код:
Icon := LoadIcon(Application.Handle, PChar(101));
// ну это типа если идент. иконки 101
// ну это типа если идент. иконки 101
Да, я попробовал с посмотрел спомощью ResHacker свою программу. Увидел там все иконки, которые присоединял в проект, но с номерами, которые присваивает им видно сам ResHacker, поскольку я номеров никаких не давал. Хотя попробовал и эти номера. Пробовал применять ResHacker, применял и функцию MAKEINTRESOURCE, пробовал применять преобразования типов (PChar), все-равно не работает. А в том, что имя моей иконки 'My', я абсолютно уверен. А вы пробовали загрузить иконку в Delphi или в Builder'е?
Иконку я в дельфях загружал, но было это дело давно, я уж давно на Це++ перешел.
Только вчера я мутил что-то с иконкой, и дело было именно так:
Код:
wndclass.hIcon = LoadIcon(hInstance, (char*)101);
Незнаю даже. Может у вас hInstance паленый? Должно быть $400000.
Код:
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.
Объясните, пожалуйста, как это работает?
Внимательнее посмотрев Help, я узнал, что Application.Handle- это не дескриптор приложения, а десриптор главного окна приложения. На мой взгляд логичнее если борландцы сделали бы Application.Handle-дескриптор приложения, а Application.MainForm.Handle-дескриптор главного окна приложения. ВСЕМ БОЛЬШОЕ СПАСИБО ЗА ПОМОЩЬ!
hInstance это дескриптор экземпляра приложения, а Handle это дескриптор окна!