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

Вниз

ListView_SetBkImage   Найти похожие ветки 

 
dsoft ©   (2008-02-19 01:02) [0]

Знает ли All как правильно работать с этой функцией? Сколько не пробовал не получается и поиск ничего не дал. Загружать картинки из файлов получается, теперь бы понять как загрузить из памяти. MSDN по этому поводу молчит, хотя такая возможность имеется.


 
DVM ©   (2008-02-20 12:13) [1]


> dsoft ©

Зачем тебе далась эта функция? Загрузи сам вручную любой битмап откуда хочешь и отрисуй его на ListView по приходу сообщения WM_ERASEBKGND.


 
dsoft ©   (2008-02-20 22:34) [2]

Так я могу и через указанную функцию загрузить, но не совсем удобно. Преимущество в том, что можно грузить все форматы которые понимает система, не используя дополнительных библиотек. А так разницы действительно никакой нет, что так фон скролируется, что так.


 
Sapersky   (2008-02-21 19:47) [3]

Можно и так загрузить любой формат, который понимает система, точнее, Explorer - см. OleLoadPicture.


 
dsoft ©   (2008-02-22 00:07) [4]

Я это знаю так как они использую один механизм, только один явно, а другой нет. Но это не ответ на вопрос.


 
Sapersky   (2008-02-22 14:20) [5]

MSDN по этому поводу молчит, хотя такая возможность имеется.

А это:
http://msdn2.microsoft.com/en-us/library/bb774742(VS.85,printer).aspx
ulFlags=LVBKIF_SOURCE_HBITMAP, в поле hbm указывается Handle битмапа.
Хотя практически - работает или нет - не проверял.


 
dsoft ©   (2008-02-22 20:19) [6]

Я эту страничку давно нашел, но почему то Мелкософт не удосужился привести пример, если просто подставить хэндл загруженного битмапа, то выдает ошибку. Возможно нужна какая-то комбинация флагов, но пока у меня ничего не получилось.


 
Lacmus ©   (2008-02-26 13:46) [7]



unit Unit7;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ExtCtrls, ComCtrls, StdCtrls, Buttons;

type
 TListView = class(ComCtrls.TListView)
   procedure WMEraseBkgnd(var aMessage: TMessage); message WM_ERASEBKGND;
 end;

 TForm7 = class(TForm)
   ListView1: TListView;
   Image1: TImage;
   BitBtn1: TBitBtn;
   procedure BitBtn1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form7: TForm7;

implementation

{$R *.dfm}

uses
 CommCtrl, XPMan;

procedure TListView.WMEraseBkgnd(var aMessage: TMessage);
begin
 DefaultHandler(aMessage)
end;

procedure TForm7.BitBtn1Click(Sender: TObject);
var
 Image: TLVBKIMAGE;
begin
 FillChar(Image, SizeOf(Image), 0);
 Image.ulFlags := LVBKIF_SOURCE_HBITMAP;
 Image.hbm := Image1.Picture.Bitmap.Handle;
 ListView_SetBkColor(ListView1.Handle, CLR_NONE);
 ListView_SetBkImage(ListView1.Handle, @Image);
end;

end.


 
dsoft ©   (2008-03-01 23:54) [8]

Вообще я предполагал, что этот форум по WinAPI, но не суть важно. Не знаю каким образом проверялся приведенный код, но последнюю строчку стоит изменить на нечто подобное:

if not ListView_SetBkImage(ListView1.Handle, @Image) then
  MessageBox(0, "error", "error", MB_OK or MB_ICONERROR or MB_SYSTEMMODAL);


и глянуть на результат. Я думаю, комментарии будут излишне.

P.S. Да, причем тут XPMan, MSDN об этом умалчивает. Данная функция обязана работать и в Win98.


 
Lacmus ©   (2008-03-02 09:10) [9]

Код рабочий на Windows XP SP2, на Windows 98 работает LVBKIF_SOURCE_URL из файлов и ресурсов


 
dsoft ©   (2008-03-03 06:48) [10]


> Код рабочий на Windows XP SP2, на Windows 98 работает LVBKIF_SOURCE_URL
> из файлов и ресурсов


MSDN обещает работу и в Win98.
То что код по СУТИ рабочий видно и не вооруженным глазом, но что не РАБОЧИЙ по существу вот это значительнее.


 
dsoft ©   (2008-03-03 06:57) [11]


> Код рабочий на Windows XP SP2


Для проверки этого утверждения, переключился в WinXP. Код как не работал, так и не работает. Увы.


 
Аноним   (2008-03-20 01:01) [12]

Здраствуйте. А не подскажите ли как на чистом WinApi будет WM_ERASEBKGND сообщение? А то не проходит DefaultHandler(aMessage) без VCL. И заодно подскажите пожалуйста как поменять цвет выделенного элемента и текста в ListView при таком способе помещения в него изображения? А то хоть и указано LVM_SETTEXTCOLOR и LVM_SETTEXTBKCOLOR, а цвета не меняются. Спасибо. =)


 
DVM ©   (2008-03-20 20:55) [13]


> А не подскажите ли как на чистом WinApi будет WM_ERASEBKGND
> сообщение?

Так и будет. WM_ERASEBKGND


 
Аноним   (2008-03-31 00:01) [14]

Да нет... Я не про это. Что нужно вместо DefaultHandler(aMessage) прописать?
Например:

   WM_MEASUREITEM :
     begin
       DC := GetDC(hApp);
       lpmis:=Pointer(LParam);
       item:=Pointer(lpmis.ItemData);
       GetTextExtentPoint32(DC, item.text, StrLen(item.text), size);
       lpmis.itemWidth := size.cx - 18;
       lpmis.itemHeight := 18;
       ReleaseDC(hApp, DC);
     end;


На VCL видел много примеров где вконце функций часто вставляют этот самый DefaultHandler. Когда я просто указываю DefaultHandler, то компилятор ругается. Вот и хотелось бы узнать что надо прописать. =)


 
DVM ©   (2008-03-31 10:38) [15]


> Когда я просто указываю DefaultHandler

Надо вызывать DefWindowProc()



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

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

Наверх




Память: 0.48 MB
Время: 0.048 c
2-1233142319
istok
2009-01-28 14:31
2009.03.15
D2009...


9-1178095987
Sherzod
2007-05-02 12:53
2009.03.15
проблема при масштабировании.....


2-1232538293
@lexei
2009-01-21 14:44
2009.03.15
Как запретить доступ к папкам


6-1200671377
Somes
2008-01-18 18:49
2009.03.15
Терминальный доступ. Поиск по удалённой машине.


15-1231438102
Городской Шаман
2009-01-08 21:08
2009.03.15
Научная магия





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский