· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Как заставить Листвиер выделять под элементы без в

<< . 1 . 2 . 3 . >>

Посл.отвђт Сообщенiе


Дата: Авг 1, 2003 12:49:16 · Поправил: P2M

Screwtape
Первое - это subclassing, покажите CreateWindow.
Второе - WM_DRAWITEM обычно ловят в оконной процедуре родителя ListView'а.


Дата: Авг 1, 2003 12:56:10 · Поправил: Screwtape

P2M
Извеняюсь кнешно но вы просили показать а не сказать что я делаю))
а что это сабклассинг я знаю...
И дравитем я ловил и на форме также ее сабкластировал и на самом элементе...
Так для теста))
Но как я понял этот драв итем не относится не всплывает при прорисовке подэлементов

Да и нет у меня процедуры создания окна все на диалоге...
Вообщем стиль репорт... показ колонок одиночное выделение.. сетка... вот все что там стоит))
Вот я не могу понять что за сообщения 204E постояно приходит к листверу...


Дата: Авг 1, 2003 13:02:22

Screwtape
Как Вам можно помочь/посоветовать если Вы не показываете ни строчки исходника?

что за сообщения 204E
Afaik не LVM_xxx.


Дата: Авг 1, 2003 13:05:57

Если нет стиля LVS_OWNERDRAWFIXED, то контроль
все рисует сам по WM_PAINT и нет никаких WM_DRAWITEM.
Если LVS_OWNERDRAWFIXED есть, то для всех items (а не
subitems) приходит WM_DRAWITEM. DRAWITEMSTRUCT и не
содержит № subitem, а только itemID. Поэтому получить
сообщение на отрисовку отдельного subitem'а нельзя - такого не существует.


Дата: Авг 1, 2003 13:07:01

P2M
Ну так что надо имено показать))
Процедуру обработки нажатия клавиши на элементе?
Afaik не LVM_xxx.
LVM_FIRST 1000h
так что наврлятли


Дата: Авг 1, 2003 13:09:28

ZverA
Ну контрол же както рисует сабитемы?))
и врятли все ресования тогда в WM_PAINT


Дата: Авг 1, 2003 13:10:11

204E - или WM_USER + xxx или зарегистрированное сообщение,
в общем это сообщение самой аппликации


Дата: Авг 1, 2003 13:14:17

204E - или WM_USER + xxx или зарегистрированное сообщение,
в общем это сообщение самой аппликации

Как то это очень странно))


Дата: Авг 1, 2003 13:19:42 · Поправил: ZverA

врятли все ресования тогда в WM_PAINT
Именно все, попавшие в регион отрисовки. Иначе бы
пришлось посылать и обрабатывать кучу WM_DRAWITEM,
что и делается при стиле LVS_OWNERDRAWFIXED, потому
он и медленнее отрисовывается, чем обычный listveiw,
который ничем не отличается в смысле отрисовки от любого
другого контрола, скажем EDIT.


Дата: Авг 1, 2003 13:26:14

Мда... видимо придется закрашивать элементы...
Других вариантов точно нет>?


Дата: Авг 1, 2003 13:29:44

Screwtape
же както рисует сабитемы?
Пришел WM_DRAWITEM, получайте rect (LVM_GETSUBITEMRECT) каждого subitem'а и рисуйте.


Дата: Авг 1, 2003 13:35:35

P2M
Как было сказано выше дравитем приходит только при перерисовке главного итема...


Дата: Авг 1, 2003 13:35:55

Другой вариант:
в subclassing'e:
case WM_PAINT:
{
CallWindowProc(lpszOrig, hList, WM_PAINT, wp, lp);
/*
а здесь рисуй, что хочешь
*/
}
return 0;


Дата: Авг 1, 2003 13:38:54

ZverA
ТАк это и есть этот вариант)) а не другой


Дата: Авг 1, 2003 13:46:32

Я тут подумал из паинта скорее всего функция получает состояния ечейки... если закрашен саб интем в фокусе она попробует получить значения итема... только поле того как сама его отрисует...

<< . 1 . 2 . 3 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.061