请问模态对话框里面怎么进行消息映射?急急急!!!

dragon2 2009-03-13 01:46:58
如题
我在MainFrame里面执行一个函数打开了一个模态对话框
在模态对话框里面放了一个按钮
然后在这个模态对话框所建立的类里面进行了消息映射
但是就是不执行
不知道为什么
但是我在MainFrame类里面进行消息映射他就可以执行
请问在创建模态对话框的时候还需要做什么处理吗?让模态对话框里面的消息也能够正常响应
谢谢
...全文
86 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
MFC的ON_COMMAND消息映射是通过 框架 来支持的,在对话框里不起作用
Siw 2009-03-13
  • 打赏
  • 举报
回复
纠正一下,你这叫非模态对话框!

因为你的消息传不到它那去。

m_pwndObjUnit 这个窗口的父窗口是哪个?假定是CMainFrame吧,
那么重载 CMainFrame::OnCmdMsg(...)
{
//添加如下代码即可
if(m_pwndObjUnit.GetSafeHwnd() != NULL &&
m_pwndObjUnit.OnCmdMsg(...))
return TRUE;
}
dragon2 2009-03-13
  • 打赏
  • 举报
回复
我是这样创建的
m_pwndObjUnit.Create(IDD_OBJ_UNIT,this);
m_pwndObjUnit.ShowWindow(SW_SHOW);
现在的问题就是子窗口里面的ON_COMMON消息响应不执行
必须把子窗口里面消息到父窗口里面映射才能执行
我不知道父窗口跟子窗口消息映射的时候
是不是子窗口的消息映射一定要到父窗口上写
Tinary3v0 2009-03-13
  • 打赏
  • 举报
回复
应该不会吧 这个好像跟你执行的函数功能有关系吧
另外 如果要传递消息 恐怕你在模态多画框创建的时候 是有this指针 制定一个父窗体 不然消息没有父窗体 就不知道往那里发了 至少不是发给你的应用程序了。

CModalDlg dlg(this);
dlg.Domodal();

//这里加一个父窗体 也可以直接使用CMainFrame* pMainFrame = ( CMainFrame* )AfxGetMainWnd( );
//CMFC_OVView* pView = ( CMFC_OVView* )pMainFrame->GetActiveView( ); 等这些指针
//如果是dlg() 或者dlg(NULL) 它的父窗口就成了桌面了 消息不会发送给你应用程序的主窗体。

还有 尽量使用窗体指针 防止多次创建同一个类型Dialog 但是窗体不固定

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧