马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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 函数的同时调用 GetMessage、PeekMessage 或 WaitMessage 函数,那么回调函数才会被调用。
2. 如果发送一个范围低于 WM_USER 的消息给异步消息函数(PostMessage、SendNotifyMessage 或 SendMessageCallback),它的消息参数不能包含指针。否则,操作将失败。函数将在接收线程处理消息之前返回,发送者将在内存被使用之前释放。
3. 对于需要使用 HWND_BROADCAST 通信的应用程序,应当调用 RegisterWindowMessage 函数来为应用程序间的通信取得一个唯一的消息。
4. 系统只对系统级的消息(0 ~ WM_USER-1)进行封送处理。发送自定义消息(>= WM_USER)到另一个进程,你需要自己对消息进行封送处理。
【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。
|