VC++自定义消息的发送与接收的方法实现.docVIP

  • 0
  • 0
  • 约2.8千字
  • 约 3页
  • 2017-04-24 发布于重庆
  • 举报

VC++自定义消息的发送与接收的方法实现.doc

VC自定义消息的发送与接收的方法实现

消息传递的方法一:使用ON_MESSAGE 使用ON_MESSAGE响应消息,必须配合定义消息#define WM_MY_MESSAGE (WM_USER+100) 对于发送消息者-MyMessageDlg, 在其MyMessageDlg.h中,定义#define WM_MY_MESSAGE (WM_USER+100) 在其MyMessageDlg.cpp中要先添加:#i nclude MainFrm.h 因为使用了CMainFrame*定义对象。 并且要有测试消息的函数: void MyMessageDlg::OnButtonMsg() { ??? // TODO: Add your control notification handler code here ??? CMainFrame* pMF=(CMainFrame*)AfxGetApp()-m_pMainWnd;? //先通过获取当前框架指针 ??? CView * active = pMF-GetActiveView();//才能获取当前视类指针 ??? if(active != NULL)? //获取了当前视类指针才能发送消息 ??? active-PostMessage(WM_MY_MESSAGE,0,0);?? //使用PostMessage发送消息 } 对于消息的接受者-MessageTestView, 在其MessageTestView.h中,也要定义#define WM_MY_MESSAGE (WM_USER+100) 并定义消息映射函数-OnMyMessage() protected: ?//{{AFX_MSG(CMessageTestView) ?afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam); ?//}}AFX_MSG ?DECLARE_MESSAGE_MAP() 在其MessageTestView.cpp中, 先要声明响应消息: BEGIN_MESSAGE_MAP(CMessageTestView, CEditView) ?//{{AFX_MSG_MAP(CMessageTestView) ?ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage) ?//}}AFX_MSG_MAP 再添加消息响应的函数实现: LRESULT CMessageTestView::OnMyMessage(WPARAM wParam, LPARAM lParam) { ?MessageBox(OnMyMessage!); ?return 0; } 消息传递的方法二:使用ON_REGISTERED_MESSAGE 使用ON_REGISTERED_MESSAGE注册消息,必须配合 static UINT WM_MY_MESSAGE=RegisterWindowMessage(Message); 对于消息的发送者-MyMessageDlg, 在其MyMessageDlg.h中,只要 定义static UINT WM_MY_MESSAGE=RegisterWindowMessage(Message); 就可以了。 在其MyMessageDlg.cpp中要先添加:#i nclude MainFrm.h 因为使用了CMainFrame*定义对象。 并且要有测试消息的函数: void MyMessageDlg::OnButtonMsg() { ??? // TODO: Add your control notification handler code here ??? CMainFrame* pMF=(CMainFrame*)AfxGetApp()-m_pMainWnd;? //先通过获取当前框架指针 ??? CView * active = pMF-GetActiveView();//才能获取当前视类指针 ??? if(active != NULL)? //获取了当前视类指针才能发送消息 ??? active-PostMessage(WM_MY_MESSAGE,0,0);?? //使用PostMessage发送消息 } 对于消息的接收者-MessageTestView, 在其MessageTestView.h中不要定义 static UINT WM_MY_MESSAGE=RegisterWindowMessage(Message); 应该把这个定义放到MessageTestView.cpp中,要不会出现: redefinition 在其MessageTestView.h中只要定义消息映射函数 protected: ?//{{AFX_MSG(CMessageTestView) ?afx_m

文档评论(0)

1亿VIP精品文档

相关文档