您的位置:首页 > 其它

VC2010 MFC多文档项目中在带滚动条的窗口中显示图像

2012-06-01 19:17 357 查看
首先创建MFC多文档项目XXX。

在XXXDoc.h中:

。。。。。。。。。。。

public:

CSize GetDocSize() const

{ return m_docSize; }

protected:

CSize m_docSize;//设置滚动条尺寸

public:

CImage m_srcImg; //用于载入图像

在XXXDoc.cpp 中:

BOOL CXXXDoc::OnOpenDocument(LPCTSTR lpszPathName)

{

if (!CDocument::OnOpenDocument(lpszPathName))

return FALSE;

// TODO: 在此添加您专用的创建代码

//载入图像

m_srcImg.Load(lpszPathName);

m_docSize=CSize((int)m_srcImg.GetWidth(), (int) m_srcImg.GetHeight());

return TRUE;

}

将XXXView.h和XXXView.cpp中的CView全部替换为CScrollView。

在CXXXView类中添加消息WM_HSCROLL和WM_VSCROLL并重写OnInitialUpdate()和OnDraw()。

void CXXXtView::OnInitialUpdate()

{

CScrollView::OnInitialUpdate();

// TODO: 在此添加专用代码和/或调用基类

SetScrollSizes(MM_TEXT, GetDocument()->GetDocSize());

}

void CXXXView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)

{

// TODO: 在此添加消息处理程序代码和/或调用默认值

CScrollView::OnHScroll(nSBCode, nPos, pScrollBar);

}

void CXXXView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)

{

// TODO: 在此添加消息处理程序代码和/或调用默认值

CScrollView::OnVScroll(nSBCode, nPos, pScrollBar);

}

void CXXXView::OnDraw(CDC* pDC)

{

CXXXDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

if (!pDoc)

return;

// TODO: 在此处为本机数据添加绘制代码

if(pDoc->m_srcImg)

{

//用于图像缩放的时候

SetScrollSizes(MM_TEXT,CSize(pDoc->m_srcImg.GetWidth(),pDoc->m_srcImg.GetHeight()));

pDoc->m_srcImg.Draw(pDC->m_hDC, 0, 0);

}

}

源程序:http://download.csdn.net/detail/xinzheng_wang/4345562
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: