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

防止文本控件中的部分滚动-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消息发送给文本框,再次运行该程序,这时我们会发现,文本框的下半部分显示不出来,尽管实际上文本仍然是存储在控件中的。
“微信公众平台优秀开发商”征集评选活动正式启动 移动数据库新疆界:开源、Swift、可穿戴... Chromebook侵蚀微软商用PC市场,成绩喜人 2014微信开发者大会议程公布 8月1日前购票8折优惠并赠书 四火的唠叨:也谈谈全栈工程师 图形化与集成趋势 协同软件致远发新品V5.1 跨平台开发如何事半功倍 Xamarin推出免费培训 《近匠》上海庆科:海尔智能家居背后的云方案 轻松DIY智能硬件,开源电子原型平台Hippo-ADK 所见即所得!基于Polymer的设计工具Mobile UI Elements 好的产品经理是怎样炼成的? 统一架构、统一运维:UnitedStack发布UOS2.0 把轻应用带进汽车——宝马、百度编程马拉松大赛启动 “钢铁侠”Insteon的逆袭:声控智能家居新时代 游戏云纪元 第二届游戏运营技术论坛即将召开 Bitly:构建月处理60亿点击的分布式系统 重塑微软:Satya Nadella开启整合之路 推送工具个推完成B轮数千万美金融资 娱乐行业数据化 ABD爱梦娱乐发布大数据引擎产品 增强现实:10大AR应用窥探移动未来 LBS的硬件创新:高德LBS智能硬件编程马拉松圆满闭幕 2014优秀微信开发商评选上线 首批旅游汽车电商房产等行业应用出炉(表) 让梦想照进现实——宝马百度编程马拉松闭幕 IXDC大会:移动交互设计精髓——用户体验 想辨析“马航”等事件真伪,有很多技术和工具可以使用 两倍于IBM的基础设施投资,Google大力发展云服务 听云平台发布移动应用性能黑洞报告 微信开发者大会陶瑾:如何玩转微信支付功能的原理和开发 560亿PV+7.3亿用户,Reddit是如何做到的? 打造安全界的希波克拉底誓言文化 极客的春天来了! Mozilla COO宫力:老牌操作系统如何助力新一代智能电视 关于C/S结构的问题?快帮我啊!!! 各位programer加班有加班工资吗? 代理服务器的原理?——有谁知道! 请问怎么在一个对话框程序的文本框中绘图 请问windows网络程序PING编程技术里的几个问题,ICMP回显里面的timestamp是怎么纪录进去的 什么地方可以Down rose?或谁寄给我一个? 编写一个函数,通过指针连接两个字符串!!!!!!!!!!!! 用applet怎样打开一个文件吗? 请问哪种ORB产品实现了com服务器/corba客户机的桥 我读《深入探索C++对象模型》的感受,cber能再回答我一次么? 谁有DELPHI的有关网络编程方面的资料?给我一份可以吗? 关于stringgrid的问题????? 痛苦啊,难道要放弃BCB吗? 大家认为在开发过程中是否不能用全局变量? 如何让LINUX支持我显卡 高手,谁来帮我一下~! 取字符 在SDK中,如何获得客户区的宽度和高度呢??(哪两个函数呢?) 哪里有ATL的电子书下载?最好是中文的! 高手谁能帮帮我呀~~~~~~~! 请教:如何在statusbar的panel中显示一个图标呢? VC++中如何使用OLE对象? 初来乍到,发现这儿JJMM还挺多的。。。 请高人指教~! CSDN中碰到这种问题,该如何解决呢? 如何学习director 你能帮我一下吗?~ 企业商务管理软件,开放全部的源代码及开发文档! 企业管理软件,全套源码及开发文档!!!! 哪里有支持任何波特率的通讯控件下载? net_lover(孟子E章)请进~! 一个有关CWebBrowser的问题,急急急!!! 这样的语句为什么不可以实现一次删除多条记录 plmm是什么意思? 各位大侠,知道哪儿有直接可用的上传文件的控件吗? 多谢了!!! 论坛的题目是不是太没意思了 一个sqlserver7统计的问题?? varchar类型不是可以输入255个字符吗,为什么我输了160个就出现'item XXX doesn't pass validation test ' 唉 ~~~~~ 奈何 ~~~~~ 突然想到个荒唐的问题: 事件和过程有什么不同? 奇怪的事前,高手请进来 我的问题还没有解决~! 这里的高手呢,人听多,会的人不多 申奥倒计时,如果你在线,请进来验证这以历史性时刻,谢谢 我有一个用hook截获鼠标移动的dll,但是没有效果,请问怎么调试? 请教,怎样在java中把Button的背景改做一个图片 对delphi5一个自带例题的疑问。 爆炒MM之水园MM ID一览 窗体和控件的自适应问题? 求《unix》环境高级编程的源程序下载。 在MIS或WEB中有大量的对数据操作的工作,是否所有的insert,update,delete工作都需lock and unlock??? 初二上册数学直角三角形全等的判定,同步练习那一题.已知:如图,在三角形ABC和△A'B'C'中,角ACB=角A'C'B'=90°.,CD,C'D'分别是△ABC和△A'B'C'的中线,且CD=C'D';CE,C'E'分别是△ABC和△A'B'C'的高线,且CE=C'E' 8.4÷﹙2.1×5﹚简便计算 递等式 5乘777加13乘555怎么巧算、、麻烦帮我一步一步写出来. 如图 在三角形abc中,角acb=90°且de是三角形abc的中位线,延长ed到f,使df=ed,连接fc,fb,回答下列问题1..求证:四边形BECF使菱形2.当角A的大小满足什么条件是,菱形BECF使正方形?请回答并证明你的结论 (-510)/(+34)/(-0.125)简便运算大师帮忙~ 计算(-1)+(-3)+(-5)+(7)+…… +(-99) cos(arc sin x/a)等于什么还有反三角函数公式里的一些类似的! 人教版五年级上册数学指导第9页跳一跳0.34×12.5+0.125×66 如何计算1+3+5+7+.+99=?里面有多少项?如何计算呢?===多少? 若a=arc sin(sin3分子4π),则a的值 用梯等式求50*96+57*4+7*66 怎样求证对于任意的角A cosA四次方-sinA的四次方=cos2A (arc sin x)/(x)的极限是?x趋于0 57乘66分之23如何简便运算? 已知cos2a=3/5,求sina的四次方+cosa的四次方 计算:sin[arc*sin(3/5)+arc*sin(7/18)] 数学题怎么算 /80 = 66 怎么计算 cosa四次方—sina四次方 为什么 等于cos2a arc sin (25/99)等于多少度啊?谁手边有计算器帮忙按一下下呗 谁给我出题,80道数学题,(简算)和(方程) sin^4a+cos^4a=1,则sina-cosa= arc sin(-1/2)=? 给80分 用算除法小风 小玉 小明是幼儿园里最好的朋友 小风体重14KG 正好是小明体重的8分之7 而小明比小玉的重15分之1,小玉体重应该是多少千克 修一条路,第一天修了8分之3,第2天修了第一天 求证:(1-cosa的4次方-sina的4次方)/(1-cosa的6次方-sina的6次方)=2/311 sin ( arc sin л/6 ) =多少?还有一道:arcsin(cos 7л/6) = 1+1.2+1.4+1.6+.+9.6+9.8+10怎简便算法 用cosa 表示sin4a-sin2a+cos2a ARC sin 0.91ARC( sin 0.91) 是多少的角度啊 用简便算法计算:48×110-4×48-8×48+2×48 sin4a-cos4a=sin2a-cos2a 求证 5分1比1和3比15可以组成比例对吗 (12.5+0.125)×8-81的简便算法 (sin2a-cos2a)^2=1-sin4a 求证! 0.47*2.5*0.4怎样简便运算 1.6*7.5*1.25.请用简算法. (sin2a-cos2a)^2=1-sin4a请尽快给我答案!急!急!急! 如图,在三角形ABC中,角B=44度,角C=72度,AD是三角形ABC的角平分线.(1)求角BAC的度数;(2)求三角形ADC的度数 0.47*5.9+5.2*4.7-4.7*0.1怎么样简便计算? 6.25*2.7+6.5*1.25的简便算法 如图,在 三角形ABC中,角C=90度,AD平分角BAC,且角B=3倍的角BAD,求角ADC的度数 63+0.63*2.5+0.63*6.5怎样简便计算, 3.14*1.375+0.314*6.25-3.14*0.2 的简便算法 如图,AD为三角形ABC中角BAC的角平分线,DE为三角形ABC的中线.若三角形ABC的面积为24平方厘米,AB=8cm,AC=4cm,则三角形BED的面积为多少?要过程!急! 简便计算185/25-4.5/2.5 1.25*7.1+1/8*2.6+0.375的简便算法 如图,在三角形ABC中,∠ACB=90°,AC=AE,BC=BF则角ECF等于 5.2×4.8+4.8×4.8简便计算算出来讲原因 1.25*1.6*1.5简便算法 如图在三角形abc中角acb等于45度角a等于九十度bd是角abc的平分线ch 2.5×2.4÷1.4+4.8÷2.1×2.5的简便运算 1+2-3-4+5+6-8+9···+1997+1998-1999数一个没错,让你计算, 如图,在三角形ABC全等于三角形A’B’C’,角∠ACB等于90°,∠A等于25°,点B在A’B’上,D是BB’的中点,连接CD,求∠ACA’的度数 简便运算:4/11*(2/5-1/4) 333*333怎样用简便方法计算? 如图 在rt三角形abc中 角acb等于90度 a=5 c=13 求b若斜边AB上的高为CD 求CD 简便运算:40.5÷1/4*[(1-1/4)*1.2] 333乘以333用简便方法怎么算 如图,在三角形ABC中,角ACB=90°,角A=60°,CD,CE分别是边AB上的中线和高.求证角ACE=∠ECD=∠DCB 简便计算4.5*9*1.2=? 777+777-777x777÷777=?用递等式怎么计算
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn