为什么不能直接从对话框类往视图类传自定义的消息么??

hz31 2003-09-12 11:06:56
我看的一个东东里面,要求先把对话框的消息,传到主框架里面..再传到视图类里面???为什么不能从对话框类直接发送消息到视图呢?我这样做的时候总是出错...!!!!!!是不是这是要求遵从windows的消息传递机制啊??????
...全文
23 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tryber 2003-09-13
  • 打赏
  • 举报
回复
gzshd(郁闷) ( ) 信誉:105 2003-09-12 23:54:00 得分:0

如下:
#include "MainFrm.h"
#include "MyView.h"
...

CMainFrame *pframe=(CMainFrame *)AfxGetMainWnd();
CMyView *pview=(CMyView *)pframe->GetActiveView();
pview.SendMessage(...);
...
//用完后不要忘了delete
delete pframe;
delete pview;
pframe=NULL;
pview=NULL;

啊,这两句看得我心惊肉跳,
delete pframe;
delete pview;
是你发错了,还是我看错了。


有那么麻烦吗?
//myview.cpp

void CMyView::OnDlgMsg()
{
CxxxDlg dlg(this);
...
}
//xxxdlg.cpp
void CxxxDlg::OnViewMsg()
{
这样就可以直接从对话框中给这个视图发送消息了
::SendMessage(GetParent()->GetSafeHwnd(), ...);
}
gzshd 2003-09-12
  • 打赏
  • 举报
回复
如下:
#include "MainFrm.h"
#include "MyView.h"
...

CMainFrame *pframe=(CMainFrame *)AfxGetMainWnd();
CMyView *pview=(CMyView *)pframe->GetActiveView();
pview.SendMessage(...);
...
//用完后不要忘了delete
delete pframe;
delete pview;
pframe=NULL;
pview=NULL;
flyelf 2003-09-12
  • 打赏
  • 举报
回复
我的意思就是说,可以在你的对话框中声明这么一个变量HWND m_hWndView;
然后在视图中弹出对话框的时候,给对话框的这个变量赋值
CxxxDlg dlg;
dlg.m_hWndView = GetSafeHwnd();// 得到视图的指针
这样就可以直接从对话框中给这个视图发送消息了
::SendMessage(m_hWndView, ...)
hz31 2003-09-12
  • 打赏
  • 举报
回复
谢谢!那你的意思是直接可以在这两个类间传递?可是那个句柄是先包含视图类的引用#include CMyView ;再在头文件中定义一个实例CMyView viw;然后再在对话框类中使用viw.sendmessage()不就可以嘛?
flyelf 2003-09-12
  • 打赏
  • 举报
回复
可能是你没有得到正确的视图类的窗口句柄

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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