求助:关于MFC不同窗体之间发送自定义消息

yangjiaoshai 2010-07-12 01:07:06
我用对话框向导建了一个新项目TEST,其他的是默认的。在自动生成的窗体里面有一个按钮,用来发送消息
::sendmessage(test1.m_hWnd,WM_TEST,0,0);//test1是我自建的一个窗体,

test1.h里面
afx_msg LRESULT OnTest(WPARAM wparam,LPARAM lparam); //声明消息处理函数

test1.cpp里面
BEGIN_MESSAGE_MAP(test1,cdialog)
ON_MESSAGE(WM_TEST,OnTest)
END_MESSAGE_MAP

LRESULT test1::OnTest(WPARAM wparam,LPARAM lparam)
{
return 0;
}
在stdafx.h里面定义#define WM_TEST WM_USER+10

运行之后,在对话框里面点击按钮发送消息,在OnTest函数里面打断点,发现没有响应,请问各位大侠,我这里面缺少什么,有哪里错了,发送自定义消息到底是什么步骤
...全文
245 点赞 收藏 15
写回复
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Re2320 2010-08-24
[Quote=引用 14 楼 yangjiaoshai 的回复:]
谢谢各位,问题已经解决,是需要把另外一个窗口激活
[/Quote]

我试了下,确实发现是没有激活test1窗体的问题。我先在OnTest()响应函数里面添加了个afxmessagebox(“I see you”)作为提示;然后把窗体test1显示在屏幕上,最后点击默认窗体里面的按钮,结果弹出提示,这说明实现了楼主要的功能了。
回复
MFC_ipsu 2010-07-13
你应该这样做,首先应该在Test里面定义#define WM_TEST (WM_USER+100)
然后可以利用FindWindow这个函数去查找你那个TEST1窗口。
HWND m_hWnd = FindWindow(NULL,TEXT("窗口的名字"));
SendMessage(m_hWnd,WM_TEST,0,0);最后就是在TEST1里面去处理这个消息了。LZ试试。
回复
totti1006 2010-07-13
可能就是test1.m_hWnd的问题
回复
xingpacer 2010-07-13
估计是窗口句柄m_hWnd的问题~
回复
yangjiaoshai 2010-07-13
谢谢各位,问题已经解决,是需要把另外一个窗口激活
回复
Eleven 2010-07-13
[Quote=引用 9 楼 yangjiaoshai 的回复:]
引用 2 楼 sunyouhao 的回复:
你这个WM_TEST 是怎么定义的,它的值一定要在规定的范围内。WM_USER以后

我从加10到加到100以上都没用的,准备重载run函数,不知道行不行,
[/Quote]
你要先确定一下你的PostMessage的HWND参数是否有效??
回复
yangjiaoshai 2010-07-12
[Quote=引用 2 楼 sunyouhao 的回复:]
你这个WM_TEST 是怎么定义的,它的值一定要在规定的范围内。WM_USER以后
[/Quote]
我从加10到加到100以上都没用的,准备重载run函数,不知道行不行,
回复
yangjiaoshai 2010-07-12
ASSERT(::IsWindow(test1.m_hWnd));//我明天去试试这句,我输入test1.之后就自动弹出含m_hWnd的选项出来了,所以我一直没有怀疑这个句柄无效,
回复
学习中
回复
zyq5945 2010-07-12
ASSERT(::IsWindow(test1.m_hWnd)); // 这里出错的话窗口句柄无效.
::sendmessage(test1.m_hWnd,WM_TEST,0,0);//test1是我自建的一个窗体,

帮你转到基础版了.
回复
wltg2001 2010-07-12
::sendmessage(test1.m_hWnd,WM_TEST,0,0);//test1是我自建的一个窗体
==========
看看test1.m_hWnd是不是有效的
回复
sunyouhao 2010-07-12
afx_msg LRESULT OnTest(WPARAM wparam,LPARAM lparam); //声明消息处理函数是否加在下面代码的里面
// {{AFX_MSG
//}}AFX_MSG

你在你的响应函数里加上 MessageBox 弹出消息试试。
回复
fishion 2010-07-12
用FindWindow来查找窗口test1吧
回复
sunyouhao 2010-07-12
你这个WM_TEST 是怎么定义的,它的值一定要在规定的范围内。WM_USER以后
回复
Eleven 2010-07-12
你的test1.m_hWnd窗口句柄是否有效???
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告