在网上搜索这两个函数调用之间的区别,我发现:
这两个API调用之间的区别在于它们将控制权返回给调用应用程序。使用 SendMessage 控件不会返回到调用应用程序,直到发送消息的窗口已完成处理已发送消息,但是 PostMessage 控件将返回到调用应用程序立即,无论天气如何,发送的消息都已经过程。
postMessage:在与该线程关联的消息队列中发送消息并返回,而不等待线程处理该消息。
SendMessage:调用指定窗口的窗口过程,并且在窗口过程处理完消息之前不会返回。
PostMessage 是一个异步函数,其中 SendMessage 是一个同步函数。
现在的问题是我的应用程序(需要高性能)哪个功能更好用?
请注意,我在visual studio 2010中使用MFC并使用此代码:
CWnd *pParentOfClass = CWnd::GetParent();
pParentOfClass ->
我只是有这些功能来发送消息:
PostMessageW
的SendMessage
SendMessageW
更多问题:
你能告诉我 SendMessage 和 SendMessageW 之间的区别吗?
答案 0 :(得分:4)
您实际上已经通过描述SendMessage和PostMessage回答了您自己的问题。
SendMessage:发送消息并等待负责该消息的过程完成并返回。
PostMessage:将消息发送到消息队列并立即返回。但是你不知道该消息何时被实际处理。因此,如果您希望从已处理的邮件中获得答案,那么您很可能也会通过邮件获得答案。
这真的取决于使用哪一个,但最终结果几乎相同,只是关于时间。此外,PostMessage在多线程应用程序中特别有用,它允许您通过创建的窗口在线程之间安全地进行通信。
以A或W结尾的PostMessage或SendMessage只是指示字符串将如何解释的指示符,即分别为单字节或多字节。没有A或W结尾的那些是预处理器宏,并将委托给你应用程序设置的任何内容。