Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Системное программирование и WinAPI > как узнать на каком элементе ListView было вызвано |
Автор: Dmitriy2k 17.1.2008, 16:08 | ||
Подскажите пожалуйста. У меня готовый ListView(стиль REPORT). Я вызываю над ним контекстное меню
DoContextMenu - моя функция, создает контекстное меню Хотелось бы узнать, как можно определить - на каком элементе появилось контекстное меню? Не хотелось бы услышать такой ответ- "просчитай высоту строки, умножь и тд итп.. файл- пример прилагается. |
Автор: BorisVorontsov 17.1.2008, 16:24 |
Лови NM_RCLICK. |
Автор: Doc_d0s 17.1.2008, 19:56 |
И что дальше??? |
Автор: Earnest 17.1.2008, 20:36 |
Не нужно никого ловить, тем более мы уже поймали WM_CONTEXTMENU. Нужно узнать коорднаты мыши (GetCursorPos), преобразовать их в координаты окна (ScreenToClient) и послать сообщение LVM_SUBITEMHITTEST (или воспользоваться макросом ListView_SubItemHitTest). В результате получишь и номер строки, и другую информацию (вдруг пригодится). Добавлено через 1 минуту и 26 секунд Ах да, в WM_CONTEXTMENU уже есть координаты мыши, экранные. |
Автор: BorisVorontsov 18.1.2008, 10:04 | ||
Дальше читать MSDN...
|
Автор: Dmitriy2k 18.1.2008, 14:56 |
Earnest: Спасибо большое за подсказку. Координаты окна получил. Номер элемента ListView узнал, что собственно мне и было нужно. |