下面贴两段CScrollView的使用!希望有帮助。后面的方法我会陆续试用的。 CScrollView这个类用于需要滚动条的场合。我们可以直接用向导生成,在选择视图类的基类时选择CScrollView即可。 如果我们的程序原来用的是CView类,此时想改成CScrollView类,需要稍微做一下修改。 CView-->CScrollView 利用ClassWizard,在CxxView類別中,建立OnInitialUpdate( ) member function void CxxView::OnInitialUpdate(){CScrollView::OnInitialUpdate(); SetScrollSizes(MM_TEXT, CSize( 800, 600 ) );} cpp中:IMPLEMENT_DYNCREATE(CxxView, CScrollView)BEGIN_MESSAGE_MAP(CxxView, CScrollView) 如何在对话框中使用CScrollview类( 转 ) CRect rectWindow; GetWindowRect(rectWindow); CRuntimeClass *pViewClass = RUNTIME_CLASS(CMyScrollView); CCreateContext * pContext; pContext = new CCreateContext; pContext->m_pCurrentDoc = NULL; pContext->m_pCurrentFrame = NULL; pContext->m_pLastView = NULL; pContext->m_pNewDocTemplate =NULL; pContext->m_pNewViewClass = pViewClass; CWnd * pWnd = NULL; pWnd = DYNAMIC_DOWNCAST(CWnd,pViewClass->CreateObject()); pWnd ->Create(NULL,NULL,AFX_WS_DEFAULT_VIEW,CRect(0,0,0,0),this,0,pContext); delete pContext; CMyScrollView * pScollView = DYNAMIC_DOWNCAST(CMyScrollView,pWnd);pScollView->SetScrollSizes( MM_TEXT, CSize(rectWindow.right - rectWindow.left-20, rectWindow.bottom -rectWindow.top-100) ); pScollView->MoveWindow(rectWindow.left,rectWindow.top,rectWindow.right - rectWindow.left-20, rectWindow.bottom -rectWindow.top-100,TRUE); 在VC中如何使用CScrollView类,即让视图具有滚动的功能;方法 一:新生成的视图类,必须继承CScrollView类,如下所示:class CImageProcessingView : public CScrollView{ ……;}然后在C*****View中,修改OnInitialUpdate()成员的代码,其中要进行矩形长、宽的设置,如下:sizeTotal.cx = sizeTotal.cy = 4000;这边要注意的是,其值不能太小,若太小了,在显示图像时,当图像的规格大小所设置的值时,便无法实现滚动的功能。void CImageProcessingView::OnInitialUpdate(){ CScrollView::OnInitialUpdate(); CImageProcessingDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CSize sizeTotal; // TODO: calculate the total size of this view sizeTotal.cx = sizeTotal.cy = 4000; SetScrollSizes(MM_TEXT, sizeTotal);方法二:此方法中,以上面的操作大同小异。就是有关于sizeTotal的设置采取了更“自由”的方法,这主要是在面向图像方面的。应用如下: SetScrollSizes(MM_TEXT,GetDocument()->GetDocSize());这里将较详细地介绍下GetDocSize()方法,它返回的是一个CSize变量。 CSize GetDocSize() const { return m_sizeDoc; }//m-sizeDoc是声明在C*****Doc类的变量,GetDocSize()也是//C*****Doc类中的成员函数。 // 提取图像的大小,设置文档大小 m_sizeDoc = CSize((int) ::DIBWidth(lpDIB), (int) ::DIBHeight(lpDIB)); ·

评论