[转]SendMessage函数的常用消息及其应用3
时 间:2008-12-03 08:20:11
作 者:andymark ID:1350 城市:深圳
摘 要:SendMessage函数的常用消息及其应用
正 文:
5.为ListBox添加水平滚动条
在VB中,列表框控件仅提供垂直滚动条,没有设置水平滚动条的能力,当某些项目的文本宽度较长
时,超出列表框宽度部分的文本就无法显示出来,因此,很有必要为ListBox添加一个水平滚动条来方
便操作。
为添加水平滚动条,只需发一条 LB_SETHORIZONTALEXTENT(&H194) 消息给列表框即可。发送消息
时,wParam为滚动条的长度(以像素为单位,可通过计算得出准确的长度,上面例2 就是如此的,也可
随便给一个数字,如本例的 250),lParam无用。代码如下(已试验成功):
Declare Function SendMessage Lib "user32" Alias "SendMessageA"(ByVal hwnd As Long, _
ByVal wMsg As Long,ByVal wParam As Long,lParam As Any) As Long
Public Const LB_FINDSTRING=&H18F
Public Const LB_SETHORIZONTALEXTENT=&H194
Private Sub Form_Load()
List1.AddItem "软件"
List1.AddItem "电脑游戏"
List1.AddItem "电视机"
List1.AddItem "电视台"
List1.AddItem "电脑"
List1.AddItem "电脑游戏软件"
SendMessage List1.hwnd,&H194,250,0 '为列表框添加水平滚动条
End Sub
Private Sub Text1_Change()
'注意!当lParam传入的是字符串时,必须用ByVal传递
List1.ListIndex = SendMessage(List1.hwnd,LB_FINDSTRING,-1,ByVal Text1.Text)
End Sub
6.在API文本浏览器里,当我们在搜索栏输入任意字母,“可用项”里以该字母开头的项目以高亮显
示以引起我们注意该项是不是我们所需的。象这样的功能一切提供搜索选项的程序都应该具备。以下例
子采用SendMessage函数实现这一技术。
Const LB_FINDSTRING = &H18F
Private Sub Form_Load()
Dim i As Integer
For i = Asc("A") To Asc("Z") '给列表框添加26个字母(大写)
List1.AddItem Chr$(i)
Next
Text1 = "" '令文本框为空
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
Text1 = "" '按下任意键则令原内容消失
Text1.SelLength = 1 '限制长度
Text1.SelText = Chr(KeyAscii) '显示键盘符号
KeyAscii = 0 '禁止响应
'ListBox中的项目文本若与文本框的一致则选中(高亮)
List1.ListIndex = SendMessage(List1.hwnd, LB_FINDSTRING, -1, ByVal CStr(Text1.Text))'经试,不需CStr函数
End Sub
以上程序适用于单项目为多个字母的查询,但必须注意,在TextBox的KeyPress事件中要作相应的
改动
SendMessage函数应用(二)
介绍如何利用消息函数来扩展树型列表 TreeView 控件的功能。相信对于树型列表控件大家十分的
熟悉,典型的应用就是 Windows 资源管理器中的目录列表。而在VB中,树型列表控件包含在Microsoft
Windows Common Control 6.0(也可能是5.0,视你的VB或者系统版本而定)中。在Windows API 中,
有一系列的以 TVM_ 开头的消息值,这些消息就是扩展树型列表控件所特定的消息值,下面向大家介绍
其中的一些应用
1、设置树型列表控件的背景颜色
首先做如下的定义:
Const TV_FIRST = &H1100
Const TVM_SETBKCOLOR = TV_FIRST + 29(4381)
调用:
Call SendMessage(TreeView1.hwnd, 4381, 0,ByVal RGB(255, 0, 0))
上面的SendMessage调用将TreeView1的背景颜色设置为红色。
大家可能注意到了。在上面的 Sendmessage 函数定义中,我们将 lParam 定义为 ByVal lParam
As Long,而不是象前面的那些范例那样定义为 Any 或者 String 类型,关于这个问题,我会在最后的
一章中做介绍。
2、设置树型列表控件标题行高度
TVM_SETITEMHEIGHT 消息设定控件的标题行的高度,该消息的定义及调用方法如下:
Const TV_FIRST = &H1100
Const TVM_SETITEMHEIGHT = TV_FIRST + 27
Call SendMessage(TreeView1.hwnd, TVM_SETITEMHEIGHT, 60, 0) '将TreeView1标题行高度设置到60像素高
Access软件网官方交流QQ群 (群号:483923997) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 【Access小作品】简单的待...(04.30)
- 【Access窗体导出PDF】...(04.08)
- 【Access窗体导出PDF】...(04.07)
- Access两种方式实现即时更...(03.01)
- Access隐藏与显示lacc...(01.12)
- 【Access高效办公】将每个...(12.23)
- Access21点游戏源代码(12.13)
- 【Access窗体导出Exce...(11.15)
- 【Access开发】Acces...(11.14)
学习心得
最新文章
- 日期不为空怎么写表达式?[字段名]...(05.14)
- 附件字段如何判断myPictrue...(05.13)
- Access链接表SQL SERV...(05.11)
- Access快速开发平台企业版--...(05.09)
- 新版铁路工程管理系统V2.0(05.08)
- Access快速开发平台企业版--...(05.07)
- 【Access Call用法学习】...(05.06)
- access软件网站长张志简介 (05.05)
- 精美简单实用的系统面板(05.03)
- 【Access小作品】简单的待办任...(04.30)