Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Нужно получить по известному хэндлу иконки её глубину цвета [D7, Win2k, WinXP]


Ale}{(is) ©   (2004-08-06 16:39:00) 

Уважаемые Мастера! Помогите решить следующую проблему. Нужно получить по известному хэндлу иконки её глубину цвета. Пробовал получать AND битмап этой иконки, но он всегда имеет глубину 32-bit, т. е. как у экрана. А мне нужно получить реальную глубину. Заранее благодарен.


Mihey_temporary   (2004-08-09 15:59:00) [1]

Попробуй может напиши в Microsoft, мол ваша же API.


Ale}{(is)   (2004-08-09 15:57:00) [2]

Очень жаль, придётся искать обходные решения!


Mihey_temporary   (2004-08-09 15:19:00) [3]

> К сожалению, меня опять не так поняли. Проблема такова: пользователь меняет свойство моего класса Icon: HICON и в результате должны обновиться другие поля этого класса, а именно Width, Height и BPP.

Но ты сам писал:

> Читаю я иконку из файла. Но потом пользователь может заменить одну из иконок файла на другую. А при записи в файл нужно получить её параметры, в частности BPP, что я сделать не могу. Помогите!

В таком случае можно не работать с иконкой явно, а внутри хранить иконку как TBitmap, а загрузку и сохранение и передачу как HICON делать вручную.

Просто не ты первый, кто столкнулся с такой проблемой при работе с HICON. Решения я не знаю.


Ale}{(is)   (2004-08-09 11:20:00) [4]

К сожалению, меня опять не так поняли. Проблема такова: пользователь меняет свойство моего класса Icon: HICON и в результате должны обновиться другие поля этого класса, а именно Width, Height и BPP. Т. о. ничего кроме переменной типа HICON у меня нет, ни файла, ничего вообще. А XORMask, возвращаемые GetIconInfo возвращает всегда 32-битный битмап.


Mihey_temporary   (2004-08-07 19:13:00) [5]

Я знаю эту проблему и не нашёл ей решения, точнее нашёл обход - вручную гружу из файла иконку и все данные, тогда без проблем. Вот модуль, реализующий это дело. Иконки грузятся в TBitmap, PixelFormat которого всегда без проблем опеределяется.

http://www.hot.ee/mvps21/IconLoad.rar


Ale}{(is)   (2004-08-07 09:51:00) [6]

Читаю я иконку из файла. Но потом пользователь может заменить одну из иконок файла на другую. А при записи в файл нужно получить её параметры, в частности BPP, что я сделать не могу. Помогите!


Кириешки   (2004-08-07 07:44:00) [7]

А получить саму иконку, и ее уже измерить?

function GetIcon(wnd:hwnd):TIcon;
begin
result:=TIcon.Create;
result.Handle:=GetClassLong(wnd,GCL_HICON);
end;

procedure TForm1.....Click(Sender: TObject);
var
h : thandle;
begin
h := handleIconki;
geticon(h);
image1.Picture.Icon:=GetIcon(h);
end;

Может быть так получится. Хотя я не знаю, код написал пряма тута и не проверял.


Mihey_temporary   (2004-08-06 18:07:00) [8]

Походу дела очень сложно. Но можно обойти проблему. Как тебе нужно загружать иконки? Если из файла, то данные об этом можно считать напрямую.


Наверх

Титульная страница Поиск, карта сайта Написать письмо