主窗口发出自定义游戏窗口大小消息成功后,子窗口并没有收到信息,这是为什么

MFC tabctrl控件子窗口怎么向父窗口发自定义消息?用sendmessage()发了,可是父窗口中收不到,不响应_百度知道主窗口发出自定义消息成功后,子窗口并没有收到信息,这是为什么呢?
情况是这样的,我把自定义消息放在了winuser.h中,
在主窗口函数中
void&CTabControlDlg::OnBnClickedButtonChinese()
&UpdateUI(m_hWnd);
void&CTabControlDlg::UpdateUI(HWND&hParentWnd)
&&&&//查找第一个子窗口
&&&&HWND&hWnd=::GetWindow(hParentWnd,GW_CHILD);
&&&&while(hWnd)
&&&&&&&&//给子窗口发送自定义消息
&&&&&&&&::PostMessage(hWnd,MY_UPDATEUI,NULL,NULL);
&&&&&&&&//递归
&&&&&&&&UpdateUI(hWnd);
&&&&&&&&//查找下一个子窗口
&&&&&&&&hWnd=::GetWindow(hWnd,GW_HWNDNEXT);
在子窗口中如下
//CConfigDlg中的消息映射
&BEGIN_MESSAGE_MAP(CConfigDlg,&CDialog)
&&&&ON_MESSAGE(MY_UPDATEUI,&OnUpdateUI)
END_MESSAGE_MAP()
LRESULT&CConfigDlg::OnUpdateUI(WPARAM&wParam,LPARAM&lParam)&
&&&&AfxMessage(_T(&CConfigDlg::OnUpdateUI&));
&&&&return&&&0;&
这个子窗口是通过在主窗口上右击出来一个选项,选择第一个以后出来的界面,为什么他没哟收到主界面的消息呢?希望有牛人指点啊
回复讨论(解决方案)
我把自定义消息放在了winuser.h中
别在库文件里修改
发送消息没响应多半是没找对窗口,你确定那个窗口是个子窗口而不是popup窗口?
1.&你要确定是否跨进程了,&跨进程的自定义消息,&需要注册.
2.&如要未跨进行,&你确定你的了窗口句柄正确了吗,
&//给子窗口发送自定义消息
&&&&&&&&::PostMessage(hWnd,MY_UPDATEUI,NULL,NULL);
之前,&看是是否是你想要的子窗口.
还有,&提醒一句,&winuser.h是系统文件,&最好不要随便去修改它.&你自定义的消息,&放到自己&的工程中的文件中,&不应该去修改系统文件.
1.&你要确定是否跨进程了,&跨进程的自定义消息,&需要注册.
2.&如要未跨进行,&你确定你的了窗口句柄正确了吗,
&//给子窗口发送自定义消息
&&&&&&&&::PostMessage(hWnd,MY_UPDATEUI,NULL,NULL);
之前,&看是是否是你想要的子窗口.
还有,&提醒一句,&winuser.h是系统文件,&最好不要随便去修改它.&你自定义的消息,&放到自己&的工程中的文件中,&不应该去修改系统文件.
哦,那我试试啊,先谢过了
我把自定义消息放在了winuser.h中
别在库文件里修改
发送消息没响应多半是没找对窗口,你确定那个窗口是个子窗口而不是popup窗口?
那如果是popup该怎么让他收到消息呢?
如果是同一个进程可以直接保存这个popup窗口的句柄
如果是同一个进程可以直接保存这个popup窗口的句柄
能不能写段代码让我看看,就比如我给出的那段代码中,CConfigDlg是需要弹出来的窗口,他怎么收到消息呢,在一个线程内和不在一个线程内,您看能不能都给举个例子啊
发消息/响应消息对于任何窗口都是一样的,我在1楼说的意思是如果是个popup窗口,GetWindow(hParentWnd,GW_CHILD);这样枚举是枚举不到的。如果是在一个进程内就是说这个popup是你自己创建的,你自己知道这个窗口句柄,那在创建的时候就保存起来。代码就免了吧没什么好写的
发消息/响应消息对于任何窗口都是一样的,我在1楼说的意思是如果是个popup窗口,GetWindow(hParentWnd,GW_CHILD);这样枚举是枚举不到的。如果是在一个进程内就是说这个popup是你自己创建的,你自己知道这个窗口句柄,那在创建的时候就保存起来。代码就免了吧没什么好写的
DoModal出来的窗口,&你是没有机会去保存其窗口句柄的.&因为其句柄只有在DoModal的时候才创建出来的.
如果窗口也是你自定义的,&那么你可以以窗口名来搜索窗口,&然后向其发送消息.
FindWindow函数&,具体说明看MSDN.
发消息/响应消息对于任何窗口都是一样的,我在1楼说的意思是如果是个popup窗口,GetWindow(hParentWnd,GW_CHILD);这样枚举是枚举不到的。如果是在一个进程内就是说这个popup是你自己创建的,你自己知道这个窗口句柄,那在创建的时候就保存起来。代码就免了吧没什么好写的
DoModal出来的窗口,&你是没有机会去保存其窗口句柄的.&因为其句柄只有在DoModal的时候才创建出来的.
如果窗口也是你自定义的,&那么你可以以窗口名来搜索窗口,&然后向其发送消息.
FindWindow函数&,具体说明看MSDN.
DoModal出来的窗口外部不能直接保存,可以在这个窗口本身去保存,比如在窗口的OninitDialog里把自身的窗口句柄发消息给主对话框,甚至用个全局变量都可以。FindWindow在同一进程内还是不太好,也没这个必要
发消息/响应消息对于任何窗口都是一样的,我在1楼说的意思是如果是个popup窗口,GetWindow(hParentWnd,GW_CHILD);这样枚举是枚举不到的。如果是在一个进程内就是说这个popup是你自己创建的,你自己知道这个窗口句柄,那在创建的时候就保存起来。代码就免了吧没什么好写的
DoModal出来的窗口,&你是没有机会去保存其窗口句柄的.&因为其句柄只有在DoModal的时候才创建出来的.
如果窗口也是你自定义的,&那么你可以以窗口名来搜索窗口,&然后向其发送消息.
FindWindow函数&,具体说明看MSDN.
DoModal出来的窗口外部不能直接保存,可以在这个窗口本身去保存,比如在窗口的OninitDialog里把自身的窗口句柄发消息给主对话框,甚至用个全局变量都可以。FindWindow在同一进程内还是不太好,也没这个必要
我用了各种函数啊,可是主函数上只要一点击控件,程序就中断啊,就是在popup类型的窗口处保存自己的句柄,这是为什么呢【图文】第15章消息和命令_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
第15章消息和命令
上传于||文档简介
&&第​二​部​分​W​i​d​o​w​s​应​用​程​序​开​发
大小:3.85MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢主窗口发出自定义消息成功后,子窗口并没有收到信息,这是为什么呢?
[问题点数:30分,结帖人kjy]
主窗口发出自定义消息成功后,子窗口并没有收到信息,这是为什么呢?
[问题点数:30分,结帖人kjy]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
本帖子已过去太久远了,不再提供回复功能。MFC中各个不同窗口之间的消息传递MFC中各个不同窗口之间的消息传递这里详细说明:现在有一个自-知识宝库
你可能对下面的信息感兴趣

我要回帖

更多关于 qq聊天窗口右侧自定义 的文章

 

随机推荐