CMyView改成CMyScrollView的方法

很多情况下,我们在作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中有一些对坐标的操作,就应该进行相应的设备坐标和逻辑坐标之间的变换,如果仅仅是显示某些固定内容,这样就可以了!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值