Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Как поменять маленькую иконку без VCL?   Найти похожие ветки 

 
Рекрут   (2012-08-15 15:59) [0]

Поменять маленькую иконку в заголовке, если известен путь к иконке.
Примерный код:


1) SetClassLong(Handle, GCL_ICON, LoadIcon(, FileName));
2) SendMessage(Handle, WM_SETICON, 1, LoadIcon(, FileName));



Оба варианта ничего не меняют. Что не так?


 
DVM ©   (2012-08-15 16:01) [1]

Иконки сисадмин точно не должен уметь менять.


 
ProgRAMmer Dimonych ©   (2012-08-15 16:06) [2]

> [0] Рекрут   (15.08.12 15:59)
> Поменять маленькую иконку в заголовке, если известен путь
> к иконке.
> Примерный код:
> 1) SetClassLong(Handle, GCL_ICON, LoadIcon(, FileName));

GCL_HICON м.б.? Так там же есть и GCL_HICONSM.


> 2) SendMessage(Handle, WM_SETICON, 1, LoadIcon(, FileName));

ICON_SMALL в wParam вместо ICON_BIG передать?

P.S. Первый параметр у LoadIcon() где? :)
P.P.S. Чтение MSDN решает любые вопросы такого плана.


 
DVM ©   (2012-08-15 16:19) [3]


> Рекрут   (15.08.12 15:59) 


>  Что не так?

LoadIcon, SetClassLong,  SendMessage - это функции! Анализировать результат Пушкин будет? Там и ответ вероятно. Потом, как уже сказали, в заголовок окна ставиться маленькая иконка, большая отображается только на альт+таб


 
Давайте будем жрать!   (2012-08-15 16:20) [4]


> Иконки сисадмин точно не должен уметь менять
На ярлыках — должен!


 
ProgRAMmer Dimonych ©   (2012-08-15 16:51) [5]

> [3] DVM ©   (15.08.12 16:19)
> LoadIcon, SetClassLong,  SendMessage - это функции! Анализировать
> результат Пушкин будет? Там и ответ вероятно. Потом, как
> уже сказали, в заголовок окна ставиться маленькая иконка,
> большая отображается только на альт+таб

Они ничего полезного для диагностики не вернули бы:

LoadIcon - хэндл иконки вернёт, если она в EXEшнике есть.
SetClassLong - предыдущее значение, а оно хз какое должно быть.
SendMessage - аналогично.


 
Рекрут   (2012-08-15 17:23) [6]


> DVM ©   (15.08.12 16:01) [1]
>
> Иконки сисадмин точно не должен уметь менять.


Кто сказал что я сисадмин? :)


> ProgRAMmer Dimonych ©   (15.08.12 16:06) [2]


Я же сказал "примерный код".

Не то: http://www.rsdn.ru/article/qna/ui/dlgicon.xml


 
DVM ©   (2012-08-15 17:25) [7]


> ProgRAMmer Dimonych ©   (15.08.12 16:51) [5]


> LoadIcon - хэндл иконки вернёт, если она в EXEшнике есть.

Вот именно, где гарантия, что автор иконку загрузил вообще? И если не загрузил, то что не так? GetLastError смотреть надо.


> SetClassLong - предыдущее значение, а оно хз какое должно
> быть.

Опять же GetLastError


> SendMessage - аналогично.

Ну здесь ошибка да, маловероятна, да и вернет скорее всего 1 или 0. Но тем не менее.

Все равно, результат проверять надо. Хотя бы его. И в случае ошибок смотреть GetLastError до кучи. Это чтобы не гадать и на просить по форумам найти ошибку.


 
ProgRAMmer Dimonych ©   (2012-08-15 17:27) [8]

> [6] Рекрут   (15.08.12 17:23)
> Не то: http://www.rsdn.ru/article/qna/ui/dlgicon.xml

Что именно?


 
Рекрут   (2012-08-15 17:34) [9]


> ProgRAMmer Dimonych ©   (15.08.12 17:27) [8]
>
> > [6] Рекрут   (15.08.12 17:23)
> > Не то: http://www.rsdn.ru/article/qna/ui/dlgicon.xml
>
> Что именно?


Как из файла загрузить иконку имея к нему путь?


 
ProgRAMmer Dimonych ©   (2012-08-15 17:38) [10]

> [9] Рекрут   (15.08.12 17:34)
> Как из файла загрузить иконку имея к нему путь?

LoadImage(0, FileName, IMAGE_ICON, ..., ..., LR_LOADFROMFILE...) ?


 
Рекрут   (2012-08-15 17:38) [11]

Нашел.

ExtractIcon.
Почему она не в Windows.pas, я там искал?


 
ProgRAMmer Dimonych ©   (2012-08-15 17:39) [12]

> [11] Рекрут   (15.08.12 17:38)
> Нашел.
>
> ExtractIcon.
> Почему она не в Windows.pas, я там искал?

Ибо из shell32.dll импортируется.


 
Inovet ©   (2012-08-15 17:40) [13]

> [9] Рекрут   (15.08.12 17:34)
> Как из файла загрузить иконку имея к нему путь?

Тебе точно в рантайм надо её изменять?


 
ProgRAMmer Dimonych ©   (2012-08-15 17:40) [14]

Вообще, по-моему, настал момент, когда надо спросить:

А какая вообще задача решается?


 
Рекрут   (2012-08-15 17:44) [15]


> Inovet ©   (15.08.12 17:40) [13]
>
> > [9] Рекрут   (15.08.12 17:34)
> > Как из файла загрузить иконку имея к нему путь?
>
> Тебе точно в рантайм надо её изменять?
>


Ну да. Зашивать в ресурсы как-то иногда не хочется.
Сделаю функцию универсальной, пусть сначала ищет в ресурсах, потом в директории.


> ProgRAMmer Dimonych ©   (15.08.12 17:40) [14]
>
> Вообще, по-моему, настал момент, когда надо спросить:
>
> А какая вообще задача решается?


Сейчас напишу...


 
Рекрут   (2012-08-15 17:46) [16]

В TIcon загружается вообще через поток, потом создается через CreateIcon с туевой кучей каких то преобразований с пикселями. Зачем?


 
Inovet ©   (2012-08-15 17:47) [17]

> [16] Рекрут   (15.08.12 17:46)

Это описание задачи?


 
Рекрут   (2012-08-15 17:49) [18]

Это отступление.

Как установить большую иконку?

SendMessage(Handle, WM_SETICON, ICON_BIG, H);

Устанавливает для маленькой, для большой нет.


 
ProgRAMmer Dimonych ©   (2012-08-15 17:57) [19]

> [18] Рекрут   (15.08.12 17:49)
> Как установить большую иконку?

Это не задача. Задача - она шире, здесь только вызванное задачей желание.

И код тогда уж подробный, s"il vous plait. Не верится мне что-то, что user32.dll - одна из самых древних библиотек Windows - творит неожиданную ересь с иконками и это нигде не задокументировано.


 
Рекрут   (2012-08-15 18:03) [20]


> ProgRAMmer Dimonych ©   (15.08.12 17:57) [19]


Примерный код:

H:= ExtractIcon(Instanse, "1.ico", 0);
SendMessage(Handle, WM_SETICON, ICON_BIG, H);

Можете проверить.


 
DVM ©   (2012-08-15 18:18) [21]


> Рекрут

Может лучше в сисадмины, а? Ну их эти иконки и WinApi.


> Устанавливает для маленькой, для большой нет.

с чего ты решил, что она не устанавливает?


 
DVM ©   (2012-08-15 18:20) [22]


> Рекрут   (15.08.12 18:03) [20]


> H:= ExtractIcon(Instanse, "1.ico", 0);

Ты иконку какого размер тут загружаешь? В 1.ico у тебя небось все размеры иконок в одном файле?


 
Рекрут   (2012-08-15 18:36) [23]


> DVM ©   (15.08.12 18:18) [21]
>
>
> > Рекрут
>
> Может лучше в сисадмины, а? Ну их эти иконки и WinApi.


Откуда такой батхерт? :)


> с чего ты решил, что она не устанавливает?
>


Alt-Tab смотри.


>
> Ты иконку какого размер тут загружаешь? В 1.ico у тебя небось
> все размеры иконок в одном файле?


Где видишь, что изображения не меняют для этого масштаб?


 
DVM ©   (2012-08-15 22:03) [24]


> Рекрут   (15.08.12 18:36) [23]

Все там прекрасно меняется, запусти к примеру калькулятор и этот каод поменяет у него большую иконку:

procedure TForm1.Button1Click(Sender: TObject);
var
 h: THandle;
begin
 h := FindWindow(nil, PChar("Калькулятор"));
 SendMessage(h, WM_SETICON, ICON_BIG, Application.Icon.Handle);
end;

А ты иконку загружаешь неправильно или не ту вообще. Ошибки пушкин как обычно проверять будет.


 
Anatoly Podgoretsky ©   (2012-08-16 10:53) [25]

> Рекрут  (15.08.2012 17:38:11)  [11]

Освой поиск в файлах, это в проводнике


 
Anatoly Podgoretsky ©   (2012-08-16 10:56) [26]


> Может лучше в сисадмины, а?

сейфы таскать, ведь программист он сильный.


 
Inovet ©   (2012-08-16 11:52) [27]

> [25] Anatoly Podgoretsky ©   (16.08.12 10:53)
> Освой поиск в файлах, это в проводнике

Это в FARе.:)


 
Anatoly Podgoretsky ©   (2012-08-16 14:14) [28]

> Inovet  (16.08.2012 11:52:27)  [27]

В проводнике, поиск по содержимому, и что странно - ищет.


 
Inovet ©   (2012-08-16 14:58) [29]

> [28] Anatoly Podgoretsky ©   (16.08.12 14:14)
> В проводнике, поиск по содержимому, и что странно - ищет.

Да знаю я, что он ищет, но так и не привык к этому интерфейсу Майкрософт (как ставить смайлик выражающий рвотный рефлекс?), а в Вин7 начал иногда пользоваться проводником.


 
Anatoly Podgoretsky ©   (2012-08-16 15:05) [30]

> Inovet  (16.08.2012 14:58:29)  [29]

Зря не привык, ищет как Юникод в файлах ворд, так и ANSI
При том поиск в XP проще и понятнее, но последнее время и семерке тоже стало
ничего


 
Inovet ©   (2012-08-16 16:14) [31]

> [30] Anatoly Podgoretsky ©   (16.08.12 15:05)
> Зря не привык, ищет как Юникод в файлах ворд, так и ANSI

И с кучей файлов Ворд ФАР справляется. Надо в поиске указать, чтобы искал по всех кодовых страницах.


 
Рекрут   (2012-08-16 21:19) [32]


> DVM ©   (15.08.12 22:03) [24]
>
>


Батюшки! Пробовал на 2 иконках до этого не работало.
У одной много в пачке - Adobe Flash иконка, у другой одна.


>  Anatoly Podgoretsky ©   (16.08.12 10:56) [26]
>
>
> > Может лучше в сисадмины, а?
>
> сейфы таскать, ведь программист он сильный.
>


Зачем сильному программисту сейфы таскать? :)


 
DVM ©   (2012-08-17 00:14) [33]


> Рекрут   (16.08.12 21:19) [32]


> Батюшки! Пробовал на 2 иконках до этого не работало.
> У одной много в пачке - Adobe Flash иконка, у другой одна.
>

А теперь заработало что ли?


 
Рекрут   (2012-08-17 17:13) [34]


> DVM ©   (17.08.12 00:14) [33]
>
>


Да. Беда была в иконках. Не выяснил какая.



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.058 c
1-1296984241
Wadimka
2011-02-06 12:24
2013.03.22
Как использовать сжатие GZIP в запросе SOAP для компонентTHTTPRIO


2-1329811084
leklerk
2012-02-21 11:58
2013.03.22
Изменение данных в БД через DBGrid


15-1337000174
Внук
2012-05-14 16:56
2013.03.22
На Москву!


15-1349295678
ProgRAMmer Dimonych
2012-10-04 00:21
2013.03.22
Подсчёт ссылок на строку таблицы в MySQL


2-1328771126
JohnKorsh
2012-02-09 11:05
2013.03.22
Масштабирование формы при разных разрешениях экрана.