我用CSplitterWnd实现了窗口分割. 其中左窗口中为树形控件, 右窗口为列表控件CListView
我想在右侧的视图类中响应框架消息:ID_FILE_SAVE_AS. 据我所知, WM_COMMAND的传递方向是先到视图类, 再转向文档类. 但是我目前在视图类中响应主菜单条的ID_FILE_SAVE_AS, 加入消息映射函数后都不被执行. 我注意到视图类没有截获此消息, 而是被传递到了文档类中. 如果文档类中没有显式地加入对ID_FILE_SAVE_AS的消息映射, 就会执行CDocument::OnFileSaveAs函数.
因为加建一个单文档视图项目时, 在视图中可以截获此消息, 所以我怀疑是因为分割窗口所致, 请高手指点迷津.
我想在右侧的视图类中响应框架消息:ID_FILE_SAVE_AS. 据我所知, WM_COMMAND的传递方向是先到视图类, 再转向文档类. 但是我目前在视图类中响应主菜单条的ID_FILE_SAVE_AS, 加入消息映射函数后都不被执行. 我注意到视图类没有截获此消息, 而是被传递到了文档类中. 如果文档类中没有显式地加入对ID_FILE_SAVE_AS的消息映射, 就会执行CDocument::OnFileSaveAs函数.
因为加建一个单文档视图项目时, 在视图中可以截获此消息, 所以我怀疑是因为分割窗口所致, 请高手指点迷津.
对于一楼的回答, 目前消息没有被视图类截获, 怎么办呢? 对于二楼的回答, 完全不理解您的意思. 莫非是说在文档类的响应函数中再把消息传递给视图类中? 这个思路我觉得可以解决, 但是太复杂, 有点绕. 毕竟我是打算在视图类上截获这个消息后, 再从视图上采集数据后, 再交给文档类处理.
原因是在使用了CSplitterWnd分割窗口之后, 两个视图类的优先级是一样的, 但是只有一个能响应这个消息. 结果是被视图分割中的0行0列的视图类给截获了. 那么只要知道消息到了哪里, 就好办, 如果不是我们希望的视图类获取了消息, 就再把它传递出来.两位朋友的解释有点模棱两可, 积分我就自己省下了. 谢过.