Форум: "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.035 c