PostMessage
这个函数放置一个消息到与线程创建的窗口相关联的消息队列后立刻返回,不等待线程处理该消息;
该消息可以通过
GetMessage or
PeekMessage从消息队列中取回;
HWND hWnd ;
HWND_BROADCAST 该消息被投递到所有的顶层窗口(简单点说就是正在运行的所有程序的窗口),但是不会被投递到子窗口;
NULL ,表示只把消息投递到发送消息所在线程的消息队列;
如果使用异步函数(
PostMessage,
SendNotifyMessage)发送WM_USER(也就是系统要用到的消息)时,不能够包含指针信息(我理解为鼠标指针),否则这个消息投递将会失败;这个函数投递消息后,不会等待接收线程处理该消息,而是立即返回,并且同时释放投递时用到的内存空间;(对此处个人理解为以下处理的)
个人理解:
换句话说,一般我们使用
PostMessage投递消息时,不会给lParam这个参数一个地址值,也就是不指向内存空间,因为如果是程序之间传递,那么会在所有程序都能访问的公共内存中开辟一块内存,拷贝保存刚刚lparam所指向的地址中的内容,然后PostMessage返回时,会立即释放掉这块内存,所以一般我们不使用PostMessage投递块数据;投递数据块使用SendMessage
有错的地方,希望纠正,虚心学习哈!