CMyView改成CMyScrollView的方法

来源:互联网 发布:电脑桌面设计软件 编辑:程序博客网 时间:2024/05/16 07:53
很多情况下,我们在作Document/view编程的时候,容易忘记把CMyView的父类改为CSrollView,后来想加上对滚动条的支持又十分麻烦。直接把CMyView : public CView改成CMyView : public CView肯定是不行的了,那么到底还要有那些改动呢?

1。view是用来显示Document的,要让view滚动,必须通过计算Document的尺寸来决定显示,所以必须先设定Document的大小(size),也就是必须给CMyDoc类增加一个成员变量来表示:
//******************************************************************//     
     CMyDoc : public CDocument
     {
        ...
     protected:
        CSize m_sizeDoc;                          //定义Document的尺寸
     public:
        CSize GetDocSize() { return m_sizeDoc; }  //取得Document的尺寸
          ...
//******************************************************************//
//还要初始化m_sizeDoc的值,可以在CMyDoc的构造函数中初始化
    CMyDoc::CMyDoc()
    {
        m_sizeDoc = CSize(800, 900); //设定Document的尺寸为800*900像素
        ...
    }

2。改变CMyView的父类为CScrollView,包括其cpp文件中的
     IMPLEMENT_DYNCREATE(CMyView, CScrollView)
     BEGIN_MESSAGE_MAP(CMCMyView, CScrollView)
    现在我们就可以来设置滚动条了:
    由于对滚动条的一些操作是在CSrollView::OnInitialUpdate()中完成的,所以我们在CMyView中重载该函数:
    void CMyView::OnInitialUpdate()
    {
      SetScrollSizes(MM_TEXT, //屏幕映射模式
                     GetDocument()->m_sizeDoc) //Document的尺寸(现在知道尺寸的作用了吧)
    }

3。如果你在view中有一些对坐标的操作,就应该进行相应的设备坐标和逻辑坐标之间的变换,如果仅仅是显示某些固定内容,这样就可以了!
原创粉丝点击