CToolBar的ON_COMMAND消息
鄙人看了N多书籍和资料都说当用户按下工具栏上的按钮时会给工具栏的父窗口发送一个WM_COMMAND消息,但是在MFC单文档程序中,工具栏停靠时CToolBar的父窗口是CDockBar,后者的父窗口是CMainFrame,工具栏浮动时父窗口也是CDockBar,后者的父窗口是CMiniFrameWnd。但我调试时发现当按下工具栏按钮时CToolBar接受到WM_LBUTTONUP消息后交由其默认的窗口过程处理后发送出了一个WM_COMMAND消息,问题来了:不管工具栏是否停靠,他的直接父窗口并不是CMainFrame,但此时WM_COMMAND消息中的目标窗口就是CMainFrame(已通过SPY++查看窗口句柄得知),即CMainFrame获得了WM_COMMAND的分发权。
我想问的是工具栏的WM_COMMAND消息不是应该发送给CDockBar(它的直接父窗口)吗,怎么发送给了CMainFrame呢,我观察调用堆栈也没发现CDockBar把WM_COMMAND消息转交给CMainFrame呀,到底工具栏的窗口过程会给哪个所谓的父窗口发送WM_COMMAND消息呢,大家多多发言,言者有分。