Вопрос по ListView
От: DreamWeaver ОАЭ  
Дата: 17.01.05 06:16
Оценка:
Мне нужно обрабатывать щелчек мыши на определенной ячейки в ListView. Строку определить просто, а вот для определения столбца обрабатываю WM_LBUTTONDOWN, определяю позицию мыши в экранных коородинатах, перевожу в экранные координаты положение столбца и сравниваю. Все работает здорово, пока не появляется у ListView горизонтальная линейка прокрутки. Позиция столбца считается от начала ЭУ ListView, поэтому можно сделать (задав соответствующую ширину столбца) чтобы столбец начинался например с 1500-ого пикселя (при горизонтальном разрешени 1024). Прокрутив горизолнтальную линейку прокрутки на этот столбец нажаите кнопки мыши по нем ни к чему не приведет (что не удивительно, ведь горизонтальное положение мыши не превосходит 1024, а нужный мне столбец начинается с 1500).
Вот и вопрос: как можно определить смещение в пикселях, на которое прокручен текущий список по горизонтали?
В сложившихся условиях ни то, ни другое не сулило ему никакой выгоды. Чего не скажешь о молчании...
Re: : Вопрос по ListView
От: Stanky  
Дата: 17.01.05 06:58
Оценка:
> Вот и вопрос: как можно определить смещение в пикселях, на которое прокручен текущий список по горизонтали?
>
Не тем путём идёшь!!!
Глянь в сторону LVM_HITTEST и LVM_SUBITEMHITTEST!!!
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
ListView - как определить subitem при обработке щелчка мышью
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 17.01.05 07:13
Оценка: 1 (1)
#Имя: FAQ.listview.subitemclick
Здравствуйте, DreamWeaver, Вы писали:

DW> Мне нужно обрабатывать щелчек мыши на определенной ячейки в ListView. Строку определить просто, а вот для определения столбца


поставь обработчик на NM_CLICK, NM_RCLICK или NM_DBLCLK, смотря что тебе надо, в уведомлении тебе придет NMHDR * pNMHDR, приводишь его к NMLISTVIEW* и получаешь subitem:

    LPNMLISTVIEW pNMLV = ( LPNMLISTVIEW ) pNMHDR;

    /*
        typedef struct tagNMLISTVIEW{
           NMHDR   hdr;
           int     iItem;
           int     iSubItem;   // voila!
           UINT    uNewState;
           UINT    uOldState;
           UINT    uChanged;
           POINT   ptAction;
           LPARAM  lParam;
        } NMLISTVIEW, FAR *LPNMLISTVIEW;
    */


чтоб это работало, для listview должен быть установлен расширенный стиль LVS_EX_FULLROWSELECT
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.