VS2010 C++学习(1):滚动条的设计总结

VS2010 C++学习(1):滚动条的设计总结
学习VC++编制的滚动条程序.。

一、主要内容:
1.对话框中的滚动条设计;
2.编辑框中的滚动条设计;
3.列表框中的滚动条设计;
二、设计实现:
1、对话框中的滚动条设计;
∙在资源编辑器中,选择在属性对话框中的水平滚动和垂直滚动样式。

∙选择调整大小的边框样式,以使该对话框可调整其大小。

∙重写 WM_VSCROLL 和 WM_HSCROLL 消息处理程序。

∙重写设置滚动条区域,如果大小减小到小于原始大小的 WM_SIZE 消息处理程序。

1)添加成员变量到对话框类中
int m_nCurHeight; //存储对话框中的当前高度
int m_nScrollPos; //存储当前垂直滚动位置
int m_nCurWidth; //存储对话框中的当前宽度
int m_hScrollPos; //存储当前水平滚动位置
CRect m_rect; // 对话框原始大小
2)若要获取原始窗口的大小,请将下行添加到OnInitDialog方法:
GetWindowRect(m_rect);
m_nScrollPos = 0; // 垂直滚动位置0
m_hScrollPos = 0; // 水平滚动位置0
3) OnSize方法中添加消息处理程序。

判断当前对话框的大小,并与对话框原始大小进行比较。

然后计算出垂直和水平滚动条的最大值,写入SCROLLINFO中去。

4) 将 WM_VSCROLL 消息的消息处理程序添加到OnVScroll方法中,WM_HSCROLL 消息的消息处理程序添加到OnHScroll方法中。

设计响应滚动条的事件。

5) 使用的函数
●SetScrollInfo(SB_HORZ, &hsi, TRUE);
●SetScrollPos(SB_HORZ,m_hScrollPos,TRUE);
●ScrollWindow(-nDelta,0);
函数原型:int SetScrollInfo(HWND hWnd,int fnBar,LPSCROLLINFO lpsi,BOOL fRedraw);
函数功能:该函数设置滚动条参数,包括滚动位置的最大值和最小值,页面大小,滚动按钮的位置。

如被请求,函数也可以重画滚动条。

参数:
hWnd:滚动条控件或带标准滚动条的窗体句柄,由fnBar参数决定。

fnBar:指定被设定参数的滚动条的类型。

这个参数可以是下面值,含义如下:
SB_CTL:设置滚动条控件。

而参数hwnd必须是滚动条控件的句柄。

SB_HORZ:设置所给定的窗体上标准水平滚动条参数。

SB_VERT:设置所给定的窗体上标准垂直滚动条参数。

lpsi:指向SCROLLINFO结构。

在调用SetScrollInfo之前,设置SCROLLINFO结构中cbSize成员以标识结构大小,设置成员fMask以说明待设置的滚动条参数,并且在适当的成员中制定新的参数值。

成员fMask可以为下面所列复合值,含义如下:
SIF_DfSABLENOSCROLL:如果滚动条的新参数使其为没必要,则使滚动条无效而不再移动它。

SIF_PAGE:设置滚动页码值到由Ipsi指向的SCROLLINFO结构的nPage 成员中。

SIF_POS:设置滚动位置值到由lpsi指向的SCROLLINFO结构的nPos 成员中。

SIF_RANGE:设置滚动范围值到由lpsl指向的SCROLLINFO结构的nMin 和nMax成员中。

fRedraw:指定滚动条是否重画以反映滚动条的变化。

如果这个参数为TRUE,滚动条将被重画,否则不被重画。

返回值:返回值是滑块的当前位置。

2、编辑框中的滚动条设计;
单行编辑框控件无滚动条,多行编辑框控件才有滚动条。

1)
2)多行编辑框类的方法:
设置好后多行编辑框控件自动管理滚动条。

3、列表框中的滚动条设计;
1)垂直滚动条设计
只需设置属性即可:
2)水平滚动条设计
注意:需要将水平滚动条的属性设为真,否则即使调用下面的函数也不会出现水平滚动条。

通过调用SendDlgItemMessage 向对话框发送设置水平滚动条宽度信息来显示水平滚动条。

函数SendDlgItemMessage(IDC_LIST2, LB_SETHORIZONTALEXTENT, (WPARAM)s.cx, 0);
函数原型:LRESULT SendDlgItemMessage( int nID, UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );
LB_SETHORIZONTALEXTENT 为设置滚动条宽度信息。

发送消息时,wParam为滚动条的长度(以像素为单位,可通过计算得出准确的长度)。

lParam无用。

三、程序下载:
/detail/dalong10/5366011。

合集下载

进展条、滚动条和滑动条

进展条、滚动条和滑动条

进展条、滚动条和滑动条一、实验目的:设计一个对话框应用程序Ex_Color,其运行结果如图所示。

操作进展条、滚动条和滑动条控件可以调整RGB颜色的3个颜色分量:R(红色分量)G(绿色分量)B(蓝色分量),并根据用户指定的颜色填充控件。

二、实验环境:一台PC机,Windows 操作系统,Visual C++6.0开发环境。

三、实验步骤:1.创建工作文件夹创建工作文件夹“E:\Visual C++\吴文燕”文件中创建一个新的子文件“实验11”2.设计对话框(1)创建一个默认的基于对话框应用项目Ex_Input,在“新建”对话框中添加项目文件夹定位到“E:\Visual C++\吴文燕\实验11”(2)打开的对话框资源模板中,将对话框的标题属性改为“颜色控件属性”,删除“取消”按钮,并将“确定”按钮的标题属性改为“退出”(3)显示对话框网络,调整对话框的大小,参照图所示控件的布局,在对话框中添加相应的控件,调整控件的位置。

(4)打开MFC ClassWizard,在MFC ClassWizard的Member Variables页面中,确定Class name中是否已选择了CEx_ColorDlg,选中所需的控件ID标识符,双击或单击AddVariables按钮。

依次为控件添加成员变量。

3. 添加成员函数Draw(1)展开项目工作区窗口Class View中的CEx_ColorDlg类的所有结点(2)用鼠标右键单击CEx_ColorDlg类结点,从弹出的快捷菜单中选择“Add Member Function(添加成员变量)”,添加void Draw(UINT nID)这个成员函数(3)在Draw函数中添加代码4.添加初始化代码(1)在CEx_ColorDlg::OnInitDialog中添加代码(3)编译运行5. 完善代码(1)用MFC ClassWizard在CEx_ColorDlg类中映射IDC_EDIT_R, IDC_EDIT_G, IDC_EDIT_B按钮控件的EN_CHANGE消息,并添加代码(2)用MFC ClassWizard在CEx_ColorDlg类中映射IDC_SPIN按钮控件的UND_DELTAPOS消息,并添加代码(3)用MFC ClassWizard在CEx_ColorDlg类中添加映射WM_HSCROLL消息映射,并添加代码(4)编译运行并测试四、实验结果:五、思考题:1、在Ex_Color的基础上,若添加设置对话框的背景色功能,则应该如何添加代码?实验结果截图如下所示2、试述当单击旋转按钮控件的向上箭头时,流程是怎样的?答:当我们单击选择按钮的向上箭头时,根据m_nBValue+=pNMUpDown->iDelta这个语句变化而使得进展条随之变长,最大只到255。

VS2010 C++学习(1):滚动条的设计总结

VS2010 C++学习(1):滚动条的设计总结

VS2010 C++学习(1):滚动条的设计总结学习VC++编制的滚动条程序.。

一、主要内容:1.对话框中的滚动条设计;2.编辑框中的滚动条设计;3.列表框中的滚动条设计;二、设计实现:1、对话框中的滚动条设计;∙在资源编辑器中,选择在属性对话框中的水平滚动和垂直滚动样式。

∙选择调整大小的边框样式,以使该对话框可调整其大小。

∙重写 WM_VSCROLL 和 WM_HSCROLL 消息处理程序。

∙重写设置滚动条区域,如果大小减小到小于原始大小的 WM_SIZE 消息处理程序。

1)添加成员变量到对话框类中int m_nCurHeight; //存储对话框中的当前高度int m_nScrollPos; //存储当前垂直滚动位置int m_nCurWidth; //存储对话框中的当前宽度int m_hScrollPos; //存储当前水平滚动位置CRect m_rect; // 对话框原始大小2)若要获取原始窗口的大小,请将下行添加到OnInitDialog方法:GetWindowRect(m_rect);m_nScrollPos = 0; // 垂直滚动位置0m_hScrollPos = 0; // 水平滚动位置03) OnSize方法中添加消息处理程序。

判断当前对话框的大小,并与对话框原始大小进行比较。

然后计算出垂直和水平滚动条的最大值,写入SCROLLINFO中去。

4) 将 WM_VSCROLL 消息的消息处理程序添加到OnVScroll方法中,WM_HSCROLL 消息的消息处理程序添加到OnHScroll方法中。

设计响应滚动条的事件。

5) 使用的函数●SetScrollInfo(SB_HORZ, &hsi, TRUE);●SetScrollPos(SB_HORZ,m_hScrollPos,TRUE);●ScrollWindow(-nDelta,0);函数原型:int SetScrollInfo(HWND hWnd,int fnBar,LPSCROLLINFO lpsi,BOOL fRedraw);函数功能:该函数设置滚动条参数,包括滚动位置的最大值和最小值,页面大小,滚动按钮的位置。

浅谈VC_中滚动条的编程

浅谈VC_中滚动条的编程

AA2!4",MAN KMA; / / 定义视图变量
(,7!’) ; / / 实例化 KMA("48 AA2!4",MA (KMA ) ; / / 调用该函数获得绘图 E"&.4K-.4MA 映象模式 (R41,) ; / / 得到屏幕剪辑 区 KMAOPQ4,A2!K3$B 域 图S
水平滑块大 小反映水平 图形大小
("G"J FG" , "@%)=<K=E :&)A "??()*+IID=@%*F6%*G"
种是自定义滚动条,即在程序中自己定义滚动条 的大小与放置位置, 然后设置它的滚动参数; 另一 种是利用系统滚动条来设置滚动参数。这两种方 法在不同的绘图方式(指直接屏幕绘图与二次内 存缓冲绘图) 下有各自的使用优点。 第一种用在直 接屏幕绘图时很方便,通过参数定义能够方便地 控制滚动参数, 形象地设置屏幕滚动范围 (指屏幕 有一部分可不参与视图滚动,如图形的纵坐标和 横坐标所在的屏幕区域) , 还可经专门的滚动参数 定义设置滚动滑块的大小来反映整个视图大小的 变化等, 而且该滚动条在非像素 (即非 //01231 图形映象模式)绘图时能用逻辑坐标方便的设置 滚动参数;第二种方法用在内存绘图时能够简单 的实现浏览整个视图的功能,不需自定义滚动条 放置的位置与大小, 只需设置滚动参数即可。 因内 存绘图无闪屏现象出现,通过设置计时器还可以 流畅的滚动播放视图,编程中发现该滚动条只接 受设备坐标参数。下面分别讨论这两种滚动条的 编程方法。
系统滚动条编程
上面自定义滚动条在屏幕直接绘图时使用很
的终止位置 (R41,) ; / / 将区域变量转为设 KMAOP;&,$M& 备坐标 (R41,%24#,, R41,%X$,\ )*7+1.$223-.%Z$04[!"@$8 () , ; / / 放置水平条 ]] ) ,$), R41,%[!@,7

vb滚动条

vb滚动条

滚动条(ScrollBar)滚动条常常用来附在某个窗口上帮助观察数据或确定位置,也可以用来作为数据输入的工具。

在日常操作中,我们常常遇到这样的情况:在某些程序中,如Photoshop ,一些具体的数值我们并不清楚,如调色板上的自定义色彩,这时,可以通过滚动条,用尝试的办法找到自己需要的具体数值。

在Visual Basic 中,滚动条分为横向(HscrollBar)与竖向(VscrollBar)两种,命名规则为:HsbX 或VsbX ,如HsbShow、VsbShow ,等等。

它们在工具箱上的图标如图所示:图一选中滚动条按钮,把鼠标指针放到界面设计区,然后拖动,画出符合自己要求的滚动条,或者直接双击该按钮,自动在界面设计区生成默认大小的滚动条,如图二所示:图二一、滚动条控件的属性:1、Max(最大值)与Min(最小值)属性:滚动块处于最右边(横向滚动条)或最下边(竖向滚动条)时返回的值就是最大值;滚动块处于最左边或最上边,返回的值最小,如图三所示:图三Max 与Min 属性是创建滚动条控件必须指定的属性,默认状态下,Max 值为32767 ,Min 值为0 。

本属性既可以在界面设计过程中予以指定,也可以在程序运行中予以改变,如:HsbShow.Min = 3HsbShow.Max = 302、Value(数值)属性:Value 属性返回或设置滚动滑块在当前滚动条中的位置,如图三所示。

改变滚动条value属性的方法有五种:直接在属性窗口中设定value值;鼠标单击两端箭头键改变滚动条数值;可将滚动框沿滚动条拖动到任意位置;用鼠标单击滚动条中滚动块两侧的部分,使滚动块以翻页的速度移动。

可以在程序运行中改变,如:HsbShow.Value = 243、SmallChange(小改变)属性:当用户单击滚动条左右边上的箭头时,滚动条控件Value 值的改变量就是SmallChange,如图四:图四4、LargeChange(大改变)属性:单击滚动条中滚动框前面或后面的部位时,引发Value 值按LargeChange 设定的数值进行改变,如图五:图五二、滚动条控件的事件:与滚动条控件相关的事件主要是Scroll 与Change时会触发Scroll 事件(但要注意,单击滚动箭头或滚动条时不发生Scroll 事件),滚动框发生位置改变后则会触发Change 事件。

第6讲 滚动条、滑动条、旋转按钮

第6讲 滚动条、滑动条、旋转按钮

第11讲滚动条、滑动条、旋转按钮一、滚动条1、滚动条:是一个具有直接输入焦点的独立窗口分水平滚动条和垂直滚动条两种2、滚动条类:在MFC中,滚动条由CScrollBar类进行管理3、常用函数:1)void SetScrollRange(int nMinPos,int nMaxPos,BOOL bRedraw=TRUE) 作用:设置滚动条的滚动范围。

参数: nMinPos——表示滚动位置的最小值nMaxPos——表示滚动位置的最大值bRedraw——重画滚动条的标志,为TRUE时立即重画,否则不立即重画。

2)int SetScrollPos( int nPos, BOOL bRedraw = TRUE );作用:设置滚动块的位置参数: nPos——表示滚动块的新位置bRedraw——重画滚动条的标志,为TRUE时立即重画,否则不立即重画。

4、滚动条的WM_HSCROLL和WM_VSCROLL消息:1)用户操作水平或垂直滚动条时,滚动条会向其父窗口发送WM_HSCROLL和WM_VSCROLL 消息,用户可在滚动条的父窗口类中对上述消息进行映射,获取以下消息映射函数: 2)WM_HSCROLL和WM_VSCROLL的消息映射函数:afx_msg void OnHScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar ); afx_msg void OnVScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar );参数: nSBCode——表示滚动条的通知消息。

对水平滚动条,常用值如下:SB_LEFT、SB_RIGHT……滚动到最左/右位置时发送的消息SB_ENDSCROLL……结束滚动时发送的消息SB_LINELEFT、SB_LINERIGHT……向左/右滚动时发送的消息SB_THUMBTRACK……拖动滚动块时发送的消息nPos——用于在通知消息为SB_THUMBPOSITION或SB_THUMBTRACK时表示滚滚动块的位置,否则不使用pScrollBar——若滚动消息源于滚动控件,则此参数为指向控件的指针;否则,此参数为NULL。

如何使用来创建一个可调整其大小的对话框 Visual C++ 中的滚动条

如何使用来创建一个可调整其大小的对话框 Visual C++ 中的滚动条

概要:本文介绍如何使用来创建一个可调整其大小对话框中滚动条。

该过程由四个基本部分组成:∙在资源编辑器中,选择在属性对话框中的水平滚动和垂直滚动样式。

∙选择调整大小的边框样式,以使该对话框可调整其大小。

∙重写WM_VSCROLL 和WM_HSCROLL 消息处理程序。

∙重写以设置滚动条区域,如果大小减小到小于原始大小WM_SIZE 消息处理程序。

更多信息:若要创建垂直滚动栏可调整其大小的对话框,请执行以下步骤:1.使用应用程序向导创建Microsoft 基础类(MFC) 基于对话框的应用程序。

2.在资源编辑器中,将添加到对话框资源模板中,某些控件属性中的对话框中,选择垂直滚动并选择调整大小的边框样式。

3.将以下受保护的成员变量添加到对话框类中:4.int m_nCurHeight;5.int m_nScrollPos;6.CRect m_rect;使用m_nScrollPos来存储当前垂直滚动位置。

使用m_nCurHeight来存储对话框中的当前高度并处理OnVScroll方法中滚动。

7.要获取原始窗口的大小,请将下行添加到OnInitDialog方法:8.GetWindowRect(m_rect);9.m_nScrollPos = 0;10.向WM_SIZE 消息设置滚动条范围的OnSize方法中添加消息处理程序。

将范围设置为0,如果大小增大到超过原始大小。

11.void CTestDlg::OnSize(UINT nType, int cx, int cy)12.{13.CDialog::OnSize(nType, cx, cy);14.15.// TODO: Add your message handler code here.16.m_nCurHeight = cy;17.int nScrollMax;18.if (cy < m_rect.Height())19.{20. nScrollMax = m_rect.Height() - cy;21.}22.else23. nScrollMax = 0;24.25.SCROLLINFO si;26.si.cbSize = sizeof(SCROLLINFO);27.si.fMask = SIF_ALL; // SIF_ALL = SIF_PAGE | SIF_RANGE| SIF_POS;28.si.nMin = 0;29.si.nMax = nScrollMax;30.si.nPage = si.nMax/10;31.si.nPos = 0;32. SetScrollInfo(SB_VERT, &si, TRUE);33.}34.将WM_VSCROLL 消息的消息处理程序添加到OnVScroll方法:35.void CTestDlg::OnVScroll(UINT nSBCode, UINT nPos,CScrollBar* pScrollBar)36.{37.// TODO: Add your message handler code here and/orcall default.38.int nDelta;39.int nMaxPos = m_rect.Height() - m_nCurHeight;40.41.switch (nSBCode)42.{43.case SB_LINEDOWN:44.if (m_nScrollPos >= nMaxPos)45.return;46.nDelta =min(nMaxPos/100,nMaxPos-m_nScrollPos);47.break;48.49.case SB_LINEUP:50.if (m_nScrollPos <= 0)51.return;52.nDelta = -min(nMaxPos/100,m_nScrollPos);53.break;54.55. case SB_PAGEDOWN:56.if (m_nScrollPos >= nMaxPos)57.return;58.nDelta =min(nMaxPos/10,nMaxPos-m_nScrollPos);59.break;60.61.case SB_THUMBPOSITION:62.nDelta = (int)nPos - m_nScrollPos;63.break;64.65.case SB_PAGEUP:66.if (m_nScrollPos <= 0)67.return;68.nDelta = -min(nMaxPos/10,m_nScrollPos);69.break;70.71. default:72.return;73.}74.m_nScrollPos += nDelta;75.SetScrollPos(SB_VERT,m_nScrollPos,TRUE);76.ScrollWindow(0,-nDelta);77.CDialog::OnVScroll(nSBCode, nPos, pScrollBar);78.}79.生成并运行该应用程序。

VS2010_MFC编程入门之二十六(常用控件:滚动条控件Scroll Bar)-软件开发-鸡啄米

最新评论及回复
gfffffffffffffffff... 持续关注~。请问鸡啄米交流群在哪呢? 31楼说得很合我意有木有。博主写得很... OnSetActive 函数本身有下... 照这个说法,什么都有缺点,那么什么都可以替 代 感谢鸡啄米 呵呵 MFC学得很受用 double r(3.0); VS... 投资二十元,净赚一千万,免费下载百万... 开始学MFC,本节内容蛮多的,有些难... 赞一个,不错,就这这博客看完一章后又...
void GetScrollRange(LPINT lpMinPos, LPINT lpMaxPos) const;
获取滚动条的滚动范围。参数lpMinPos指向滚动条滚动范围的最小值,参数lpMaxPos指向滚动 条滚动范围的最大值。
void SetScrollRange(int nMinPos, int nMaxPos, BOOL bRedraw = TRUE);
SB_BOTTOM/SB_RIGHT:滚动到底端(右端) SB_TOP/SB_LEFT:滚动到顶端(左端) SB_LINEDOWN/SB_LINERIGHT:向下(向右)滚动一行(列) SB_LINEUP/SB_LINELEFT:向上(向左)滚动一行(列) SB_PAGEDOWN/SB_PAGERIGHT:向下(向右)滚动一页 SB_PAGEUP/SB_PAGELEFT:向上(向左)滚动一页 SB_THUMBPOSITION:滚动到指定位置 SB_THUMBTRACK:滚动框被拖动。可利用该消息来跟踪对滚动框的拖动 SB_ENDSCROLL:滚动结束
// 滚动框的位置,当fMask 中包含SIF_POS 有效
8.
int nTrackPos;
// 滚动时滚动框的位置,当fMask 中包含SIF_TRACKP

VB控件大全属性详解 水平滚动条

VisualBasic自学教材(常用控件的属性)——1.10、水平滚动条(HScrollBar)和垂直滚动条(VScrollBar)控件的常用属性
作者:杜 勇
属性
说明
(Name)
控件对象的名称
CauseValidation
该控件获得焦点时,失去焦点的控件的Validate事件是否发生。取值为:
True 发生
获得或设置与对象相关联的上下文号
Width
设置该对象的宽度
False 不发生
DragIcon
该对象在拖动过程中鼠标的图标
DragMode
该对象的拖动模式,取值为:
0 Manual(手动)
1 Automatic(自动)
Enabled
用于设定是或对事件产生响应,取值为:
True 可用
False 不可用,在执行程序时,该对象用灰色显示,并且不响应任何事件
Height
MousePointer=99时,设定一个自定义的鼠标图标
MousePointer
RightToLeft
文本书写是否自左向右。取值为:
True
False 自右向左
SmallChange
用于设置单击滚动条两端箭头时,每单击一次滚动条移动的数量。
TabIndex
获得或设置此对象在父窗体的编号(父窗体中对象响应Tab键的顺序)
TabStop
设置是否可以用"Tab"键选取此对象。取值为:
True 可以
False 不可以
Tag
存储程序所需的附加数据
Top
距窗体顶部边界的距离
Value
该属性值对应于滚动框在滚动条中的相应位置,是一个整数。

滚动条的使用(一)学案

滚动条的使用(一)学案【任务一】 1.参照图1设计窗体并修改控件对象的属性图12.操作快的同学先学习“美化界面”视频,并调整自己窗体界面中控件的整齐规范。

******************************************************************** 【任务2】1.自学文本框、水平滚动条、垂直滚动条控件及其常用属性。

Text 表示文本框中的内容2.在任务1的基础上操作如下习题:(1)将文本框内容清空;(2)将垂直滚动条的最小值设为5,最大值设为100,当前值设为36;(3)将调色板中三个水平滚动条分别设置为:最小值为0,最大值为255,当前值为0。

********************************************************************【任务3】编写代码,让程序实现以下功能:1.通过改变垂直滚动条活动滑块的位置,调整文本框中文字的字号,并将其当前字号显示在垂直滚动条下方的标签中;2.通过改变调色板中水平滚动条活动滑块的位置,调整文本框的背景颜色。

********************************************************************【任务4】做完的同学将自己的窗体界面进行美化,如字体调整,控件对象对齐及控件大小调整等。

********************************************************************附:1.滚动条的Change事件:当改变活动滑块的位置时,就会触发其Change 事件,Change事件用来获取滚动条当前的值,即Value。

2.形如“对象.属性=值”的语句,被称为赋值语句,通过它可以改变对象的属性。

值可以是数字、字符串,或其他语句的运行结果等。

3. “&”:连接运算符,用于强制将两个表达式作为字符串连接,起到连接作用。

一种美化控件滚动条(ScrollBar)的方法-VC知识库文章

一种美化控件滚动条(ScrollBar)的方法-VC知识库文章一种美化控件滚动条(ScrollBar)的方法作者:Nobita下载源代码摘要:本文采用“遮挡”方法对MFC控件中的滚动条(ScrollBar)进行了美化工作,即保留了滚动条的功能,又美化了界面关键字:滚动条(ScrollBar)一、说明我们大家对MFC控件本身的美化工作都比较熟悉了,这方面的文章也是比较多的。

但是对于控件中的滚动条美化,相关资料却比较少。

已有的实现采用的是禁用控件的滚动条,然后在原有的位置上重新绘制滚动条,为了实现滚动条的功能,需要在代码中进行一些较复杂的计算。

本文采用的“遮挡”方法只是单纯的对滚动条界面进行美化,而功能则保持原有的实现。

二、原理一个人要想不被人认出,除了整容还有什么办法?还可以采用戴面具挡脸的方法。

一般我们对MFC控件进行美化都是对比如WM_CTLCOLOR、WM_DRAWITEM之类的消息进行处理,这也相当于“整容”了。

滚动条只是作为控件的一部分没有相应的消息可以重写,所以本文设想做一个“面具”来遮挡滚动条,这样即可以保留滚动条的原有功能不变,又看到一个漂亮的“面具”。

三、实现“遮挡”方法的原理很简单,要想实现这个方法需要解决以下几个问题:1.“面具”的材料是什么?要想把一个控件中的滚动条挡住又不影响功能的使用,那就需要一个可以穿透消息的东西。

很简单,立刻想到了静态文本控件(CStatic)。

2.“面具”的形状是什么样的?Windows API函数:BOOL GetScrollBarInfo(HWND hwnd, LONG idObject, PSCROLLBARINFO psbi);参数psbi指向的SCROLLBARINFO结构体包含有具体的大小。

3.“面具”如何一直挂在滚动条上?这个问题是关键所在,不解决它一切免谈。

首先要让控件绘制时不去绘制滚动条的部分,这可以通过给控件设置WS_CLIPSIBLINGS属性实现。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档