MFC在不同的类窗体之间传递消息
2017-10-24 15:45
411 查看
接收消息窗体,CMainFrame
1 首先在头中定义消息:例如
定义消息处理函数。
消息处理函数为消息目标类的成员函数。首先应该在.h 文件中声明。这里以主窗口类为例,主窗口类名 CMainFrame,则首先在CMainFrame.h声明消息处理函数。
public:
afx_msg LRESULT OnCurTaskChanged(WPARAM wParam, LPARAM lParam);
3.在CMainFrame.cpp中实现消息处理函数
4.在CMainFrame.cpp中映射消息ID和消息处理函数
5、在CMainFrame中创建非模态对话框,通过按钮Click::OnDialogtest
在对话框Cam_TestDlg中发送消息
1 首先在头中定义消息:例如
#indefine WM_MYMESSAGE (WM_USER+100) WM_MYMESSAGE是定义的宏:
定义消息处理函数。
消息处理函数为消息目标类的成员函数。首先应该在.h 文件中声明。这里以主窗口类为例,主窗口类名 CMainFrame,则首先在CMainFrame.h声明消息处理函数。
public:
afx_msg LRESULT OnCurTaskChanged(WPARAM wParam, LPARAM lParam);
3.在CMainFrame.cpp中实现消息处理函数
LPESULT CMainDialog::OnCurTaskChanged(WPARAM wParam, LPARAM lParam) { // TODO: 处理用户自定义消息 m_bIsOpen = false; return 0; }
4.在CMainFrame.cpp中映射消息ID和消息处理函数
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd) //{{AFX_MSG_MAP(CMainFrame) ON_WM_CREATE() ON_WM_TIMER() ON_MESSAGE(WM_MY_MESSAGE, OnCurTaskChanged) //}}AFX_MSG_MAP END_MESSAGE_MAP()
5、在CMainFrame中创建非模态对话框,通过按钮Click::OnDialogtest
void CMainFrame::OnDialogtest() { m_bIsOpen = false; Cam_TestDlg *dlg = new Cam_TestDlg(); if (!m_bIsOpen) { dlg->Create(IDD_DIALOG_TEST, GetDesktopWindow()); dlg->ShowWindow(SW_SHOW); m_bIsOpen = !m_bIsOpen; m_bIsOpen = true; } //TODO: Add your command handler code here }
在对话框Cam_TestDlg中发送消息
CMainFrame *pFrame; pFrame = (CMainFrame*)AfxGetMainWnd(); PostMessageW(pFrame->m_hWnd, WM_MY_MESSAGE, NULL , NULL);
相关文章推荐
- MFC 线程的消息传递问题一---线程和窗体之间
- C#窗体之间传递消息和事件
- MFC对话框之间自定义消息传递
- MFC不同窗口之间传递数据
- Android消息机制之实现两个不同线程之间相互传递数据相互调用
- MFC窗口之间的消息传递
- MFC用PostMessage在窗体间传递消息
- 一种在不同窗体之间进行消息广播的方法
- 利用RegisterWindowMessage在不同程序窗体间传递消息
- 如何在MFC对话框之间自定义消息传递
- MFC视频教学第一课,做一个简单的界面,理解应用程序和操作系统之间的消息传递机制
- 利用RegisterWindowMessage在不同程序窗体间传递消息
- MFC不同对话框之间的数据传递
- 利用RegisterWindowMessage在不同程序窗体间传递消息
- 如何在MFC对话框之间自定义消息传递
- 不同视图类之间的命令消息传递
- C#中不同窗体之间的数据传递
- MFC中对话框之间消息传递
- java线程间通信[实现不同线程之间的消息传递(通信),生产者和消费者模型]
- MFC 线程与窗体进行消息传递的时候出现的无效线程问题