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

防止文本控件中的部分滚动-VB资料

HTML文档下载 WORD文档下载 PDF文档下载
防止文本控件中的部分滚动-VB资料
谭 翁
Windows API的SendMessage函数可以用来向VisualBasic控件中发送消息,例如向文本框控件上发送消息。本文介绍如何利用该函数防止文本框控件中的部分文本滚动,即该控件中不能滚动的部分不能被用户看见。
发送消息到文本框控件
Visual Basic中的文本框控件就是一个最小化的字处理程序。当该文本控件的MultiLine属性被设置为True的时候,则文本可以自动换行;当在文本框控件中键入了许多文本时,控件中的文本会向上滚动。这时文本就变得看不到了,但这些文本实际上仍然在控件中——它们并没有被删除。
Windows API的SendMessage函数可以用来防止文本框控件中的文本滚动因而超出我们的视线。当创建该文本框控件时,它的客户区域格式化为一个矩形(该区域就是键入文本的地方),可以给该控件发送EM_SETRECTNP消息,对该矩形区域进行限制,以在文本框的客户区域中指定一个特定区域。
在下面的样例程序中,我们希望文本控件的后一半原封不动地保持完整,即不希望文本滚动而超出视线。可以从文本框控件的Height属性中提取出它的高度,并将该值除以2,得到该文本框控件后一半的坐标。然后将该结果传递给SendMessage函数,告诉EM_SETRECTNP防止该矩形区域滚动。
有些程序员可能会希望使用EM_SETRECT消息代替EM_SETRECTNP消息。但是,使用EM_SETRECT消息会停止Windows对该格式化矩形区域中的文本的重新绘制,导致文本框控件中的文本会看不到。
 
样例程序
该程序显示了如何临时冻结一个文本框控件中的特定部分,该部分包含的文本不能滚动,因而不会超出视线之外。
1.在VisualBasic中开始一个新的工程,采用缺省的方法建立Form1。
2.将如下常量和声明语句添加到Form1的通用声明部分中(注意该声明语句需要书写在一行内):
Private Declare Function SendMessage Lib "User"
(ByVal hWnd As Integer, ByVal wMsg As Integer,
ByVal wParam As Integer, lParam As Any) As Long
Const WM_USER = &H400
Const EM_SETRECTNP = WM_USER + 4
Const EM_SETRECT = WM_USER + 3
对于32位环境下使用Visual Basic5.0的用户,需要将如下声明语句添加到Form1的通用声明部分中:
Private Declare Function SendMessage Lib "user32"
Alias "SendMessageA" (ByVal hwnd As Long, ByVal
wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const EM_SETRECTNP = &HB4
Const EM_SETRECT = &HB3
3.将如下代码添加到Form1的Form_Load事件中:
Private Sub Form_Load()
Text1.Text = " 这 是 我 们 希 望 显 示 出 来 的 第 一 段"
Text1.Text = Text1.Text & " 它 位 于 文 本 框 控 件 中"
Text1.Text = Text1.Text & Chr$(13) & Chr$(10) & " 这 是 第 二 段, 我 们"
Text1.Text = Text1.Text & " 希 望 将 之 冻 结 以 使 文 本 不 能 滚 动 "
End Sub
4. 将如下代码添加到Form1的Click事件中:
Private Sub Form_Click()
Dim R As RECT
Dim X As Long
ScaleMode = 3
R.Left = 0
R.Top = 0
R.Right = Text1.Width
R.Bottom = Text1.Height / 2
X = SendMessage(Text1.hWnd, EM_SETRECTNP, 0, R)
End Sub
5.创建一个新的模块。采用缺省的方法建立Module1.Bas。
6.将如下TYPE结构添加到Module1.Bas中:
Type RECT
Left As Integer
Top As Integer
Right As Integer
Bottom As Integer
End Type
对于32位环境下使用Visual Basic 5.0的用户,需要将如下TYPE结构添加到Module1.Bas中:
Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
7.在Form1上添加一个文本框控件,采用缺省的方法建立Text1,将其MultiLine属性设置为True。
按下F5来执行该程序,我们可以看到文本框显示在Form1上。在窗体上单击一次鼠标,将新的文本键入到该文本框控件中。这时我们可以注意到,当我们在文本框控件的开头处键入新的文本时,在文本框控件下半部分的文本不会滚动。
如果我们将EM_SETRECT消息替代EM_SETRECTNP消息发送给文本框,再次运行该程序,这时我们会发现,文本框的下半部分显示不出来,尽管实际上文本仍然是存储在控件中的。
layout资源包含,android开发必读 Android本地化开发技巧 Android开发网将推出每天一类专题 ExifInterface使用,Android 2.0新增类 GraphableButton类实现Android UI开发 Android控件开发之ToggleButton原理 Android标题栏TitleBar全攻略 AsyncTask实例代码演示Android异步任务 重绘TextView类演示Android的Handler Android的SoundPool类使用与利弊 AsyncTask解决Android UI堵塞问题 Android自定义View实例AnalogClock源码 Android UI开发专题(五) Bitmap和Canvas实例 Android UI开发专题(四) View自绘控件 Android UI开发专题(三) 各种Drawable 提高Android开发效率-Eclipse快捷键大全 Android UI开发专题(二) 之绘图基础 Android UI开发专题(一) 之界面设计 Only the original thread that created a view hierarchy can touch its views的相关 Android上的Back键事件捕获 Android蓝牙API之BluetoothSocket类(2) Android蓝牙API之BluetoothSocket类 Android蓝牙API之BluetoothAdapter类(1) Android蓝牙API之BluetoothAdapter类(2) AndroidManifest.xml文件剖析 (三) AndroidManifest.xml文件剖析 (二) AndroidManifest.xml文件剖析 (一) MOTODEV初体验,高效Android开发工具 Simple让BASIC语言编写Android程序 MOTODev试用报告- Android开发效率之源 安装MOTODEV Studio for Android版方法 VB,DELPHI 哪个对网络图形编程支持更好 有上海的公司需要人吗? VB,DELPHI 哪个对网络图形编程支持更好 调查:大家喜欢第三方控件吗? session 问题 如何在lotus中利用JAVA进行写代理,或哪里有较好的相关资料!如有好的帮助,定当另外再给分 虚拟现实,网络哪一个更有前途? 关于注册表 关于网络打印的问题?????????急急急 奇怪的现象。。 初学者问的基本的问题请大家指教 那里有编写ActiveX DLL网页的教程~ Unix或者Dos下怎么知道键盘有键被按下? 大家好 一个有意思的小任务,诚征实现程序 关于网络打印的问题?????????急急急 请问深圳IT行业人员薪资水平 请问谁知道那有关于售票系统方面的软件可以DOWN! windows2kserver 里的“本地策略”不能用? 我的2000因为WMI不能用了,谁能帮我,快!我在这等 灌水灌得差点忘了问问题~进来的有分。 一个有意思的小任务,诚征实现程序 我的2000因为WMI不能用了,谁能帮我,快!我在这等: 一个有意思的小任务,诚征实现程序 那位仁兄用过 installation system 请告诉我怎样设置才能使我的应用程序出现在“开始”菜单里 小弟急用 韩国队崛起大揭密:铁血作风 军人模式 地狱训练 vb中怎么动态生成按钮??? 请问:考中程怎样去复习,尤其是下午的题? java 的环境配置,请高手指教! 如何判断一个1024的int数组的所有元素的值全部小于50。寻求高速算法。 有谁看过Charles Petzold的《Programming Microsoft Windows with C# 》和Jeffrey Richter的《Applied Microsoft.NET Framework Programm 如何把图标加到 dll 文件中! 求助!!!哪儿能下载到VB高级编程的详细参考资料? 如何得到光标在编辑框中的位置?一个笨笨的问题 请教select函数用法!!!!! 关于日期计算的的错误!请关注!! 韩国人踢进八强 和 中国人相互掐架(转帖) vb中怎么动态生成按钮 如何修改Internet option/home page中的address CSDN如何上传文件啊? 请教c++的问题 滴水之恩,涌泉相报!!! REALPLAY不出声音 我想考scjp,不知道那个证有没有用? 哪儿有这样的软件? 电脑游戏与电子游戏 哪位有CRC-CCITT的表格,计算法就不必了 电子游戏与电脑游戏 如何用ASE12.5构建ODBC数据源并用ASP连接调用它? 关于c#版csdn助手的数据连接问题 有没有点击表头排序的listview控件? 带有侣、娱、盒、豫、趟、诵的成语 委字可以怎么组词 一项工程甲独做8小时完成乙独做12小时完成.若甲做1小时后由乙接替甲做,甲乙要用几小时完成总任务3/5 请教经史子集的书,没有译文的版本哪个出版社的好 委字可以组哪些词委可以组哪些词 甲单独做8小时完成乙单独做12小时完成若甲做1小时后由乙接替甲做,甲乙要用几小时才能完成总任务的3╱5? 用零,侣,娱组词补充句子. 果然咋造句 一项工程甲独做8小时完成乙独做12小时完成,如甲做1小时后乙接着做几小时可完成全部的5分之3?急 中国的书那么多,诸子百家的,经史子集,四书五经,等等,那么多,什么时候能读完啊? 尽管咋造句用英语 一项工程,甲单独做8小时完成,乙单独做12小时完成,甲乙合作多少小时完成全部工程的, 侣 娱 盒 的组词 小明读一本故事书,第一天读了25页,比第二天读得多4分之1,小明第二天读了读了多少页?列式啊 一个工程,甲单独这8小时完成,乙12小时,甲做一个小时后由乙接替,甲乙要用几个小时完任务5/3 作文:我的另一个天地 400到500字左右快 南京大桥200字作文 关于观点作文的问题!400字!仿照“真理诞生于一百个问号之后”的写法,用具体事实说明一个观点,求一篇400字的作文,复制自己写都可以啊! 辨别形近字并组词坑( ) 抗( ) 锈( ) 绣( ) 挪( ) 娜( ) 楦( ) 暄( ) 侯( ) 候( ) 豫可以组什么词(除了犹豫) 为什么小明14岁生日,妈妈插15支蜡烛? 区别字组词 “豫”字组词要2个 教师节的作文《教师节我们应该为老师做什么》500~600字数,粘贴的不要! 是一篇作文! 一种电冰箱,现在每台的价格是1840元,比原来降低了20%,原来每台的价钱是多少元? 豫怎么组词 氢氧根的书写~帮我看看是否正确(还有那些数字是全部都小写的吧)NH4OH KOH NaOH Ba(OH)2 Al(OH)3 NH4NO3 按规则办事的演讲稿 豫的意思+组词? 苏教版小学三年级英语中f小写的正确书写格式?看女儿写英语字母时发现她的f小写只占了两格,我特地到百度中重新查了下是写满三格的,那么到底哪种才是正确的呢? 祖国在我心中演讲稿 英文版 豫有什么组词5个或5个以上 2012年如果写成汉字小写的话,正确的写法是() 讲普通话 规范字演讲稿 一项工程,甲单独做12个小时可以完成,乙单独做8小时可以完成,丙单独做9小时可以完成.三人合作1小时,续可以完成这项工作的几分之几?还剩下这项工程的几分之几? 《黄鹤楼送孟浩然之广陵》中借景抒情是?含蓄地表达对友人的深挚感情 谁能帮我写篇演讲稿?主题“我心中的奥运”,演讲稿,主题“我心中的奥运”,要求演讲时间在5分钟以内.演讲活动前言:为了更好的宣传奥运、弘扬奥运精神,在距奥运倒计时一周年之际,进一 一项工程,甲单独做要12小时完成.乙单独要10小时完成,丙单独做要15小时完成.如果三人合作.一项工程,甲单独做要12小时完成.乙单独要10小时完成,丙单独做要15小时完成.如果三人合作,多少小时 《这一刻,我认识了我自己》《又是新的开始》作文600字这两篇作文2选1,在半小时以内回答悬赏会高一点 祖国在我心中演讲稿(五分钟内)开头要新颖只有开头也可以·给个提示也可以·麻烦~~~ 小学生运动会稿件之100米跑 60字 带人名3篇 某商店将甲、乙两种品牌的电冰箱同时卖出,其中甲种品牌电冰箱售价是1500元,盈利25%,甲种品牌电冰箱售价 小学四年级作文:是什么让我惊奇 .1尽可能的多听英语歌曲.2找一些说英语的笔友写信给他.3经常听英语广播.翻译. 有关同学友情的演讲稿开头我要转学了.希望能借演讲抒发感情.一百字左右,再推荐几首背景音乐 写“鱼”和“熊掌”不可得兼取熊掌的目的是什么?写“鱼”和“熊掌”不可得兼 取“熊掌”的目的是什么?请看清我问的问题!我拜托你们别乱回答!我有急用! 运动会稿子200字 谁有初一同学之间友情演讲稿?我要用. 写“鱼”和“熊掌”“不可兼得时”取“熊掌”的用意是什么 教师节就要即将来到了.改病句 求一篇题目为《考试前的一个晚上》的作文 400字左右 主要写心理活动的!知道得快! 组词:柜()娱()盒()豫()趟()诵()零()编()某()洛()榆()帐() 为什么要说鱼与熊掌不可兼得呢?明明是熊掌更珍贵! 修改病句 九月十日是教师节"九月十日是教师节"是一病句,怎样修改 读四部书 知仁义礼智信 温良恭俭让 乃经史子集帮我对一对这个对子 写鱼和熊掌不可得兼时取熊掌的用意是什么 求关于友情的演讲稿 “《老子》一书按照四部分分类法应该属于经史子集哪一部?” 二者不可兼得,舍鱼而取熊掌者也是什么意思 演讲稿友情篇关于友情的演讲稿,要很一般的,也可以是差的,只想应付一下,大约800字左右,下午两点之前就要用,请大家帮帮忙,拜托了
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘