您的位置:首页 > 其它

进程间通信简单实现之SendMessage/PostMessage

2015-04-18 20:21 417 查看
接收消息方:

#define WM_MYMESSAGE WM_USER + 100 //不用括号
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);
BEGIN_MESSAGE_MAP(CMyWnd2, CWnd)
ON_MESSAGE(WM_MYMESSAGE, OnMyMessage)
END_MESSAGE_MAP()
LRESULT CMyWnd2::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
// Handle message here.
return 0;
}

发送消息方:

int main()
{
HWND hwnd = FindWindow(NULL,"Name");
PostMessage(hwnd,WM_USER +100,NULL,NULL);  //SendMessage
return 0;
}

备注:

1、afx_msg 其实没有任何作用,去掉编译也是可以通过的,加上的好处就是让代码更具有可读性(别人就知道了这个函数是响应消息的)

2、PostMessage与SendMessage的区别是:

PostMessage是在本进程的时间片内,发送消息并直接执行远程进程的响应函

SendMessage是将消息发送给远程进程,待轮到远程进程的时间片,远程进程自己执行取消息,执行消息响应函数

3、用户自定义消息必须声明为上述形式,声明成 afx_msg void  函数名() 是不对的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息