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

Вниз

Как нормально вставить фоновый рисунок в ListView ?   Найти похожие ветки 

 
Midaw ©   (2004-02-08 00:36) [0]

Есть функция ListView_SetBKImage(..), но как она работает и вообще работает ли?


 
DVM ©   (2004-02-08 00:57) [1]

Работает она, но только почему-то с ListView, созданном без применения VCL.

procedure SetBackGroundImage(hImageList: HWND; ImagePath: string);
var
 BKImage: PLVBKImage;
 BKSize: LongInt;
 sI:string;
begin
 CoInitialize(nil);
 sI:=ImagePath;
 BKSize:= SizeOf(TLVBKImage);
 GetMem(BKImage, BKSize);
 BKImage.pszImage:=Pchar(sI);
 BKImage.cchImageMax:=StrLen(PChar(sI));
 BKImage.ulFlags := LVBKIF_SOURCE_URL Or LVBKIF_STYLE_TILE;
 ListView_SetBkImage(hListView,BKImage);
 FreeMem(BKImage, BKSize);
end;

Это будет работать только при наличии в системе IE.

Но проще отрисовать нужное изображение по  WM_ERASEBKGND. Тоже получается нормально.


 
VMcL ©   (2004-02-08 01:19) [2]

>>Midaw ©  (08.02.04 00:36)
>Есть функция ListView_SetBKImage(..), но как она работает и вообще работает ли?

Не работает. Microsoft специально пишет функции, которые не работают. Вставь в system.ini строку "bugs=off"


 
DeadMeat ©   (2004-02-08 16:32) [3]

> [2] VMcL ©   (08.02.04 01:19)
Не обманывайте людей... Это не в System.ini надо писать, а в реестре...
Да и вообще, это секретная информация... Разглашению не подлежит... Теперь придётся всех свидетелей убирать...


 
VMcL ©   (2004-02-09 14:08) [4]

>>DeadMeat ©  (08.02.04 16:32) [3]

Нет! Я мне еще рано умирать, у меня иждивенцы: моему компу еще не исполнилась 16-я переустановка Windows!


 
}{enon ©   (2004-02-09 18:17) [5]


> моему компу еще не исполнилась 16-я переустановка Windows!

Ну это легко исправить :)


 
VMcL ©   (2004-02-09 18:27) [6]

>>}{enon ©  (09.02.04 18:17) [5]

Не так уж легко. Переустановка W2K - минимум где-то час :)


 
}{enon ©   (2004-02-09 18:52) [7]


> Не так уж легко. Переустановка W2K - минимум где-то час

Легко устроить, а не сделать. Т.е. легко заставить кого-то переустановить windows несколько раз (вирус/кривой софт или ОС и т.д.)
P.S. По-моему мы начинаем флудить...


 
VMcL ©   (2004-02-09 19:09) [8]

>>}{enon ©  (09.02.04 18:52) [7]

>вирус/кривой софт или ОС и т.д.)
Не пущу!!! :)

>По-моему мы начинаем флудить...
Во-во, пора уже в потрепаццццца.


 
Midaw ©   (2004-02-13 19:39) [9]

Хочу чтобы иконки нормально отображались на фоне ListView,
думаю что это можно сделать только с помощью ListView_SetBKImage. Смысл сделать заменитель рабочего стола, без панелей задач, без двойного нажатия на иконки и т.д. и т.п.


 
DVM ©   (2004-02-15 13:24) [10]


> думаю что это можно сделать только с помощью ListView_SetBKImage.
> Смысл сделать заменитель рабочего стола, без панелей задач,
> без двойного нажатия на иконки и т.д. и т.п.

можно и с ListView_SetBKImage и без него, дело не в этом.
Надо установить прозрачный цвет фона для иконок и подписей под ними.
попробуй так сделать для своего ListView;

WM_ERASEBKGND:
 begin
  PaintDesktop(wParam);
  result:=1;
 end;

Прозрачный цвет иконок вроде как ListView_SetBkColor() или вроде этого.


 
Midaw ©   (2004-02-20 21:21) [11]

Не плохо выглядит PaintDesktop(..)
Вообще спасибо за хорошие советы DVM.
Прозрачного цвета ListView_SetBKColor не дает так как там можно указать только RGB Color, пробовал по другому, а точнее менять режим Pen (Pen.Mode), но почему-то он не влияет.
Вот если бы он был в свойствах ListView
Также пробовал полностью перерисовать WMPaint ListView, но там проблема с функцией Canvas.TextRect(..), выводит рамку под текст, но самого текста вывести не хотит. А ведь самому писать  функцию прорисовки текста под значками довольно сложно, много ньюансов.


 
DVM ©   (2004-02-20 21:27) [12]


> Прозрачного цвета ListView_SetBKColor не дает так как там
> можно указать только RGB Color

Слово TRANSPARENT волшебное не пробовал писать вместо цвета?


 
DVM ©   (2004-02-20 21:32) [13]

А, нет соврал я. Правильно так:

для текста под значками

ListView_SetTextBkColor(hListView, CLR_NONE);

и соответственно

ListView_SetBkColor(hListView, CLR_NONE);

для фона под значками.


 
Midaw ©   (2004-02-29 22:09) [14]

Все верно, спасибо за ценные советы.
Еще вот какие есть параметры у функции Windows.DrawText(..), не могут найти русское описание этих самых параметров.


 
Acildex   (2004-03-02 11:53) [15]

Подскажите пожалуйста, как как сделать свою форму как Desktop.

Чтобы держать свою форму на заднем плане я делал так

TfmMain = class(TForm)
//...
 public
   { Public declarations }
 protected
   procedure xxx(var msg: TMessage); message WM_ACTIVATE;
 end;
//...

procedure TfmMain.xxx;
begin
 SendToBack;
end;

Вобщем работает, но не так как хотелось бы.



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

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

Наверх




Память: 0.5 MB
Время: 0.03 c
1-1082108875
msgipss
2004-04-16 13:47
2004.05.02
помогите ламеру добавить в свой класс событие


1-1081740909
John
2004-04-12 07:35
2004.05.02
Rave Report


1-1082072161
nsvi
2004-04-16 03:36
2004.05.02
Вопрос по WebBrowser


6-1078344029
AlexeyITN
2004-03-03 23:00
2004.05.02
Есть ли комп в сети? да и по-дешевле...


1-1082202234
Mishenka
2004-04-17 15:43
2004.05.02
Не выводится TPrintDialog.