函数功能:
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. 指定接收消息的窗口句柄 |
|
Msg |
1. 指定将被发送的消息 |
|
wParam |
消息的附加信息 |
|
lParam |
消息的附加信息 |
|
lpCallBack |
1. 指向一个回调函数的指针,系统将在窗口过程处理完消息之后调用它 |
|
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)到另一个进程,你需要自己对消息进行封送处理。




