PostMessage和::PostMessage的区别?

qiuzhizhe 2007-03-09 03:26:52
看到网上有好多关于“SendMessage和PostMessage的区别”的资料。
但是,找了好长时间也没有找到PostMessage和::PostMessage这两个函数的区别的资料。高手能否指点一下MFC的PostMessage和windows API的::PostMessage到底在功能和用法上有什么区别,在什么情况下该用哪个?
...全文
4173 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
CherishLemon 2007-04-09
  • 打赏
  • 举报
回复
各位老大,
那::SendMessage和::PostMessage有那些具体的去别啊
yanfeng 2007-04-09
  • 打赏
  • 举报
回复
呵呵,楼上的兄弟应该先看看windows API 和 MFC之后再回答这个问题。
::PostMessage是windows API 的函数,而PostMessage是MFC的函数,其实就是对::PostMessage进行了一下封装
一条晚起的虫 2007-04-09
  • 打赏
  • 举报
回复
::PostMessage:Windows API
CWnd::PostMessage,CWnd类的成员函数,hwnd用的CWnd::GetSafeHWND(),最后还是调用
API。
qwertxp 2007-04-09
  • 打赏
  • 举报
回复
楼上的。。。发了就算了和扔到队列去有什么区别?
sendmessage是发送后需要等待处理后返回。
postmessage发送后无需等待立即返回。
finalwei 2007-04-09
  • 打赏
  • 举报
回复
sendmessage 是发了就算了 postmessage要扔到消息队列去的
louifox 2007-03-27
  • 打赏
  • 举报
回复
::是c++作用域运算符,和PostMessage没任何关系,看看c++语法吧。
ringphone 2007-03-27
  • 打赏
  • 举报
回复
PostMessage:不需要指定接收消息的窗口,但是消息只能发往本窗口
::PostMessage:需要指定接收消息的窗口,但是消息可以发往任意窗口
楼上的问题就要使用::PostMessage
csjcrystal 2007-03-27
  • 打赏
  • 举报
回复
仅仅是封装了一下:比如:
a.h文件:
class CWnd
{
PostMessage(....);
}
b.h文件:
PostMessage(....);
c.h文件
class CDialog : CWnd
{
void A();
};
c.cpp文件
void CDialog::A()
{
::PostMessage(..);//调用的是b.h
PostMessage(..);//调用的是a.h
}
只是一般来说:PostMessage(..);会多一个消息窗口的参数。

PostMessage:不需要指定接收消息的窗口,但是消息只能发往本窗口
::PostMessage:需要指定接收消息的窗口,但是消息可以发往任意窗口
yanfeng 2007-03-26
  • 打赏
  • 举报
回复
我们的这个项目中一般都用::PostMessage。估计是考虑到在线程中能够直接向某个窗体发送消息。用PostMessage则依赖于特定的窗体对象。
shanhe972005 2007-03-26
  • 打赏
  • 举报
回复
无窗体的情况怎么办?在dll中postmessage怎么用啊?
youngwolf 2007-03-10
  • 打赏
  • 举报
回复
PostMessage的定义是这样的:
_AFXWIN_INLINE BOOL CWnd::PostMessage(UINT message, WPARAM wParam, LPARAM lParam)
{ ASSERT(::IsWindow(m_hWnd)); return ::PostMessage(m_hWnd, message, wParam, lParam); }

所以在Release下,它和::PostMessage完全等价,所以能用PostMessage就不要用::PostMessage了,因为前者少一个参数,输入快。以前我也有疑问,以为用PostMessage会损失效率,结果未必,MFC的东西并不总是慢,有些时候他们与API等价的快!
gxl123 2007-03-09
  • 打赏
  • 举报
回复
m
lzg0001 2007-03-09
  • 打赏
  • 举报
回复
一个东西,换种形式罢了!
geniusdot 2007-03-09
  • 打赏
  • 举报
回复
postmessage 是在CWnd及其派生的类中使用,其他时候使用::PostMessage当然第一种情况也可以使用这个.
zhyaaa123 2007-03-09
  • 打赏
  • 举报
回复
功能没区别,哪个方便用哪个
tiger波波 2007-03-09
  • 打赏
  • 举报
回复
up
课程介绍:第一章:正则表达式(regularexpression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。第二章:http协议是一种无状态协议,不记录用户行为,我们可以利用cookie记录数据,方便用户操作,提升用户体验。第三章:ECMAScript6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。第四章:本章主要讲解JS动画原理、动画函数封装和轮播。第五章:本章主要讲解面向对象、构造函数和继承、原型链和继承。第六章:本节课程主要讲解了什么是Ajax、如何使用Ajax发送get请求、如何使用Ajax发送post请求、JSON数据格式、回调地狱、Promise和Ajax的同源策略、跨域请求。第七章:本章主要讲解html、val、attr、prop、class、全选框、动画、节点遍历、ajax、sonp、event、multiple、plugin、plugin、magnifier。第八章:本章主要讲解UML类图、单例模式、工厂模式、策略模式、代理模式、观察者模式。第九章:本章主要讲解为什么要模块化、原生JS中,模块的写法、AMD、CommonJS&Webpack。第十章:本节课程主要讲解了服务器安装环境配置、端口及ip基本常识、简单认识PHP(helloworld)、基本语法和动态网页原理。第十一章:本节课程主要讲解了什么是SASS、SASS的预处理、ass语法(变量、嵌套、导入、mixin、扩展、function、expression)。第十二章:本节课程主要讲解了什么是GULP、GULP环境配置、GULP基本使用及GULP的插件安装与使用。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧