现在的位置: 首页 > 综合 > 正文

MFC 基于CView的应用程序添加滚动条

2013年03月08日 ⁄ 综合 ⁄ 共 809字 ⁄ 字号 评论关闭

当需要在基于CView的应用程序中添加滚动条,需要手工做以下两个步骤:

1. 查找视图的头文件和CPP文件,将所有出现的CView修改为CScrollView,除了在函数参数列表中出现饿CView*。

2. 如果还没有覆盖的话就要覆盖OnInitialUpdate(重载),并插入对SetScrollView的调用。

如果进行了第一步而忘记了第二步,在运行程序的时候会报错,具体看下面的例子:

 

重载函数OnInitialUpdate

void CRMBProjectView::OnInitialUpdate()
{
 CScrollView::OnInitialUpdate();
 CClientDC dc(this);
 int m_nCellWidth = dc.GetDeviceCaps(LOGPIXELSX);
 int m_nCellHeigh = dc.GetDeviceCaps(LOGPIXELSY) / 4;
 int m_nRibbonWidth = m_nCellWidth / 2;
 int nWidth = (26 * m_nCellWidth) + m_nRibbonWidth;
 int nHeight = m_nCellHeigh * 100;
 SetScrollSizes(MM_TEXT,CSize(nWidth,nHeight));

 // TODO: Add your specialized code here and/or call the base class
}

动态生成滚动条的大小

void CRMBProjectView::OnDraw(CDC* pDC)
{
 CRMBProjectDoc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);
  sizeTotal.cx = pDoc ->width * 2 + 20;
  sizeTotal.cy = pDoc->height;
  SetScrollSizes(MM_TEXT,sizeTotal);    
}

抱歉!评论已关闭.