没有合适的资源?快使用搜索试试~ 我知道了~
如何查找sendmessage最后两个参数的方法
4星 · 超过85%的资源 需积分: 9 38 下载量 183 浏览量
2010-12-02
20:18:29
上传
评论
收藏 63KB DOC 举报
温馨提示
试读
11页
如何查找sendmessage最后两个参数, 或者这个问题已经困扰了很多同志了, 我这里找出了一个方法,大家看了就知道
资源推荐
资源详情
资源评论
关于 SendMessage
编译:snowapex
本文是对 MSDN 中关于 SendMessage 的翻译与小结。
SendMessage 函数功能描述:将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口过程,直
到窗口过程处理完消息后才返回。
.函数原型:
LRESULT SendMessage(
HWND hWnd, // 目标窗口句柄
UINT Msg, // 被发送的消息
WPARAM wParam, // 第一个消息参数
LPARAM lParam // 第二个消息参数
);
.参数:
hWnd
窗口过程接收消息的窗口句柄。如果此参数为 HWND_BROADCAST,则消息被送到系统的所有顶层窗口,
包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口。消息不被送到子窗口。
参数 1:hWnd-窗口句柄。窗口可以是任何类型的屏幕对象。
参数 2:wMsg-用于区别其他消息的常量值.
参数 3:wParam-通常是一个与消息有关的常量值,也可能是窗口或控件的句柄.
参数 4: lParam-通常是一个指向内存中数据的指针。
后两个参数是什么意思
其实这两个参数可以通过查找 MSDN 来找到,比如 WM_GETTEXT,可以通过在 msdn 里键入
WM_GETTEXT,得到 wParam 和 lParam 的详细说明。
在 SendMessage 中,wParam 与 lParam 参数值是灵活多变的,它随着 wMsg 的不同而不同。所以,要搞清
楚它们的具体含义,参考 VB 的 API 使用手册是很重要的。
如:
1、读出窗体的 Caption:SendMessage Me.hwnd, WM_GETTEXT, Len(S), ByVal S
2、关闭窗口:SendMessage Wnd, &H10, 0, 0
3、模拟按下指定键:SendMessage Wnd, WM_KEYDOWN, vbkey5, 0&
是配合第 2 个参数(Msg)使用的
提问人的追问 2009-08-03 15:22
能不能详细说说哦,这么大的范围谁听的明白哦回答人的补充 2009-08-03 15:31 SendMessage 本来就是一
个定义范围很大的函数。
如果你全懂了。如果你把 Msg 消息全弄懂的话就已经很厉害了。。。我目前也只是知道一点而且
举个例子你看
sendmessage hwnd, wm_keydown, 65 ,0 ' 向目标窗口发送一个按键消息,65 就是键盘消息,A
SendMessage TEXTHWND, EM_GETSEL, 0, s) ' 返回一个 Text 内所有文字字节数到变量 s
就看你的第 2 个消息怎么定义~~
评价答案
您已经评价过!好:0 您已经评价过!不好:0 您已经评价过!原创:0 您已经评价过!非原创:0 ゃ灵动_ 回
答采纳率:32.4% 2009-08-03 15:21 满意答案好评率:0% LRESULT SendMessage(
HWND hWnd, // handle to destination window
UINT Msg, // message
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
最后两个参数是与消息有关的数据,消息不同,意义就不同。
你要问这两个参数怎么用,没有办法回答你的,因为具体怎么用,要看是传递的是什么消息。
比如发送 WM_GETTEXT 来取得窗口文本的时候,wParam 指定返回的最大字符数(一般是接收文本的内存
大小,如果小于窗口文本的长度,则只能收到一部分),lParam 则是用来接收窗口文本的内存地址。
发送 WM_DESTROY 来销毁窗口的时候,这两个参数都没有使用,传递 0 就可以了
.返回值:
返回值返回消息处理的结果,其依赖于所发送的消息。
.备注:
需要以 HWND_BROADCAST 方式通信的应用程序应该使用 RegisterWindowMessage 函数来获得应用程序
间通信的独特消息。
如果指定的窗口通过调用线程被创建,则窗口过程作为子程序被立即调用。如果指定的窗口通过调用不同
线程被创建,则系统切换到该线程并调用适当的窗口过程。线程间的消息只有在接收线程执行消息检索代
码时才被处理。发送线程将被阻塞到接收线程处理完消息为止。
Windows CE:Windows CE 不支持 Windows 桌面平台所支持的所有消息。在使用 SendMessage 函数之前,
应检查发送的消息是否被 Windows CE 所支持。
.使用环境:
Windows NT: 3.1 及以上版本;
Windows:95 及以上版本;
Windows CE:1.0 及以上版本;
头文件:winuser.h;
输入库:user32.lib;
Unicode:在 WindowsNT(Windows2000)环境下以 Unicode 和 ANSI 方式实现。
.示例代码:
case WM_KEYDOWN:
switch (wParam)
{
case VK_HOME:
SendMessage (hwnd, WM_VSCROLL, SB_TOP, 0) ;
break ;
case VK_END:
SendMessage (hwnd, WM_VSCROLL, SB_BOTTOM, 0) ;
break ;
case VK_PRIOR:
SendMessage (hwnd, WM_VSCROLL, SB_PAGEUP, 0) ;
break ;
...
}
return 0 ;
...
.常见问题
1)使用 SendMessage 来实现剪切、复制和粘贴
SendMessage(hwnd, WM_COPY, 0, 0);
SendMessage(hwnd, WM_CUT, 0, 0);
SendMessage(hwnd, WM_PASTE, 0, 0);
2)SendMessage 与 PostMessage 的区别
PostMessage 将消息放入消息队列后马上返回,而 SendMessage 直到窗口过程处理完消息后才返回
3)SendMessage 发送 WM_COPYDATA 消息在进程间传送数据
WM_COPYDATA 消息主要目的是允许在进程间传递少量只读数据。SDK 文档推荐用户使用
SendMessage()函数,接收方在数据复制完成前不返回,这样发送方就不可能删除和修改数据。
例如:
std:string strData = "VC 知识库 VCKBASE.COM";
COPYDATASTRUCT cds;
cds.dwData = 0;
cds.cbData = strData.Length();
cds.lpData = strData.c_str();
::SendMessage(hwnd, WM_COPYDATA, NULL, (LPARAM)&cds);
(全文完)
Windows 消息目录
消息,就是指 Windows 发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改
变窗口尺寸、按下键盘上的一个键都会使 Windows 发送一个消息给应用程序。消息本身是作为
一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,对于单击鼠
标所产生的消息来说,这个记录中包含了单击鼠标时的坐标。这个记录类型叫做 TMsg,
它在 Windows 单元中是这样声明的:
type
TMsg = packed record
hwnd: HWND; / /窗口句柄
message: UINT; / /消息常量标识符
wParam: WPARAM ; // 32 位消息的特定附加信息
lParam: LPARAM ; // 32 位消息的特定附加信息
time: DWORD; / /消息创建时的时间
pt: TPoint; / /消息创建时的鼠标位置
end;
消息中有什么?
是否觉得一个消息记录中的信息像希腊语一样?如果是这样,那么看一看下面的解释:
hwnd 32 位的窗口句柄。窗口可以是任何类型的屏幕对象,因为 Win32 能够维护大多数可视对象
剩余10页未读,继续阅读
资源评论
- xiaad2023-03-09犹豫了半天还是来下载了,看了前面的信息以为可以解决我遇到的问题,没想到后面都是一些名词介绍,浪费了我的积分。
- stephensword2014-01-02sendmessage,如何控制Combox进行选择,研究下
- gl5424002013-06-03这两个多变万化的!
- allenltiverson2012-11-02介绍的是查询MSDN获取两个参数的值,以及常用的消息的含义
- UkokuGemini2012-10-12解决了我的问题,但是资源本身作用不大.
遇见恒星
- 粉丝: 18
- 资源: 71
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功