splitter_view/VisualFx.h这个大家用过吗 从这个派生出来的视图中,不响应菜单消息!!!!搞不明白  我可以把程序发给他

解决方案 »

  1.   

    splitter_view 响应菜单消息似乎不符合逻辑啊。
      

  2.   

    把编译生成的文件都删掉,整个文件夹压缩一下,传到CSDN的下载频道,把链接贴出来。
      

  3.   

    http://baiyizhujian.download.csdn.net/
      

  4.   


    在childFRAM中,有以下的代码,建立了视图
    TVisualObject *pTab = new TVisualObject(1,"",pContext,RUNTIME_CLASS(TTabWnd), TVisualObject::TOS_TABTOP);
    TVisualObject *pTabView1 = new TVisualObject(2," 多相流数据变化曲线 ", 5, 2, pContext);
    TVisualObject *pTabView2 = new TVisualObject(3," 多相流实时数据 ", pContext, RUNTIME_CLASS(TopLabelView2));
    TVisualObject *pTabView3 = new TVisualObject(4," 管路累积输出数据", pContext, RUNTIME_CLASS(TopLabelView3));
    TVisualObject *pTabView4 = new TVisualObject(5,"多相流测量系统监控摄像", pContext, RUNTIME_CLASS(TopLabelView4));
            TVisualObject *pTabView5 = new TVisualObject(6," 备   注 ", pContext, RUNTIME_CLASS(TopLabelView5));        TVisualObject *pView1_11_1 = new TVisualObject(11,0,0,pContext,RUNTIME_CLASS(LeftView1_00),CSize(60,200));
    TVisualObject *pView1_12_1 = new TVisualObject(12,0,1,pContext,RUNTIME_CLASS(LeftView1_01),CSize(0,200));
    TVisualObject *pView1_21_1 = new TVisualObject(21,1,0,pContext,RUNTIME_CLASS(LeftView1_10),CSize(60,200));
    TVisualObject *pView1_22_1 = new TVisualObject(22,1,1,pContext,RUNTIME_CLASS(LeftView1_11),CSize(0,200));
    TVisualObject *pView1_31_1 = new TVisualObject(31,2,0,pContext,RUNTIME_CLASS(LeftView1_20),CSize(60,70));
    TVisualObject *pView1_32_1 = new TVisualObject(32,2,1,pContext,RUNTIME_CLASS(LeftView1_21),CSize(0,70));
    TVisualObject *pView1_41_1 = new TVisualObject(41,3,0,pContext,RUNTIME_CLASS(LeftView1_30),CSize(60,70));
    TVisualObject *pView1_42_1 = new TVisualObject(42,3,1,pContext,RUNTIME_CLASS(LeftView1_31),CSize(0,70));
    TVisualObject *pView1_51_1 = new TVisualObject(51,4,0,pContext,RUNTIME_CLASS(LeftView1_40),CSize(60,70));
    TVisualObject *pView1_52_1 = new TVisualObject(52,4,1,pContext,RUNTIME_CLASS(LeftView1_41),CSize(0,70));
    但是在这些试图中 菜单消息不响应,
    大家可以在这些视图中添加菜单相应
      

  5.   

    看来LZ还不知道只有活动视图才能响应命令事件。你的程序运行后,TopLabelView2是活动视图,你可以在这个视图中添加事件响应函数来试试,是可以响应的。
    你可以在主框架中响应所有命令事件,根据需要再调用相关的视图来处理。
      

  6.   

    哪个视图具有焦点,哪个就是活动视图。
    你的程序运行后活动视图是TopLabelView2,你在这个类中响应消息试试。(我已经试过了)
      

  7.   

    但是在 TVisualObject *pView1_11_1 = new TVisualObject(11,0,0,pContext,RUNTIME_CLASS(LeftView1_00),CSize(60,200));
        TVisualObject *pView1_12_1 = new TVisualObject(12,0,1,pContext,RUNTIME_CLASS(LeftView1_01),CSize(0,200));
        TVisualObject *pView1_21_1 = new TVisualObject(21,1,0,pContext,RUNTIME_CLASS(LeftView1_10),CSize(60,200));
        TVisualObject *pView1_22_1 = new TVisualObject(22,1,1,pContext,RUNTIME_CLASS(LeftView1_11),CSize(0,200));
        TVisualObject *pView1_31_1 = new TVisualObject(31,2,0,pContext,RUNTIME_CLASS(LeftView1_20),CSize(60,70));
        TVisualObject *pView1_32_1 = new TVisualObject(32,2,1,pContext,RUNTIME_CLASS(LeftView1_21),CSize(0,70));
        TVisualObject *pView1_41_1 = new TVisualObject(41,3,0,pContext,RUNTIME_CLASS(LeftView1_30),CSize(60,70));
        TVisualObject *pView1_42_1 = new TVisualObject(42,3,1,pContext,RUNTIME_CLASS(LeftView1_31),CSize(0,70));
        TVisualObject *pView1_51_1 = new TVisualObject(51,4,0,pContext,RUNTIME_CLASS(LeftView1_40),CSize(60,70));
        TVisualObject *pView1_52_1 = new TVisualObject(52,4,1,pContext,RUNTIME_CLASS(LeftView1_41),CSize(0,70));
    这里的视图都是在TopLabelView1下面的
    这些下面子 视图 里面 好像不响应菜单消息
      

  8.   

    前面已经说了,只有活动视图才能响应,例如你点击一下“含水率”窗格,LeftView1_00就可以响应事件了,你再点一下其它窗格,LeftView1_00就不能响应了。
    你可以在主框架中响应所有命令事件,根据需要再调用相关的视图来处理。
      

  9.   

    靠!原来是这样子的啊!
    在TopLabelView1里面有好多的分视图,如果我响应TopLabelView1的菜单消息 ,那我点击哪个窗口啊主窗口响应所有命令事件。有相关的代码不