|
|
|
Вопрос по ListView
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста есть список есть выбранный элемент списка(слева стоит галочка) если галочку снимаю, получаю WM_NOTIFY и новое состояние LVIS_FOCUSED|LVIS_SELECTED но если просто выделить этот элемент - получаю тоже самое (а галка не снята) а мне нужно определить либо просто выделен, либо галка снята как это определить спомощью WM_NOTIFY? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 16:15 |
|
||
|
Вопрос по ListView
|
|||
|---|---|---|---|
|
#18+
Это не содержится в сообщении. Оно извещает только о том что что-то изменилось. Чтобы узнать, что сейчас с галкой, нужно просмотрь на состояние элемента. Для этого есть много вариантов Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 16:56 |
|
||
|
Вопрос по ListView
|
|||
|---|---|---|---|
|
#18+
Извините, ошибочка: автор Это не содержится в сообщении. Оно извещает только о том что что-то изменилось. Cодержит, можно месадж не слать. Tам в LPARAM сидит Код: plaintext и можно вычислить BOOL bChecked = (lpnmv->uNewState >> 12) - 1; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 18:06 |
|
||
|
Вопрос по ListView
|
|||
|---|---|---|---|
|
#18+
ListView_GetCheckState(pnmv->hdr.hwndFrom, pnmv->iItem); возвращает -1 что же не правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2004, 06:53 |
|
||
|
Вопрос по ListView
|
|||
|---|---|---|---|
|
#18+
должно быть ничего не выбрано ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2004, 07:29 |
|
||
|
Вопрос по ListView
|
|||
|---|---|---|---|
|
#18+
Feon Вы наверное LVN_ITEMCHANGING ловите а не LVN_ITEMCHANGED. Тогда учтите что когда Вы только добавляете айтемы, оно тоже к Вам придет, но ListView_GetCheckState обломается, т.к. такого айтема еще нету в LV (В момент когда Вы заполняете свой LV) . Предпримите что-нибудь чтобы этот особый случай не учитывать. Например, выходите из обработчика если не закончена начальная загрузка LV данными. Или если Вам все равно и Вы не хотите отменять изменения то перейдите на LVN_ITEMCHANGED. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2004, 11:07 |
|
||
|
Вопрос по ListView
|
|||
|---|---|---|---|
|
#18+
Отлавливаю именно LVN_ITEMCHANGED ------------------------------ if( uMsg == WM_NOTIFY ) { NMLISTVIEW* pnmv = (NM_LISTVIEW FAR *) lParam; //LPNMLISTVIEW lpnmv = (LPNMLISTVIEW) lParam; //BOOL bChecked = (lpnmv->uNewState >> 12) - 1; if(pnmv->hdr.code == LVN_ITEMCHANGED) { BOOL w_w = ListView_GetCheckState(pnmv->hdr.hwndFrom, pnmv->iItem); ------------------------------- w_w равно -1 стоит галка или нет не пойму в чем дело может хендл не тот? но я посылаю месадж тому окну, от которого пришло LVN_ITEMCHANGED дело в том, что я контролирую сообщения главному род. окну ведь LVN_ITEMCHANGED приходит от LV?, в род. окно? и мне нужно вычислить тот момент, когда снимается галка вот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2004, 13:08 |
|
||
|
Вопрос по ListView
|
|||
|---|---|---|---|
|
#18+
agfeonov В родительское окно, от LV, но от всех LV и вообще от всех чилдренов. А Вы почему-то не проверяете явно от кого WM_NOTIFY пришел. Вы проверяете только hdr.code, а может быть (зависит от Вашего случая) нужно еще проверить hdr.hwndFrom или hdr.idFrom. Ведь у Вас там поди несколько лист вью? И не все с чекбоксами, и тогда получается ошибка в том что у того кому вы шлете месадж LVS_EX_CHECKBOXES не выставлен. И к тому же не уверен что константа LVN_ITEMCHANGED не может случайно совпасть с каким то другим кодом (например в случае если Вы сами какой код неосторожно придумали и шлете нотифаем). Вобщем может быть причин много а вывод - проверьте, от того ли чилда пришло, который LV c чекбоксами Ну и еще с целью структуризации кода, снижения мелкобажности, может быть имеет смысл разбить обработку WM_NOTIFY на несколько функций, перенести эти проверки на карту сообщений и тд, если нет противопоказаний и к тому же Вы используете стандартную библиотеку где такие средства уже есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2004, 16:21 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32846684&tid=2033922]: |
0ms |
get settings: |
8ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
69ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 257ms |
| total: | 436ms |

| 0 / 0 |
