我把视图分割以后为什么我的菜单和工具条的命令不响应了?视图是以CView为基类的。是不是要在CMainFrame类里响应什么消息阿?

解决方案 »

  1.   

    菜单和工具条是首先送到文档模板中的视图中处理。
    你找找CMyApp.cpp中的类似这样的:
    CSingleDocTemplate* pDocTemplate;
    pDocTemplate = new CSingleDocTemplate(
    IDR_MAINFRAME,
    RUNTIME_CLASS(CStandard_testDoc),
    RUNTIME_CLASS(CMainFrame),       // main SDI frame window
    RUNTIME_CLASS(CStandard_testView));//消息首先送到这个视图处理
    AddDocTemplate(pDocTemplate);
    看看你的视图中有没有处理这些命令,如果没有的话,这些消息默认是要送到mainframe中处理的,你在什么地方处理都行,消息不会凭空消失的。如果要你的另外一个视图处理命令,要手动添加消息传送的。可以在mainframe中处理,cview* pview = m_splitterwnd.get**pane(id);然后用返回指针加入自己的处理。
    当然也可以用消息的形式,得到视图的窗口句柄之后,可以用SendMessage或PostMessage给视图发送消息。
    也可以在mainframe中小所有子窗口广播消息:void SendMessageToDescendants( UINT message, WPARAM wParam = 0, LPARAM lParam = 0, BOOL bDeep = TRUE, BOOL bOnlyPerm = FALSE );具体的可以参看msdn.