CMfcTabCtrl обработка WM_* сообщений внутри табов.
От: _f_b_i_  
Дата: 03.03.17 13:41
Оценка:
Доброе время суток.

Подскажите что делаю не так? Итак имеется Стандартное MDI приложение сгенерированое визардом VS.

В стандартном примере есть класс COutputWnd : public CDockablePane в котором используется CMFCTabCtrl для организации табов, и по умолчанию там добавляется три tabs (Build,Debug,Find) как объекты CListBox : public CWnd. Если я добавляю свой объект CEmptyWnd : public CWnd то столкнулся с проблемой. Мышиные сообщения при активном CEmptyWnd tab не доходят до адресата, хотя CEmptyWnd имеет обработчик ON_WM_LBUTTONDOWN. В диспатчинге WM_ сообщение посылается объекту COutputWnd. Если удалить табы CMFCTabCtrl и просто использовать CEmptyWnd то все сообщения обрабатываются именно моим CEmptyWnd объектом. И теперь собственно вопрос: почему мышиные сообщения к CListBox обрабатываются этим объектом (когда tab с этим объектом активен), а когда активен tab CEmptyWnd мышиные сообщения туда даже не посылаются. В этом случае получатель сообщения в MSG.hwnd структуре указано окно CMFCTabCtrl, которое делигирует мышиное сообщение в COutputWnd, хотя я ожидал его получить в CEmptyWnd?
Re: CMfcTabCtrl обработка WM_* сообщений внутри табов.
От: _f_b_i_  
Дата: 03.03.17 19:25
Оценка:
Здравствуйте, _f_b_i_, Вы писали:

___>Доброе время суток.


___>Подскажите что делаю не так? Итак имеется Стандартное MDI приложение сгенерированое визардом VS.


Все вопрос снимается. Не правильно создавал объект CEmptyWnd. В качестве pParent указывал не объект CMfcTabCtrl, а this, которым был COutputWnd.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.