[转]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群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)
- Access报价单转订单示例代码(11.08)
- Access系统自带的日期选择器不...(11.08)
- 分享一下Access工程中的acw...(11.07)
- Access快速开发平台--让有权...(11.04)
- Access快速开发平台--审批选...(11.01)
- ACCESS两张表先各自排序,然后...(10.31)