Событие изменения выделения для MFC CListCtrl, вызванное только мышью / вводом с клавиатуры - PullRequest
2 голосов
/ 28 января 2010

Я использую MFC ListCtrl, есть ли способ узнать, было ли изменение выбора вызвано вводом с клавиатуры или мыши, а не программным изменением? я после того же поведения, что и ON_LBN_SELCHANGE для списка. спасибо

Ответы [ 2 ]

2 голосов
/ 29 января 2010

Вы можете использовать GetKeyState (), чтобы узнать, была ли нажата клавиша или кнопка мыши. Не используйте GetAsyncKeyState (), поскольку этот API сообщит вам текущее состояние кнопок клавиатуры / мыши, которое могло измениться при обработке сообщения LBN_SELCHANGE. Однако GetKeyState () сообщит вам состояние, которое было при создании LBN_SELCHANGE.

0 голосов
/ 29 января 2010

AFAIK нет способа узнать эту информацию. Вы знаете, отправляете ли вы сообщение в CListCtrl, поэтому вам следует установить флаг, если вы это сделаете. Если сообщение LBN_SELCHANGE получено и флаг НЕ установлен, значит, оно пришло с клавиатуры / мыши.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...