1.
Вот есть в окне список как и где послать и где и как перехватить LVM_SETITEM и др.
типа LVM_ . В принципе послать - это надо вызвать ListView_SetItem. Но вот если мне надо
обработать по своему - где энто сделать.
Ай ладно спрошу ещё ;-)
2.
Вот список тот же самый там есть кроме прочего чекбоксы (стиль LVS_EX_CHECKBOXES),
как мне при изменении чекбокса изменить отображение иконки, вообщето это уже сам...
короче где перехватить LVM_GETITEMSTATE насколько я понял его то и надо перехватывать,
т.к. в WindowProc как то не очень получается, или я чего то донт андерстэнд.
Комплексный вопрос про LVM_
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Совет такой - посмотри на сообщения с префиксом LVN - в контролах фишка в том что им сообщения приходят через нотификации (через сообщение WM_NOTIFY)
В SAD - все в SAD.
WM_NOTIFYKolinus писал(а):Совет такой - посмотри на сообщения с префиксом LVN - в контролах фишка в том что им сообщения приходят через нотификации (через сообщение WM_NOTIFY)
idCtrl = (int) wParam;
pnmh = (LPNMHDR) lParam;
Но WM_NOTIFY там через lParam можешь обратиться к структуре NMHDR.code . Но туда сообщения типа LVM_ всёравно не передаются. А вот что написано про LVM_SETITEM, но нигде его словить всё равно не могу:
LVM_SETITEM
wParam = 0;
lParam = (LPARAM) (const LPLVITEM) pitem;
LVN_ITEMCHANGED - а это или подобное ?
В SAD - все в SAD.
кроче цель достигнута но как то корявоKolinus писал(а):LVN_ITEMCHANGED - а это или подобное ?
вот код, когда изменяю чекбокс меняю картинку и всё работает.
Код: Выделить всё
NM_LISTVIEW* plv]
Я просто просмотрел это сообщение и обнаружил, что при изменении чекбоксов меняются 8192 и 4096 в параметре uNewState. Кароче поставил я их в обработку и по ним определяю действия, но откуда они и кто такие не понятно. В мсдне пока ничего не нашёл.
А всё таки интерестно где обрабатывать LVM_ ...
Alezis, жестко кодировать константы, конечно, не дело. Для проверки состояния чекбокса есть спец.макрос:
Также см. MSDN http://msdn.microsoft.com/library/defau ... erview.asp
Код: Выделить всё
BOOL ListView_GetCheckState(
HWND hwndLV,
UINT iIndex
);
Ну да знаю такую мазу. Но вот тока при изменении чекбокса надо менять иконки, а это с помощью надо делать обработчика(т.е. внутри оного) а ListView_GetCheckState не подходит.
Почему же не подходит?
-
- Сообщения: 1
- Зарегистрирован: 05 июл 2005, 23:38
- Откуда: Украина, Одесса
:!: :!: :!: На вопрос об обработке кодов LVN_ и сообщений NM_ я могу посоветовать использовать сообщение WM_NOTIFY. Например,
case WM_NOTIFY:
{
NMHDR *p;
p=(LPNMHDR)lParam;
if(wParam==IDC_LIST1)
{
if(p->code==LVN_COLUMNCLICK/*NM_CLICK
и другое*/)
//некоторые действия }
break;
}
Для проверки [некоторыми действиями] может быть простой вызов exit(0). Всё работает безотказно. Структура NMHDR хорошо подходит для выборки окна-источника сообщения и соответствующего кода.
case WM_NOTIFY:
{
NMHDR *p;
p=(LPNMHDR)lParam;
if(wParam==IDC_LIST1)
{
if(p->code==LVN_COLUMNCLICK/*NM_CLICK
и другое*/)
//некоторые действия }
break;
}
Для проверки [некоторыми действиями] может быть простой вызов exit(0). Всё работает безотказно. Структура NMHDR хорошо подходит для выборки окна-источника сообщения и соответствующего кода.
VSP