问题是这样的,前一段时做了个分隔窗口的小程序。现在窗口分割好了,但是由于FRAME类和各个VIEW类之间的通信没有了,是自己另外做的(用的指针)。问题出来了,现在做的消息映射也不能传递过去,该怎么办?
    结果是就没有检测到消息响应的函数,是不是也是用指针?怎么做求解

解决方案 »

  1.   

    WM_COMMAND(NOTIFY)消息会最先传给Active的View,而不是你所有的View,这是很合理的,要不然,你点击一下鼠标,所有的View都接到消息,那启不乱了套?
    但是,如果你真想这样做,方法实在是太多了,如:
    1、重载CFrame的OnCmdMsgYourFrame::OnCmdMsg
    {CView* pActiveView = GetActiveView();
    for(遍历所有你的View,假如每次得到的结果是pView)
     {
        if(pView!=pActiveView ) pView->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo); }if (CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))
    //这里面会把消息送给pActiveView 以及其它地方
    return TRUE; return FALSE;}
    2、你所有的View都派生于一个CBaseView,因为总会有一个View收到消息,故在这个里面放上分发消息的函数,
    3、所有的View、Frame、Doc等都不处理消息,消息的最后一站是CYourAPP,在这里面再次发送消息。
    4、所有的View都不处理消息,消息的下一站是Frame,在Frame里依次调用你所有的View
      

  2.   

    to happyparrot: 我的映射关系是对的,我就是对其中一个类建立的映射关系,但是不能检测到。
    to oyljerry : 麻烦你能说的详细点吗?
    to simoreg : 谢谢,我回去试试。