[问题] MFC的PostMessage与ON_Message问题

楼主: eva527 (天海冰蓝)   2015-12-14 10:17:44
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Visual studio 2013
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
目前正在学习MFC程式
想做一个单纯的Windows讯息的收发程式测试
构想大概是这样:
先定义WM_Test_User内容为(WM_USER+1234)
设计一个发送讯息的程式,只要点击Button,就会执行PostMessage(WM_Test_User);
接着再设计另一个接收讯息的程式,ON_Message(WM_Test_User, OnMsg)
只要收到讯息,就会跳出一个视窗说已收到讯息。
问题是,当我按下Button的时候,结果没有跳出对话视窗,
无法确定到底是没有收到讯息,还是其他部分发生问题?
喂入的资料(Input):
预期的正确结果(Expected Output):
错误结果(Wrong Output):
程式码(Code):(请善用置底文网页, 记得排版)
发送讯息之程式:专案名称为Test_MFC_PostMessageForOnMessage
先在.h档内定义 #define WM_Test_User (WM_USER+1234)
void CTest_MFC_PostMessageForOnMessageDlg::OnBnClickedButton1()
{
// 测试送出讯息
PostMessage(WM_Test_User,0,0);
}
接收讯息之程式:专案名称Test_MFC_OnMessage
先在.h档内定义 #define WM_Test_User (WM_USER+1234)
宣告 afx_msg LRESULT OnMsg(WPARAM wp, LPARAM lp);
BEGIN_MESSAGE_MAP(CTest_MFC_OnMessageDlg, CDialogEx)
...
ON_MESSAGE(WM_Test_User, OnMsg)
...
END_MESSAGE_MAP()
实作内容
LRESULT CTest_MFC_OnMessageDlg::OnMsg(WPARAM wp, LPARAM lp)
{
::AfxMessageBox(_T("Got it"));
return NULL;
}
 
补充说明(Supplement):
想知道自己是否哪里做错了?或者是还漏做了什么
第一次发文,如有错误或者不适当的地方,还请指教m(_ _)m
作者: sosokill (vieux)   2015-12-14 16:33:00
有确实执行postmessage了吗?
作者: jhchou (jhchou)   2015-12-14 16:40:00
看你的说明 你是要用一个程式发讯息 另一个程式接吗?还是在同一个程式中 一个对话盒发 一个对话盒接?
作者: sosokill (vieux)   2015-12-14 16:53:00
喔 楼上点醒我了 那要把hwnd传进去 要不是自己传自己
楼主: eva527 (天海冰蓝)   2015-12-16 09:11:00
我是要用一个程式发讯息 另一个程式接讯息PostMessage一定要加hwnd吗?我在网络上看过别人没加的范例不过后来我也有试过加hwnd进去 可是还是不行
作者: sosokill (vieux)   2015-12-16 11:46:00
A传给B A要有B的hwnd 或是A能直接指定传给B如果你是两个独立运行的程式 你可能要先找到目标B才能传
作者: overhead (overhead)   2015-12-17 22:50:00
要写 ::PostMessage(目标视窗handle,WM_Test_User,0,0);如果是一个程式 送收消息的class不同的情况

Links booklink

Contact Us: admin [ a t ] ucptt.com