MFC教程(12)-- 对话框和对话框类CDialog(2)
2010-03-25 20:34:58 来源:WEB开发网CScrollView
CScrollView继承了CView的特性,并且增加了如下的功能:
(1)管理映射模式、窗口尺寸、视口尺寸(Map mode、Window and Viewport size)。Window and Viewport size用来完成页面空间到设备空间的转换。
(2)自动管理滚动条,响应滚动条消息。
为了实现这些功能,CScrollView覆盖CView或者CWnd的一些虚拟函数和消息处理函数,添加了一些新的函数,当然也设计了新的成员变量。
CscrollView新的成员变量
protected:
int m_nMapMode;
CSize m_totalLog; // total size in logical units (no rounding)
CSize m_totalDev; // total size in device units
CSize m_pageDev; // per page scroll size in device units
CSize m_lineDev; // per line scroll size in device units
BOOL m_bCenter; // Center output if larger than total size
BOOL m_bInsideUpdate; // internal state for OnSize callback
CScrollView新的成员函数,用来完成和滚动操作、滚动条等有关的功能
void SetScaleToFitSize(SIZE sizeTotal);
void SetScrollSizes(int nMapMode, SIZE sizeTotal,
const SIZE& sizePage = sizeDefault,
const SIZE& sizeLine = sizeDefault);
这两个函数中的尺寸大小按逻辑单位计算。
SetScaleToFitSize设置视口尺寸为当前的窗口尺寸,这样,在没有滚动条时,逻辑视的内容被放大或者缩小到正好窗口大小。
SetScrollSizes设置窗口的映射模式,窗口尺寸,页和行尺寸。sizeDefualt被定义为(0,0)。
下面几个函数用来实现滚动或者得到滚动条相关的信息
void ScrollToPosition(POINT pt); // set upper left position
void FillOutsideRect(CDC* pDC, CBrush* pBrush);
void ResizeParentToFit(BOOL bShrinkOnly = TRUE);
CPoint GetScrollPosition() const; // upper corner of scrolling
CSize GetTotalSize() const; // logical size
下面两个函数使用了设备坐标单位
CPoint GetDeviceScrollPosition() const;
void GetDeviceScrollSizes(int& nMapMode, SIZE& sizeTotal,
SIZE& sizePage, SIZE& sizeLine) const;
覆盖的消息处理函数
处理WM_SIZE的OnSize;
处理WM_HSCROLL的OnHScroll;
处理WM_VSCROLL的OnVScroll;
更多精彩
赞助商链接