Как получить событие Click Tree of Treeview (CTreeCtrl) в MFC, созданное во время выполнения? - PullRequest
2 голосов
/ 21 сентября 2010

Я создал древовидное представление во время выполнения в приложении MFC, я добавил несколько узлов к нему, теперь я хочу сделать что-то по щелчку узлов, так как я могу получить событие щелчка по древовидной структуре?

Мой код выглядит так:

CTreeCtrl *m_ctlTreeview;
m_ctlTreeview = new CTreeCtrl ;
m_ctlTreeview->Create(WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP |
                 TVS_HASLINES | TVS_HASBUTTONS | TVS_LINESATROOT |
         TVS_SINGLEEXPAND | TVS_SHOWSELALWAYS |  
         TVS_TRACKSELECT,
                 CRect(25, 60, 385, 260), this, 0x1221);


hparentitem = m_ctlTreeview->InsertItem("Parent",TVI_ROOT);
m_ctlTreeview->InsertItem("Child", hparentitem);

Ответы [ 2 ]

3 голосов
/ 21 сентября 2010

Один из вариантов - добавить обработчик для уведомлений для этого идентификатора дочернего окна (0x1221 в вашем примере) в родительский класс во время разработки, используя ON_NOTIFY на карте сообщений, как обычно. Если сообщений нет, обработчик не сработает.

В качестве альтернативы, вы можете добавить общий обработчик WM_NOTIFY к карте сообщений родительского окна с помощью ON_MESSAGE, а затем проверить, приходит ли сообщение от вашего нового элемента управления дерева.

1 голос
/ 21 сентября 2010

Я знаком с кодировкой WTL, которая имеет сходство с MFC.Там, где MFC имеет CTreeCtrl, WTL имеет CTreeViewCtrl.

Класс диалога, содержащий элемент управления деревом, должен проверять наличие следующих уведомлений с помощью обработчика кода уведомления:

TVN_SELCHANGED -> OnTreeSelectionChange
NM_RCLICK      -> OnRButtonUp

Я нехочу процитировать любой код WTL, так как он может только ввести в заблуждение, но я надеюсь, что эти сообщения помогут!

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