没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|其它|编辑:郝浩|2005-12-09 13:54:00.000|阅读 1163 次
概述:
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
Windows API的SendMessage函数可以用来向Visual Basic控件中 发送消息,例如向文本框控件上发送消息。本文介绍如何利用该函数
防止文本框控件中的部分文本滚动,即该控件中不能滚动的部分不能 被用户看见。
发送消息到文本框控件
Visual Basic中的文本框控件就是一个最小化的字处理程序。当 该文本控件的Mult iLine属性被设置为True时,则文本可以自动换行;
当在文本框控件中键入了许多文本时,控件中的文本会向上滚动。这 时文本就变得看不到了,但这些文本实际上仍然在控件中——它们并 没有被删除。
Windows API的SendMessage函数可以用来防止文本框控件中的文 本滚动而超出我们的视线。当创建该文本框控件时,它的客户区域格
式化为一个矩形(该区域就是键入文本的地方),可以给该控件发送EM_ SETRECTNP消息,对该矩形区域进行限制,以在文本框的客户区域中指 定一个特定区域。
在下面的样例程序中,我们希望文本控件的后一半原封不动地保 持完整,即不希望文本滚动而超出视线。可以从文本框控件的Height 属性中提取出它的高度,并将该值除以2,得到该文本框控件后一半的
坐标。然后将该结果传递给SendMessage函数,告诉EM_SETR ECTNP防 止该矩形区域滚动。
有些程序员可能会希望使用EM_SETRECT消息代替EM_SETRECTNP消 息。但是,使用EM_ SETRECT消息会停止Windows对该格式化矩形区域
中的文本的重新绘制,导致文本框控件中的文本看不到。
样例程序
该程序显示了如何临时冻结一个文本框控件中的特定部分,该部 分包含的文本不能滚动,因而不会超出视线之外,如下图所示。
1.在Visual Basic中开始一个新的工程,采用缺省的方法建立For m1。
2.将如下常量和声明语句添加到Form1的通用声明部分中(注意该 声明语句需要书写在一行内):
Private Declare Function SendMessage Lib "User" (ByVal h Wnd As Integer, ByVal
wMsg As Integer, ByVal wParam As Inte ger, lParam As Any) As Long
Const WM_USER = &H400
Const EM_SETRECTNP = WM_USER + 4
Const EM_SETRECT = WM_USER + 3
对于32位环境下使用Visual
Basic 5.0的用户,需要将如下声明 语句添加到Form1的通用声明部分中:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal
hwnd As Long, ByVal wMsg As Long, ByVa l wParam Long, lParam As Any) AsLong
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消息发送给文本框
,再次运行该程序,这时我们会发现,文本框的下半部分显示不出来,尽 管实际上文本仍然是存储在控件中的。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号