显示图像实际大小时使用滚动条

视图类的基类是CView不支持滚动条,要把CView改为CScrollView。
共有三步以实现:

void CMyAppView::OnInitialUpdate()  
{  
    CScrollView::OnInitialUpdate();
    CSize sizeTotal;   
    sizeTotal.cx = sizeTotal.cy = 600;    //看不到滚动条把数值加大
    SetScrollSizes(MM_TEXT, sizeTotal);
}

(3)把MyAppView.h和MyAppView.cpp里面,用查找/替换的方法,将CView改为CScrollView。

void COPMView::OnDraw(CDC* pDC)
{
    COPMDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    // TODO: add draw code for native data here
    CImage &img=pDoc->m_image;
    CRect rect;//定义一个矩形对象
    GetClientRect(rect);//获取视图窗口的客户区大小
    rect.right=img.Width(); //CvvImage:Width()计算图像的宽度,单位像素
    rect.bottom=img.Height();//CvvImage:Height()计算图像的高度,单位像素
    CSize sizeTotal(rect.right,rect.bottom);
    SetScrollSizes(MM_TEXT, sizeTotal);//设置滚动条的位置
    img.DrawToHDC(pDC->m_hDC, rect);
}

  

原文地址:https://www.cnblogs.com/kind064100611/p/4420232.html