Указанный обработчик OnMyCommand ни при каких обстоятельствах не вызывается. Причем в CMyView::PreTranslateMessage WM_COMMAND с id=MYCOMMAND все таки мелькает, но обработчик указанный в карте сообщений не вызывается?
F>Конкретней, как класс объявлен и карта? Не Хочется гадать....
Сенкс, уже вроде разобрался...
Во фрейме было нужно добавить макрос в карту
class CMainFrame : public CFrameWindowImpl<CMainFrame>
, public CUpdateUI<CMainFrame>
, public CMessageFilter
, public CIdleHandler
{
CMyView m_view;//мой "SDI-Вью"
BEGIN_MSG_MAP(CMainFrame)
...
CHAIN_MSG_MAP_MEMBER(m_view)
END_MSG_MAP()
}
Век живи — век учись! Странно что визард сам его не добавил!?!
Как-то раньше все больше окна да диалоги на WTL писал, а некое подобие Doc-View, MDI, SDI даже и не пробовал.
Но в любом случае спасибо за быстрый отклик.
Здравствуйте, Carc, Вы писали:
C>Странно что визард сам его не добавил!?!
Потому что этот идентификатор — команда меню главного окна, соответственно, и обрабатывается по умолчанию в главном окне. В дочерних обработчики контролов только.
Re[4]: Маршрутизация WM_COMMAND в SDI-приложении (WTL)
Здравствуйте, byleas, Вы писали:
B>Здравствуйте, Carc, Вы писали:
C>>Странно что визард сам его не добавил!?! B>Потому что этот идентификатор — команда меню главного окна, соответственно, и обрабатывается по умолчанию в главном окне. В дочерних обработчики контролов только.
Имелось ввиду почему визард не добавил CHAIN_MSG_MAP_MEMBER(memberWnd)... Именно из-за этого не приходили WM_COMMAND в дочернее окно.
Здравствуйте, Carc, Вы писали:
C>Имелось ввиду почему визард не добавил CHAIN_MSG_MAP_MEMBER(memberWnd)... Именно из-за этого не приходили WM_COMMAND в дочернее окно.
Вот я и сказал, почему. Или вы считаете, что дочернее окно "вид" должно обрабатывать команды от главного? А как быть в случае нескольких дочерних окон?
Re[6]: Маршрутизация WM_COMMAND в SDI-приложении (WTL)
Здравствуйте, byleas, Вы писали:
B>Здравствуйте, Carc, Вы писали:
C>>Имелось ввиду почему визард не добавил CHAIN_MSG_MAP_MEMBER(memberWnd)... Именно из-за этого не приходили WM_COMMAND в дочернее окно. B>Вот я и сказал, почему. Или вы считаете, что дочернее окно "вид" должно обрабатывать команды от главного? А как быть в случае нескольких дочерних окон?
1) Ну а что дурного то? В смысле не уловил сарказма... Т.е. как бы с одной стороны замечание верное, но с другой — если в дочернем окне прописано что-то в карте тогда пусть и обработает, ан нет дык и не будет обрабатываться? В общем, чего-то я не уловил — что не так?
2) А CHAIN_MSG_MAP_MEMBER(memberWnd) только на WM_COMMAND распространяется или нет?
Здравствуйте, Carc, Вы писали:
C>2) А CHAIN_MSG_MAP_MEMBER(memberWnd) только на WM_COMMAND распространяется или нет?
На все сообщения. По F12 видно (или alt+G, если ассист стоит).