PostMessage和SendMessage的区别

PostMessage:不需要指定接收消息的窗口,但是消息只能发往本窗口
    ::PostMessage:需要指定接收消息的窗口,但是消息可以发往任意窗口

    SendMessage:将消息直接发送给窗口,并调用该窗口的窗口过程进行处理。在窗口过程对消息处理完毕之后,该函数才返回(SendMessage发送的消息不进入队列)。

    PostMessage函数将消息放入创建窗口的线程相关联的消息队列后立即返回。除了这两个函数之外,还有一个

PostThreadMessage函数,用于向线程发送消息,对于线程消息,MSG结构体中的hwnd成员为NULL。

    SendMessage是阻塞的。PostMessage不是的。SendMessage会等发去的消息被处理了才返回。PostMessage则只负责把消息放到相应的消息队列中就返回了,它不必等待消息的处理。

 

在使用上有一个要注意的地方。

   在MFC中每个从CWnd继承来的类,都有两个成员函数SendMessage,PostMessage。

   在Windows SDK中也有两个函数SendMessage,PostMessage。这是有区别的。

   下面均以PostMessage为例来说明。

Windows SDK中的PostMessage有四个参数

BOOL PostMessage(

   HWND hWnd,

   UINT Msg,

   WPARAM wParam,

   LPARAM lParam

);

 

但是CWnd的成员函数PostMessage只有三个参数

BOOL PostMessage(

   UINT message,

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值