各位好,我在写一个MDI应用程序,功能是读取一个Raw文件,然后把它转换成BMP存储起来。转换的动作由用户点击菜单选项来触发执行。
OpenFile时,我的程序会把Raw读取到一块动态开辟的buffer中,此buffer的首地址是作为Doc的私有成员存储的。
现在的问题是,是否应该在View中映射这个触发计算动作的菜单项呢?如果在View中进行计算工作,那么如何获得这块buffer的内容比较好呢(因为buffer放在doc中的,且起始地址是doc的私有成员)?直接传递参数吗?如果放在doc中处理计算动作,也就是在doc中映射该菜单项,那么视图不会直接去调用这个菜单函数,那又如何把计算结果通知视图呢?

解决方案 »

  1.   

    那么在DOC中处理的话,用户点击菜单,如何通知doc去计算呢?doc中映射的函数是保护的,不能直接调用,总不能再另外写一个函数专门去调用吧?这样的代码太丑陋了。
      

  2.   

    当然是DOC,它是专门用来处理数据的,而VIEW只是用来显示的,如果在VIEW中处理,有
    违设计者的初衷
      

  3.   

    那么如果把buffer开在view中如何?doc是view的友类,可以存取view中的东西的。
      

  4.   

    那么把buffer开在view中如何?doc是view的友类,应该没问题的。
      

  5.   

    这样:
    CRaw2BmpView:public CScrollView
    {
       ……
      private:
        BYTE*    m_pRawData;
        BYTE*    m_pBmpData;
    }
    然后在Document中进行new的动作,和计算的动作。
    这里还有一个疑问,就是MDI中,一个Doc可以对应多个View,如何确保doc能准确得到RawData的buffer呢?