Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Вниз

Как нормально вставить фоновый рисунок в 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.036 c
3-1081422620
Zn
2004-04-08 15:10
2004.05.02
Глюки с кодовой страницей - кто виноват?


1-1082307275
DK
2004-04-18 20:54
2004.05.02
Нужно папку запоролить. Как моно сделать


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


7-1078464366
CRACKISH
2004-03-05 08:26
2004.05.02
Свои шрифты!


14-1081397236
Homer
2004-04-08 08:07
2004.05.02
Оплата программы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский