PostMessage SendMessage 消息投递函数的区别

往往我们在写代码时涉及到多线程就不得不使用消息函数 那今天我们就来谈谈PostMessage和SendMessage函数的区别
PostMessage 消息投递到队列窗口,只管投递,不需要函数返回,就是不管消息有没有投递成功,立即执行往后的代码,相当于不堵塞 看如下代码 当调用PostMessage函数时,即使函数没有返回,立即往下执行判断pRcvData是否为NULL
if (m_WndRealDlg != NULL)
{
::PostMessage(m_WndRealDlg, WM_DLG_RECEIVE_REAL, (WPARAM)(pRcvData->m_Data), (LPARAM)0);
}
if (pRcvData != NULL)
{
delete pRcvData;
pRcvData = NULL;
}

SendMessage 消息投递到队列窗口,要等到当前函数返回之后,才往下执行,相当于同步,好比快递员送信一样,要送到当事人之后,当事人签完字之后才返回。
而SendMessage函数则有点区别 要等到SendMessage函数返回之后,才往下执行判断pRcvData是否为NULL
if (m_WndRealDlg != NULL)
{
::SendMessage(m_WndRealDlg, WM_DLG_RECEIVE_REAL, (WPARAM)(pRcvData->m_Data), (LPARAM)0);
}
if (pRcvData != NULL)
{
delete pRcvData;
pRcvData = NULL;
}

所以在效率上SendMessage不如PostMessage,但是当消息重要时建议使用SendMessage函数,确保消息不会丢失,而使用PostMessage会存在丢失信息的情况发生

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值