MFC在不同的类窗体之间传递消息

接收消息窗体,CMainFrame 
1 首先在头中定义消息:例如

#indefine WM_MYMESSAGE (WM_USER+100)

WM_MYMESSAGE是定义的宏:
  1. 定义消息处理函数。 
    消息处理函数为消息目标类的成员函数。首先应该在.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);
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值