WEB开发网
开发学院软件开发VC MFC教程(12)-- 对话框和对话框类CDialog(2)... 阅读

MFC教程(12)-- 对话框和对话框类CDialog(2)

 2010-03-25 20:34:58 来源:WEB开发网   
核心提示:CScrollViewCScrollView继承了CView的特性,并且增加了如下的功能:(1)管理映射模式、窗口尺寸、视口尺寸(Map mode、Window and Viewport size),MFC教程(12)-- 对话框和对话框类CDialog(2)(6),Window and Viewport size用来

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;

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:MFC 教程 对话框

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接