说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

显示窗口的水平和垂直滚动条-VB资料

HTML文档下载 WORD文档下载 PDF文档下载
显示窗口的水平和垂直滚动条-VB资料


由于在外读书,上网都是在网吧,所以回答问题,通常都是三言二语,没有说清楚,不过这一篇可是在寝室的电脑上完成的,当然还有上次回答天水的那篇.我学VB的时候,根本没有交流,那种困难不言而喻.现在能与大家一起谈论VB,是我当初所不敢想象的.好了,言归正传,切入今天的话题----显示窗口的水平和垂直滚动条:
在Delphi中,它的TFORM类可以自动显示水平和垂直滚动条,这不能不让我们这些VB Fan们有些嫉妒,为了实现这个功能,我们不得不自已动手了.
首先从窗口谈起,窗口有许多风格,到API浏览器中可以看到许多以WS_或WS_EX_开头的常量,都是用来指定风格的.要实现水平和垂直滚动条就要修改窗口风格,同时还要响应来自滚动条的消息,才能实现其功能.其实我并不认为直接使用窗口自带的滚动条是一个好方法,使用滚动条控件要灵活的多,你可以在窗口中放入任意多的滚动条控件,但窗口自带的就只能有一个.但使用自带滚动条也有其优点,比如其位置不要用额外的代码进行调整,其它好像就没有了.
在使用方面来说,主要的难点在于其消息的响应,尤其对初学者来说,因为要构造一个子类窗口.其他的min,max值的设置,滚动框的位置的设定,都有对应的API函数来实现.
程序实现:
先在窗口上放两个Lable,两个Botton.

'1.窗口风格的设置
'在窗口声明部分加入
Dim HVisible as Boolean,VVisible as Boolean

Private Sub Form_Load()
Dim OldStyle As Long
Dim hsWidth As Integer
'保存旧风格
OldStyle = SetWindowLong(hWnd, GWL_STYLE, 0)
'设置新风格
Call SetWindowLong(hWnd, GWL_STYLE, OldStyle Or WS_VSCROLL Or WS_HSCROLL)
Command1.Caption = "隐藏垂直滚动条"
Command2.Caption = "隐藏水平滚动条"
Label1 = "垂直滚动条的值"
Label2 = "水平滚动条的值"
'得到水平滚动条的宽度
hsWidth = GetSystemMetrics(SM_CXVHSCROLL)
'改变窗口宽度与高度
Width = Width + hsWidth
Height = Height + hsHeight
VVisible = True
HVisible = True
'怎么样,滚动条显示出来了没有?没有?那么是我眼花了?@_@

'2.滚动范围的设置
yMin = 0: yMax = 100
xMin = 0: xMax = 100
SetScrollRange hWnd, SB_HORZ, xMin, xMax, True
SetScrollRange hWnd, SB_VERT, yMin, yMax, True
'建立子类窗口
SubClass Me
End Sub'End Of Form_Load

'3.滚动条的显示与隐藏
Private Sub Command1_Click()
If VVisible Then
Command1.Caption = "显示垂直滚动条"
ShowScrollBar hWnd, SB_VERT, False
VVisible = False
Else
Command1.Caption = "隐藏垂直滚动条"
ShowScrollBar hWnd, SB_VERT, True
VVisible = True
End If
End Sub

'4.子类窗口的撤消
Private Sub Form_Unload(Cancel As Integer)
UnSubClass Me
End Sub

'从1.窗口风格的设置直到此处都可以直接COPY到窗口代码中

'5.消息响应机制
'添加一个公共模块,在模块中加入以下代码和声明
Public Const SM_CXHSCROLL = 21
Public Const GWL_STYLE = (-16)
Public Const WS_HSCROLL = &H100000
Public Const WS_VSCROLL = &H200000
Public Const SB_BOTH = 3
Public Const SB_HORZ = 0
Public Const SB_VERT = 1
'以下以SB_开头的是用户的滚动请求
Public Const SB_LINEDOWN = 1
Public Const SB_LINELEFT = 0
Public Const SB_LINERIGHT = 1
Public Const SB_LINEUP = 0
Public Const SB_PAGERIGHT = 3
Public Const SB_PAGELEFT = 2
Public Const SB_PAGEDOWN = 3
Public Const SB_PAGEUP = 2
Public Const SB_ENDSCROLL = 8
Public Const SB_THUMBPOSITION = 4
Public Const SB_THUMBTRACK = 5
Public Const GWL_WNDPROC = (-4)
Public Const WM_HSCROLL = &H114
Public Const WM_VSCROLL = &H115
Public Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Declare Function ShowScrollBar Lib "user32" (ByVal hWnd As Long, ByVal wBar As Long, ByVal bShow As Long) As Long
Declare Function SetScrollPos Lib "user32" (ByVal hWnd As Long, ByVal nBar As Long, ByVal nPos As Long, ByVal bRedraw As Long) As Long
Declare Function SetScrollRange Lib "user32" (ByVal hWnd As Long, ByVal nBar As Long, ByVal nMinPos As Long, ByVal nMaxPos As Long, ByVal bRedraw As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public preWndProc As Long
Public xMin As Integer, xMax As Integer
Public yMin As Integer, yMax As Integer
Public xPos As Integer, yPos As Integer

Public Function WindowProc(ByVal hWnd As Long, ByVal uMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
On Error Resume Next
Dim xInc As Integer, yInc As Integer
Select Case uMsg
Case WM_VSCROLL'垂直滚动条消息
Select Case LoWord(wParam)
Case SB_LINEUP, SB_LINEDOWN
If LoWord(wParam) Then
yInc = 1
Else
yInc = -1
End If
Case SB_PAGEUP, SB_PAGEDOWN
If LoWord(wParam) = SB_PAGEUP Then
yInc = -10
Else
yInc = 10
End If

Case SB_THUMBTRACK
yInc = HiWord(wParam) - yPos
End Select
yPos = yPos + yInc
If yPos < yMin Then yPos = yMin
If yPos > yMax Then yPos = yMax
SetScrollPos hWnd, SB_VERT, yPos, True
Form1.Label1 = yPos
Case WM_HSCROLL'垂直水平条消息
Select Case LoWord(wParam)
Case SB_LINELEFT, SB_LINERIGHT
If LoWord(wParam) Then
xInc = 1
Else
xInc = -1
End If
Case SB_PAGELEFT, SB_PAGERIGHT
If LoWord(wParam) = SB_PAGELEFT Then
xInc = -10
Else
xInc = 10
End If
Case SB_THUMBTRACK
xInc = HiWord(wParam) - xPos
End Select
xPos = xPos + xInc
If xPos < xMin Then xPos = xMin
If xPos > xMax Then xPos = xMax
SetScrollPos hWnd, SB_HORZ, xPos, True
Form1.Label2 = xPos
End Select
WindowProc = CallWindowProc(preWndProc, hWnd, uMsg, wParam, lParam)
End Function
Public Sub SubClass(frm As Form)
preWndProc = SetWindowLong(frm.hWnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Public Sub UnSubClass(frm As Form)
Call SetWindowLong(frm.hWnd, GWL_WNDPROC, preWndProc)
End Sub
'The function below is much useful in API development.
Private Function LoWord(num As Long) As Integer
LoWord = num Mod &H10000
End Function
Private Function HiWord(num As Long) As Integer
HiWord = (num And &HFFFF0000) / &H10000
End Function
说明:
此程序调试比较困难,应注意不要用VB工具栏中的"结束"按钮来结束该程序,只能通过窗口上的"关闭"按钮,而且在程序中不能出错,否则VB就当掉了.

新浪微博宋琦:PHP在微博优化中的“大显身手” 8月份浏览器份额:IE浏览器PC端出现反弹 移动端跌出前五 如何让Ruby项目速度提升10倍 跨平台进行到底:Facebook发布Unity SDK 云薪资管理初创公司ZenPayroll:年处理薪资超1亿美元,获多位知名CEO力挺 Twitter开源Summingbird:近原生编码下整合批处理与流处理 亚马逊推Matchbook 欲将顽固纸质书读者拉向电子书 Broadcom为可穿戴设备推新开发平台WICED 再战江湖 New Kodak还牛不牛? 郭理靖:公、私有云架构异同点与难点 美化代码的15个代码语法高亮工具 你所不知道的虚拟化和云计算 [开源推荐]Effeckt.css项目:CSS交互动画应用集锦 针对Google Glass应用的四大UX设计原则及典型应用 Google收了摩托罗拉,微软收了诺记,黑莓又将花落谁家? 十亿月PV网站秘诀:Reddit自失败中总结的25条经验 粉碎5个NoSQL流言:各司其职,NoSQL的出现比关系型更早 豌豆荚发力移动游戏平台,推出SDK 2.0 BlackBerry Jam Asia 2013即将在香港隆重召开,免费门票限量提供 小米发布会高潮迭起:米3、电视、Hugo大牛 谷歌放在Windows上的特洛伊木马:Chrome Apps应用平台 解析:Google基于数据驱动的招聘面试程序 决战“缓存”之巅:微软 vs. 亚马逊 雪中送炭:十大前沿移动应用开发工具 高通智能手表Toq都用到了哪些技术? 研发周报:修改一行SQL代码 性能提升了100倍 2013年NoSQL就业趋势分析 鲜为人知的静态、命令式编程语言——Nimrod 高性能Web应用打造攻略:扩展过程中20个最大的绊脚石 开源项目Marathon:让你的数据中心像谷歌一样运行 精益化运营:10款移动统计分析工具推荐 她问我“上个黄色网站让我看看”, 是什么意思????????? 怎么样能提高IE的速度? 你的DELPHI6的帮助有没有这种问题? 请推荐几处下载java编程方面电子书的站点? 请问有没有工具把access中的文字繁简转化一下?? 找一个高人——HC 请教如何使用API中的GetUserName()? 怎样才能买到 外文期刊??? 如何将一屏显示不下的文档打印在一页当中(CHtmlView) 请问《程序员》杂志上的那几本外文期刊怎么买??? 我下载了几个rar文件有*.rar\*.r01\*.r02等等,可是这个网站没有提供合并文件,忘了怎么合并了,谁知道快告诉我。copy *.rar+*.r01不管用 请教在线的高人(在oicq上吗?) 我是白痴!大虾,什么是专家分,怎么得,有捷径吗???????????? 图形化界面问题!控件与窗体不重合! 书上的东西我看不董,是关于PB70与COM/MTS的,COM/MTS是什么,谁能告诉我? 怎么样能解决死机的问题? 跟帖比聊天有意思多了,哈哈 过去了,就不要再提 灌水乐园,我的MUD练功场 StringList 与 String的区别 为什么我的组合筐里只有最后的项,即"交叉线",没有其他的内容? 关于Tmemo 共享软件的开发经验 部件(Crystal Repot)引用错误(crystl32.ocx),请高手指点,,谢谢 无数个问题之123 steps你有oicq吗?壮丁!!!sos 怎样将数字字符转化为数字呀? WIN98下能读的光盘到了WIN2000/NT下居然读不出来! WIN98下能读的光盘到了WIN2000/NT下居然读不出来!(我的光盘是刻录的) 我不想要分(也许我只是个女生) 40分=一网址:那儿有Effective C++ 2e电子书? 如何在菜单中加入下拉框?像delphi的那样. 怎样用vb程序实现监控打印机打印输出情况 大家评出水园最有人气的mm,我给分啊,行动要快啊~~~~~~~~~~~~~~~~~~~~明天晚上7点结贴 编译servlet文件出错!急!!!! 寻觅朋友(用delphi优先) 我希望能认识安徽的程序员~~~~~~~~~~~~~~~联系:6011458(OICQ) 很长时间,我还是觉得这是一个事实! javascript中怎么进行数据类型间的转换? 关于非文档视图结构程序的菜单 寻delphi兼职程序员,要求比较懂数据库,多劳多得,不劳不得,报酬从几十元到几千元不等。 在程序中更改Filter to lastlove(☆)robin(★) 关于《深入浅出MFC》电子书 SOS:秦皇岛的小男孩胡颖1岁胡颖1岁8个月,得了白血病,希望大家帮助他,留住他的小生命 所有武大的GGDDJJMM进来报名 所有深圳的GGJJDDMM报道 请各位汇编高手看看这个程序,帮忙找一下错误。 无法安装REDHAT LINUX? inet控件怎样使用?请帮助 今天卖到一套D版VS7(6CD)不知道是真是假 英语中的词性表示是什么意思,例如n表示名词,v表示动词,adj又是表示什么呢?还有其它的 英语中一些单词的词性是怎么变的?比如说名词变为动词等·有什么规律的吗? 双音节词概括表示心理特点的双音节词语 “的”,“得”,“地”各修饰什么词性的词语,有什么区别呢? 英语中以ment结尾的单词既有名词词性又有动词词性的有哪些.如:fragment就是.急 表示心理活动的词语 一个词多个词性,怎么区分?比如说hesitate这个词.hesitation和hesitance都是名词,那应该怎么区分? 汉语双音节词语是什么 表示心理活动的词语.例如:表示心理活动.例如:爱 恨 想 忘记 觉得 感到 希望 羡慕 憧憬 回忆.动词,一个字或两个字,阅读需要!不能有误,有误不给分,若收集500个以上,奖50-100分 帮我辨别一下下面的一些词的词性呀!急就是感情色彩(褒义贬义或者中性)荒唐 异想天开伶俐 无缘无故洋溢 跳梁小丑谦逊 不屈不挠攻击 孜孜不倦谗言 飞黄腾达战争 人迹罕至 什么是双音节词语? 表示心理活动的词语有...不急!不急!不急! 一个词性多个词,怎么区分.比如说hesitate这个词.hesitation和hesitance都是名词,那应该怎么区分? 双音节词语是什么,请举例 表示心理活动的词 《现代汉语》指出下面句子中括号里词的词性.1、你(在)哪里?2、他(在)做作业.3、你(在)哪里工作?4、由你(把)门,谁也不许进来.5、拿(把)锁(把)车锁上.6、他(给)了你一本书 什么是双音节词 词的分类 实词包括名词、动词、形容词、数词、量词、代词.标明下列各词组的词性:坚决——决心( ) 可爱——热爱( ) 荣誉——光荣( )企图——意图( ) 答案——答应( ) 气愤 写出句子中各词语词性.1.东京也无非是这样.2.恩师是让人永远怀念的.3.看,于茂林修竹之中,一潭清泉又呈现于眼前.4.谁说宇宙是没有生命的? 现代汉语中单音节词和双音节词的区别 名词,动词,形容词,数词,量词,副词,的定义举出一些属于这些词的一些词语.按类别在找5个例句.定义最重要 写出下列句子中词语的词性.1.我们的生活十分美好!2.昨天的语文作业我还没做.3.黄色菊花已经盛开了.4.两双皮鞋才卖了陆拾圆!5.他家比我家近.6.一只狗和一只猫都丢了.7.炎热的夏天简直太长 在汉语中什么是单音节词》?和双音节词 能否举例?多举几个! 用十二种词性的词造一句句子. 12种词性为:名词、动词、形容词、数词...用十二种词性的词造一句句子. 12种词性为:名词、动词、形容词、数词、量词、 代词、副词、介词、连词、助词、 “了”在汉语句子中是什么词性是形容词?连词?还是副词? 什么是汉语单音节词和双音节词,怎么定义的?谢谢 用实词中的(名词,动词,形容词,数词,量词,代词)写四词的对联 英语中什么叫系动词 什么词性的词可以做 在汉语中什么是单音节词》?和双音节词 能否举例?谢谢朋友们的回答了. 名词动词形容词数词量词代词各写10个 语文各类词词性及其用法 下列加点的字中表示的单音节相当于现代汉语中的哪个双音节词?有仙则(名):有龙则(灵):苔痕上(阶)绿 :惟吾(德)馨: 英语的名词动词代词形容词副词量词连词冠词 关于几个词的词性(语文)求几个词的词性,准确的说是判断这几个此是什么短语.1、目空一切2、一视同仁3、一笑倾城(从以下几个分类中选:偏正短语、主谓短语、后补短语、动宾短语、 木兰诗结尾一节诗句有什么含义 安全它的动词 形容词 副词 名词 对、在、从、以、为这些词在语文中是什么词性的是不是介词? 1,木兰诗有怎样的特点,用双节音词概括 对联中名词对名词,动词对动词,形容词对形容词,副词对副词什么意思?语文中 名词 动词 形容词 副词 这些是什么意思?详细点 !` 我这人语文基础不好 1.对下列句子中加点词的词性,分析正确的一项是( )①小王曾经跟老张到过俄罗斯 ②小王跟老张到过俄罗斯③小王跟着老张到过俄罗斯 ④他的思想跟不上形势 (加点的字都是 跟)A.①介词 ② 木兰诗叙述的事一个怎样的故事?你能用一个四字词语概括吗?这个故事又怎样的特点木兰诗叙述的事一个怎样的故事?你能用一个四字词语概括吗?这个故事又怎样的特点?你能用一个双音 辨析词语的词性 语文中各种词性的词有符号表示,比如:主语用双横线,谓语用单横线等.英语中有这样的表示方法吗?如果有,和中文的有什么区别? 木兰诗的语言特点“东市买骏马,西市买鞍鞯 ⑿,南市买辔头 ⒀,北市买长鞭.'和"爷娘闻女来,出郭(Ⅸ)相扶将(Ⅹ);阿姊闻妹来,当户理红妆(Ⅺ);小弟闻姊来,磨刀霍霍向猪羊."就说是什么特点好 辨析下面词语的词性春天( )像( )刚( )落地( )的( )娃娃( ),从( )头( )到( )脚( )都( )是( )新( )的( ),它( )生长( )着( ) 安排这个词的词性是名词还是动词? 用一个双音节词语概括本文内容(童趣) 现代汉语语法中,动词有无感情色彩?带有感情色彩的词主要是哪些词性的词? “用途”一词是什么词性?如名词、动词什么的? 表示看的词语,单音节和双音节个七个. 现代汉语:从结构,词性,语法意义,语法特征等举例分析某个合成词(举例的例子要标明出处,包括作者) "到过"一词的词性是什么?是名词还是动词? 什么叫单音节词,什么叫双音节词关于形容词比较级.越多越好 词的语法类别是不是词性? interest empty 用这两个词语造句,名词和动词.两个词性各造一个 写出单音节表示颜色的词语6个,多音节、双音节表颜色的各6个 这个词是什么词性了?Astralia had been peopled for less than 10000 years.peopled 词性的英文名啥的是啥?比如 noun verb adjective Adverb 英语词类 词性 有什么区别 判断下列各词的词性,按名词.动词.形容词分类!急啊!1.歌颂2.颂歌3.询问4.学问5.勇敢6.勇气.7.创造8.创举9.热烈10.激烈11.障碍12.阻碍13.活力14.活泼15.灵活16.措施17.实施18.整齐19.整理20.整体 什么是单音节词,双音节词,多音节词?单音节词、双音节词和多音节词是什么?怎么区分?大家讲得简单一点我现在是初中阶段
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn