![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать прозрачные надписи под значками? [D7, Win95/98, WinXP]
Sceleton © (2003-05-31 12:52:00)Может ли мне кто подсказать, есть ли функция WinAPI, при помощи которой можно убрать фон надписей под значками на рабочем столе?
Sceleton (2003-06-05 10:54:00) [1]Короче, надо подкорректировать процедуру SetDesktopIconColor:
procedure SetDesktopIconColor(Forground, Background: TColor; Trans: Boolean);
var H: THandle;
begin
H:=GetWindow(GetWindow(FindWindow("progman", nil), GW_CHILD), GW_CHILD);
if Trans then
ListView_SetTextBkColor(H, $FFFFFFFF)
else
ListView_SetTextBkColor(H, Background);
ListView_SetTextColor(H, Forground);
ListView_RedrawItems(H, 0, ListView_GetItemCount(H) - 1);
UpdateWindow(H);
end;
Yanis (2003-06-02 15:45:00) [2]Если не лень помочь брату программисту, то код в студию, прошу!
Sceleton (2003-06-02 10:55:00) [3]Спасибо. Работает. Правда только после небольшой переделки.
Yanis (2003-05-31 13:41:00) [4]Кажется таких API нету.
Но вот текст с www.sources.ru:
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.