Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.062 c
15-1330547402
Юрий
2012-03-01 00:30
2013.03.22
С днем рождения ! 1 марта 2012 четверг


3-1277797743
Axe
2010-06-29 11:49
2013.03.22
ошибка поключения Ms Sql


15-1338109969
Екатерина
2012-05-27 13:12
2013.03.22
Созодание АРМ


15-1336163402
Юрий
2012-05-05 00:30
2013.03.22
С днем рождения ! 5 мая 2012 суббота


15-1349123402
Юрий
2012-10-02 00:30
2013.03.22
С днем рождения ! 2 октября 2012 вторник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский