MFC自定义消息

点击对话框OK,发送了一条自定义消息给视图,可是视图里对应这条消息的函数根本不执行,这是为什么呢?望高手指点
我的代码是这样的
CMoDlg.h
public:
CMoDlg(CWnd* pParent); // standard constructor
CWnd* m_pParent;//窗口对象
CMoDlg.cpp
#define WM_CLICK_OK3 WM_USER+110//自定义消息,启动view里的赋值
CMoDlg::CMoDlg(CWnd* pParent )
: CDialog(CMoDlg::IDD, pParent)

{ASSERT(pParent);//窗口对象有效
m_pParent=pParent;//获取窗口对象
}

void CMoDlg::OnOK()
{m_pParent->SendMessage(WM_CLICK_OK3,(WPARAM)this);//发送自定义消息
}

视图类里:
Cfish1View.cpp
#define WM_CLICK_OK3 WM_USER+110//自定义消息
ON_MESSAGE(WM_CLICK_OK3,OnGetValue)
LRESULT Cfish1View::OnGetValue(WPARAM wP,LPARAM lP)
{

return 0;
// TODO: 在此添加控件通知处理程序代码
}
Cfish1View.h
public:
afx_msg LRESULT OnGetValue (WPARAM wP,LPARAM lP);

具体改怎么改?大家给指点指点

感谢大家的帮助
CMainFrame *pMain=(CMainFrame *)AfxGetApp()->m_pMainWnd;
Cfish1View *pView=(Cfish1View *)pMain->GetActiveView();
::SendMessageA(pView->m_hWnd,WM_CLICK_OK3,(WPARAM)this,(LPARAM)this);
可以在对大知话框的类中添加一个(CWnd *)成员变量,在构造对话框的对象时可以将主框架类的对象指针赋给它,如Dlg1 dlg(this) ;然后再调用dlg.DoModal() ;最后,在发送消息时不能用CWnd类的成员函数PostMessage,而要用系统全局函数::PostMessage(((CMainFrame *)pWnd)->GetActiveView()->m_hWnd,WM_USERMSG,NULL,NULL) ;这样才能在view类接收到消息。
你原来的方法可能神隐消息路由不到view类游仿厅
自定义消息的步骤为
1.定义消息ID,一般为WM_USER+XX
2.定义消息旁并弊响应函数,一般为 LRESULT XXX(WPARAM,LPARAM)
3.在cpp文件中将消运族息ID与响应函数关联起来
4.发送消息端必须包含消蔽镇息接收端的HWND
检查以上步骤是否正确
首先你的对话框要先找到父窗口的类,CWnd* p = GetParent();
然后 p->SendMessage(WM_USER+..., , , );
如果还不行,那就是哪碧对话框窗口的父窗口类自定义桐缓隐的消息有问题了。如果实局厅现自定义消息,参考http://zhidao.baidu.com/question/166992657.html?si=1
发送的目的窗口应该不正确
MFC自定义消息
← 上一篇: 下一篇: →