请问有没人帮忙分析sendmessage与postmessage的区别? ( 积分: 50 )

  • 主题发起人 主题发起人 willing66
  • 开始时间 开始时间
W

willing66

Unregistered / Unconfirmed
GUEST, unregistred user!
请问有没人帮忙分析sendmessage与postmessage的区别?
 
请问有没人帮忙分析sendmessage与postmessage的区别?
 
SendMessage:<br> &nbsp; &nbsp;函数功能:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。<br><br> &nbsp; &nbsp;函数原型:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);<br><br> &nbsp; &nbsp;参数:<br><br> &nbsp; &nbsp;hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。<br><br> &nbsp; &nbsp;Msg:指定被发送的消息。<br><br> &nbsp; &nbsp;wParam:指定附加的消息指定信息。<br><br> &nbsp; &nbsp;IParam:指定附加的消息指定信息。<br><br> &nbsp; &nbsp;返回值:返回值指定消息处理的结果,依赖于所发送的消息。<br><br> &nbsp; &nbsp;备注:需要用HWND_BROADCAST通信的应用程序应当使用函数RegisterWindowMessage来为应用程序间的通信取得一个唯一的消息。<br><br> &nbsp; &nbsp;如果指定的窗口是由调用线程创建的,则窗口程序立即作为子程序调用。如果指定的窗口是由不同线程创建的,则系统切换到该线程并调用恰当的窗口程序。线程间的消息只有在线程执行消息检索代码时才被处理。发送线程被阻塞直到接收线程处理完消息为止。<br><br> &nbsp; &nbsp;Windows CE:Windows CE不支持Windows桌面平台支持的所有消息。使用SendMesssge之前,要检查发送的消息是否被支持。<br><br> &nbsp; &nbsp;速查:Windows NT:3.1及以上版本:Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:winuser.h;输入库:user32.lib;Unicode:在Windows NT环境下以Unicode和ANSI方式实现。<br><br>PostMessage:<br> &nbsp; &nbsp;函数功能:该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回。消息队列里的消息通过调用GetMessage和PeekMessage取得。<br><br> &nbsp; &nbsp;函数原型:B00L PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);<br><br> &nbsp; &nbsp;参数<br><br> &nbsp; &nbsp;hWnd:其窗口程序接收消息的窗口的句柄。可取有特定含义的两个值:<br><br> &nbsp; &nbsp;HWND.BROADCAST:消息被寄送到系统的所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口。消息不被寄送到子窗口。<br><br> &nbsp; &nbsp;NULL:此函数的操作和调用参数dwThread设置为当前线程的标识符PostThreadMessage函数一样。<br><br> &nbsp; &nbsp;Msg:指定被寄送的消息。<br><br> &nbsp; &nbsp;wParam:指定附加的消息特定的信息。<br><br> &nbsp; &nbsp;IParam:指定附加的消息特定的信息。<br><br> &nbsp; &nbsp;返回值:如果函数调用成功,返回非零值:如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。<br><br> &nbsp; &nbsp;备注:需要以 HWND_BROADCAST方式通信的应用程序应当用函数 RegisterwindwosMessage来获得应用程序间通信的独特的消息。<br><br> &nbsp; &nbsp;如果发送一个低于WM_USER范围的消息给异步消息函数(PostMessage.SendNotifyMessage,SendMesssgeCallback),消息参数不能包含指针。否则,操作将会失败。函数将再接收线程处理消息之前返回,发送者将在内存被使用之前释放。<br><br> &nbsp; &nbsp;速查:Windows NT: 3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:winuser.h;输入库:user32.lib;Unicode:在Windows NT环境下以Unicode和ANSI方式实现。
 
能不能提供一个例子,最好能够包含这个函数的例子。
 
能不能提供一个例子,最好能够包含这个函数的例子。
 
SendMessage发了消息要等返回<br><br>PostMessage不等返回
 
我还想问一下,如果我要取得到消息中的值如何取?<br>比如说,我想传一串字符串给他,<br>或者说,我们的键盘按下时又是如何取得按键的值的。
 
接收大家的意见!
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部