鱼C论坛

 找回密码
 立即注册
查看: 4495|回复: 0

[API档案] SendMessageCallback

[复制链接]
发表于 2016-2-17 23:53:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
函数功能:

SendMessageCallback 函数发送指定消息给一个或多个窗口。

SendMessageCallback 函数调用指定的窗口过程并立即返回(尽管窗口属于另一个线程,依旧可以立即返回)。当窗口过程处理完消息后,系统调用 lpCallBack 参数指定的回调函数,将消息处理的结果和一个应用程序定义的值传给回调函数。


API 函数原型:
BOOL WINAPI SendMessageCallback(
  _In_ HWND          hWnd,
  _In_ UINT          Msg,
  _In_ WPARAM        wParam,
  _In_ LPARAM        lParam,
  _In_ SENDASYNCPROC lpCallBack,
  _In_ ULONG_PTR     dwData
);

参数解析:

参数 含义
hWnd 1. 指定接收消息的窗口句柄
2. 如果该参数的值是 HWND_BROADCAST((HWND)0xffff),那么消息将发送给所有的顶层窗口(包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息就是不发送给子窗口)
Msg 1. 指定将被发送的消息
2. 请参考:Windows 常用消息及含义
wParam 消息的附加信息
lParam 消息的附加信息
lpCallBack 1. 指向一个回调函数的指针,系统将在窗口过程处理完消息之后调用它
2. 如果 hWnd 参数的值是 HWND_BROADCAST((HWND)0xffff),系统将每个顶层窗口调用一次 SendAsyncProc 函数
dwData 一个应用程序定义的值,将发送给 lpCallBack 参数指定的回调函数


返回值:

1. 如果函数调用成功,返回值是非 0;

2. 如果函数调用失败,返回值是 0。


备注:

1. 如果目标窗口属于同一个线程的话,那么窗口过程将同步被调用,并且在窗口过程返回后立即调用 lpCallBack 参数指定的回调函数。如果目标窗口属于一个不同的线程,那么只有当调用 SendMessageCallback 函数的同时调用 GetMessagePeekMessageWaitMessage 函数,那么回调函数才会被调用。

2. 如果发送一个范围低于 WM_USER 的消息给异步消息函数(PostMessageSendNotifyMessage 或 SendMessageCallback),它的消息参数不能包含指针。否则,操作将失败。函数将在接收线程处理消息之前返回,发送者将在内存被使用之前释放。

3. 对于需要使用 HWND_BROADCAST 通信的应用程序,应当调用 RegisterWindowMessage 函数来为应用程序间的通信取得一个唯一的消息。

4. 系统只对系统级的消息(0 ~ WM_USER-1)进行封送处理。发送自定义消息(>= WM_USER)到另一个进程,你需要自己对消息进行封送处理。

【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 23:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表