захватить ключ удаления в CListCtrl и выполнить обработку soem - PullRequest
0 голосов
/ 28 мая 2010

У меня есть класс, который наследует от класса CListCtrl, скажем, список классов. У меня есть другой класс dlg, который наследуется от CDialog.

Class dlg содержит экземпляр списка классов.

У меня есть кнопка удаления в классе dlg, на которой я удаляю выбранный элемент в listCtrl и выполняю много другой обработки. Я хочу такую ​​же функциональность при удалении ключа.

Я добавил OnKeyDown () fn - мой список классов, где я могу получить ключ VK_DELETE. Но моя проблема в том, как мне выполнить другую обработку, которую мне нужно сделать в диалоговом классе. Вся эта обработка основана на классах dlg, а не на списках. У меня есть много таких классов DLG с разными данными, и в каждом классе DLG обработка отличается.

Я пытался захватить VK_DELETE в классе диалога, но он не захватывает его, если фокус находится на классе списка.

Я полностью застрял и понятия не имею, как это сделать.

Пожалуйста, дайте мне некоторую идею, как я могу это сделать.

Спасибо, SG

1 Ответ

1 голос
/ 28 мая 2010

Как насчет делегирования вызова, захваченного в классе List, родительскому классу Dialog. Таким образом вы фиксируете VK_DELETE в классе List и говорите родителю, что получили команду Delete. Таким образом, вы можете сохранить всю свою обработку в родительском классе Dialog, если хотите.

((CMyParentDialog*) GetParent())->OnDeleteKeyPressed(this);

Или, что лучше, создайте собственное сообщение и опубликуйте его в родительском окне.

#define W_DELETE_PRESSED_ON_LIST (WM_USER + 1)

GetParent()->PostMessage(WM_DELETE_PRESSED_ON_LIST);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...