Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

Видеокурс программиста и крэкера 5D 2O17
(актуальность: октябрь 2O17)
Свежие инструменты, новые видеоуроки!

  • 400+ видеоуроков
  • 800 инструментов
  • 100+ свежих книг и статей

УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Как установить цвет фона иконок на рабочем столе, либо прозрачный фон

Для этого нужно найти окно "SysListView32" (которое является списком, который содержит иконки рабочего стола). Сперва будем искать главное родительское окно "Progman", которое содержит дочернее окно "SHELLDLL_DefView" , которое в свою очередь имеет дочернее окно "SysListView32". Для этого можно воспользоваться API функцией FindWindow to. Когда Мы получим дескриптор окна "SysListView32", то можно будет воспользоваться макросами ListView_SetTextBkColor и ListView_SetTextColor для установки желаемого цвета.

Ниже приведена процедура, которая делает всё вышеперечисленное. Если параметр Trans равен true, то будет установлен прозрачный фон, иначе цвет фона будет равен Background.


 unit DeskIcons;
 
 interface
 uses Graphics; // Будет использоваться TColor
 
 procedure SetDesktopIconColor(Forground, Background: TColor; Trans: Boolean);
 procedure SetDefaultIconColors;
 
 implementation
 uses Windows, CommCtrl; // будут использоваться HWND и ListView_XXXXX
 
 procedure SetDesktopIconColor(Forground, Background: TColor; Trans: Boolean);
 
 var
   Window: HWND;
 begin
   // Находим нужное окно в три этапа
   Window := FindWindow('Progman', 'Program Manager');
   // Используем FindWindowEx для нахождения дочернего окна
   Window := FindWindowEx(Window, HWND(nil), 'SHELLDLL_DefView', '');
   // SysListView32, это список с иконками на рабочем столе
   Window := FindWindowEx(Window, HWND(nil), 'SysListView32', '');
   // Используем макрос для очистки цвета фона
   if Trans then
     ListView_SetTextBkColor(Window, $FFFFFFFF) // фоновый цвет
   else
     ListView_SetTextBkColor(Window, Background); // фоновый цвет
   ListView_SetTextColor(Window, Forground); // передний цвет
   // теперь перерисовываем иконки
   ListView_RedrawItems(Window, 0, ListView_GetItemCount(Window) - 1);
   UpdateWindow(Window); // да¸м команду "немедленно перерисовать"
 end;
 
 procedure SetDefaultIconColors;
 { Эта процедура устанавливает цвета, которые заданы в
   windows по умолчанию }
 var
   Kind: Integer;
   Color: TColor;
 begin
   Kind := COLOR_DESKTOP;
   Color := GetSysColor(COLOR_DESKTOP);
   SetSysColors(1, Kind, Color);
 end;
 
 end.
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS