VB中sendmessage具体用法
比如我知道一个窗口里控件的句柄h1,类名是Button(是一个按钮),想用sendmessage函数发送一个Alt+D命令。SendMessage h2,wMsg,wParam,lParam不知道后面3个参数如何用的?还有wMsg参数,如果发送给文本框他是 WM_SETTEXT,并且他还要定义Const WM_SETTEXT = &HC,不自带什么意思哦?那我如果是发送给按钮该怎么定义呢?请详细解答。
答案:SendMessage
说明
调用一个窗口的窗口函数,将一条消息发给那个窗口。除非消息处理完毕,否则该函数不会返回。SendMessageBynum, SendMessageByString是该函数的“类型安全”声明形式
用法:
SendMessage 窗口句柄,消息标识符(也就是SendMessage需要做什么),消息标识符的反回值,消息标识符的反回值
返回值
Long,由具体的消息决定
参数表
参数 类型及说明
hwnd Long,要接收消息的那个窗口的句柄
wMsg Long,消息的标识符--取决定作用
wParam Long,具体取决于消息
lParam Any,具体取决于消息
SendMessage 用法大全
消息标识符用途wParam LonglParam Long返回值
BM_CLICK=&HF5向目标窗口发送Click指令00非零表示成功
EM_GETLINECOUNT = &HBA获取目标窗口文本总行数00返回行数
EM_GETLINE= &HC4将目标窗口的第wParam行的内容显示在lParam中常数,第几行,第一行为0String字符串数组
例1 多行TextBox中的快速处理功能在处理多行TextBox时我们经常会碰到以下几种情况:
希望了解多行TextBox中目前共有多少行文字。
想快速返回第N行的文字。
用SendMessage函数完成上面两个任务的方法非常简单,每个任务只需简单地发送一条消息给多行TextBox即可,两个消息分别为:EM_GETLINECOUNT、EM_GETLINE,其它参数和返回值见附表。
下面用一个简单的实例演示这两个功能:
新建工程,在Form1上添加三个TextBox(名称分别为Text1-3,将Text1的MultiLine属性置为True)和一个命令按钮
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_GETLINECOUNT = &HBA
Const EM_GETLINE = &HC4
Private Sub Command1_Click()
Dim str(256) As Byte
str(1) = 1 '最大允许存放256个字符
'获取总行数,结果显示在文本框text2中
Text2 = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0, 0)
'获取第3行的数据放在str中,转换为字符串后显示在文本框text3中
SendMessage Text1.hwnd, EM_GETLINE, 2, str(0)
Text3 = StrConv(str, vbUnicode)
End Sub
两点补充说明:在调用SendMessage获取第N行字符串时,lParam需要说明为字节数组,在调用完成后,再将字节数组转换为字符串;另外,调用前必须在lParam的前两个字节指明允许存放的最大长度,其中第一个字节为低位,第二个字节为高位,本例将高位(即str(1))置1.说明最大允许存放256个字符。
~~~~~~~`
我自己的笔记,你自己慢慢看吧。。
上一个:vb制作邮件发送软件
下一个:求vb小程序代码