Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизКак поменять маленькую иконку без 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;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.072 c