VB中sendmessage具体用法

比如我知道一个窗口里控件的句柄h1,类名是Button(是一个按钮),想用sendmessage函数发送一个Alt+D命令。SendMessageh2,wMsg,wPar... 比如我知道一个窗口里控件的句柄h1,类名是Button(是一个按钮),想用sendmessage函数发送一个Alt+D命令。SendMessage h2,wMsg,wParam,lParam
不知道后面3个参数如何用的?还有wMsg参数,如果发送给文本框他是 WM_SETTEXT,并且他还要定义Const WM_SETTEXT = &HC,不自带什么意思哦?那我如果是发送给按钮该怎么定义呢?请详细解答。
展开
 我来答
匿名用户
2013-08-13
展开全部
SendMessage
说明
调用一个窗口的窗口函数,将一条消息发给那个窗口。除非消息处理完毕,否则该函数不会返回。SendMessageBynum, SendMessageByString是该函数的“类型安全”声明形式
用法:
SendMessage 窗口句柄,消息标识符(也就是SendMessage需要做什么),消息标识符的反回值,消息标识符的反回值
返回值
Long,由具体的消息决定
参数表
参数 类型及说明
hwnd Long,要接收消息的那个窗口的句柄
wMsg Long,消息的标识符--取决定作用
wParam Long,具体取决于消息
lParam Any,具体取决于消息
SendMessage 用法大全
消息标识符 用途 wParam Long lParam Long 返回值
BM_CLICK=&HF5 向目标窗口发送Click指令 0 0 非零表示成功
EM_GETLINECOUNT = &HBA 获取目标窗口文本总行数 0 0 返回行数
EM_GETLINE= &HC4 将目标窗口的第wParam行的内容显示在lParam中 常数,第几行,第一行为0 String字符串数组

例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个字符。
~~~~~~~`
我自己的笔记,你自己慢慢看吧。。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式