设为首页 加入收藏

TOP

输出文字(三十三)
2010-12-30 21:10:02 来源: 作者: 【 】 浏览:24205
Tags:输出 文字
WS_VSCROLL视窗样式,从而在视窗中加入了垂直卷动列,其视窗样式为:

WndProc视窗讯息处理程式在处理WM_CREATE讯息时增加了两条叙述,以设置垂直卷动列的范围和初始位置:

sysmetrics结构具有NUMLINES行文字,所以卷动列范围被设定为0至NUMLINES-1。卷动列的每个位置对应于在显示区域顶部显示的一个文字行。如果卷动方块的位置为0,则第一行会被放置在显示区域的顶部。如果位置大於0,其他行就会出现在显示区域的顶部。当位置为NUMLINES-1时,则最後一行文字出现在显示区域的顶部。

为了有助於处理WM_VSCROLL讯息,在视窗讯息处理程式中定义了一个静态变数iVscrollPos,这一变数是卷动列内卷动方块的目前位置。对於SB_LINEUP和SB_LINEDOWN,只需要将卷动方块调整一个单位的位置。对於SB_PAGEUP和SB_PAGEDOWN,我们想移动一整面的内容,或者移动cyClient /cyChar个单位的位置。对於SB_THUMBPOSITION,新的卷动方块位置是wParam的高字组。SB_ENDSCROLL和SB_THUMBTRACK讯息被忽略。

在程式依据收到的WM_VSCROLL讯息计算出新的iVscrollPos值後,用min和max巨集来调整iVscrollPos,以确保它在最大值与最小值之间。程式然後将iVscrollPos与呼叫GetScrollPos取得的先前位置相比较,如果卷动位置发生了变化,则使用SetScrollPos来进行更新,并且呼叫InvalidateRect使整个视窗无效。

InvalidateRect呼叫产生一个WM_PAINT讯息。SYSMETS1在处理WM_PAINT讯息时,每一行的y座标计算公式为:

在SYSMETS2中,计算公式为:

回圈仍然显示NUMLINES行文字,但是对於非零值的iVscrollPos是负数。程式实际上在显示区域以外显示这些文字

首页 上一页 30 31 32 33 34 35 36 下一页 尾页 33/44/44
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇图形基础 下一篇视窗和讯息

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: