![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
фон под текстом у иконак на рбочем столе [D5, Win95/98, WinME, Win2k, WinXP]
Igit © (2002-06-06 22:05:00)Как мне на чистом WinApi сделать фон под текстом у иконак на рбочем столе прозрачным. Тот совет в форуме не работает
(по подробнее, pls:)
cdaDmitriy (2002-06-11 19:37:00) [1]Все работает <easy> спасибо
но все константы
Const LVM_FIRST = 4096;
Const LVM_GETTEXTBKCOLOR = 4133;
Const LVM_SETTEXTBKCOLOR = 4134;
Const CLR_NONE
LVM_SETTEXTCOLOR
описаны в модуле Commctrl;
включаешь
uses Commctrl;
и OK
easy (2002-06-10 16:31:00) [2]SendMessage(SysListView32, LVM_SETTEXTCOLOR, 0, clRed);
easy (2002-06-10 15:48:00) [3]LVM_SETTEXTCOLOR:=4132
Igit (2002-06-09 16:45:00) [4]Я не очень (вообще почти) понимаю WinApi :((
Igit (2002-06-09 16:43:00) [5]Чему равен:
Const LVM_SETTEXTCOLOR = ????;
и где его писать?
easy (2002-06-08 16:49:00) [6]to Igit: LVM_SETTEXTCOLOR
SPeller (2002-06-08 03:17:00) [7]2easy (07.06.02 17:45)
> ...прозрачность фона надо контролировать постоянно...
Умнея Microangelo делает фон прозрачным и ставит свой цвет. Убиваю его, а ярлыка всё-равно остаются прежними. Может он внедряет свой поток куда-нить?
Igit (2002-06-07 19:33:00) [8]Работает:)) А как цвет текста установить?
easy (2002-06-07 17:45:00) [9]...прозрачность фона надо контролировать постоянно...
Так что лучше всю эту фишку засунуть в тимер, или ставить хук на LVM_SETTEXTBKCOLOR...
easy (2002-06-07 16:22:00) [10]...вот кусочек юнита:
var
Form1: TForm1;
Const LVM_FIRST = 4096;
Const LVM_GETTEXTBKCOLOR = 4133;
Const LVM_SETTEXTBKCOLOR = 4134;
Const CLR_NONE = 4294967295;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var SysListView32,SHELLDLLDefView:hwnd;
begin
SHELLDLLDefView := FindWindowEx(FindWindow("Progman", "Program Manager"), 0, "SHELLDLL_DefView", nil);
If SHELLDLLDefView <> 0 Then
SysListView32 := FindWindowEx(SHELLDLLDefView, 0, "SysListView32", nil);
If SysListView32 <> 0 Then
begin
If SendMessage(SysListView32, LVM_GETTEXTBKCOLOR, 0, 0) <> CLR_NONE Then
begin
SendMessage(SysListView32, LVM_SETTEXTBKCOLOR, 0, CLR_NONE);
InvalidateRect(SysListView32, 0, True);
UpdateWindow(SysListView32);
End;
End;
end;
...может, немного кривовато, наспех сляпал, но зато работает.8))