Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.07;
Скачать: CL | DM;

Вниз

Как сделать прозрачные надписи под значками?   Найти похожие ветки 

 
Sceleton   (2003-05-31 12:52) [0]

Может ли мне кто подсказать, есть ли функция WinAPI, при помощи которой можно убрать фон надписей под значками на рабочем столе?


 
Yanis ©   (2003-05-31 13:41) [1]

Кажется таких 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.



 
Sceleton   (2003-06-02 10:55) [2]

Спасибо. Работает. Правда только после небольшой переделки.


 
Yanis ©   (2003-06-02 15:45) [3]

Если не лень помочь брату программисту, то код в студию, прошу!


 
Sceleton   (2003-06-05 10:54) [4]

Короче, надо подкорректировать процедуру 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;



Страницы: 1 вся ветка

Текущий архив: 2003.08.07;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
3-20406
Филипп
2003-07-16 14:04
2003.08.07
База данных ACCESS


4-20859
Dmk
2003-06-01 01:28
2003.08.07
Как перечислить все окна над моим?


14-20763
AlexGreG
2003-07-21 07:03
2003.08.07
... это не значит, что я отказался от Дельфи ...


1-20618
Pauk
2003-07-24 13:23
2003.08.07
Combobox и размещение DropedDown-списка


14-20792
3APA3A
2003-07-19 15:26
2003.08.07
Файлы *.chm и *.hlp