vc 自定义消息实现

来源:互联网 发布:mac压缩pdf文件大小 编辑:程序博客网 时间:2024/05/17 05:09

本案例是根据两个dialog 相互通信总结而来,在两个dialog都设置好后,分为四步实现消息传递:
项目名称为:MFCmiltiWin
主dialog:CMFCmiltiWinDlg
从dialog:CdialogSub
1:定义消息ID
在项目的头文件中:MFCmiltiWin.h

            //宏定义两个消息ID---区分用户自定义消息和系统消息---------------------------------            #define WM_MAIN_MSG WM_USER+0x00001            #define WM_SUB_MSG WM_USER+0x00002            //宏定义两个消息ID------------------------------------

2:定义消息处理函数,为了能够将相互通信还需定义从类指针:dlg
CMFCmiltiWinDlg.h

protected:    //定义消息处理函数-------    afx_msg LRESULT OnMainMsg(WPARAM wParam, LPARAM lParam);private:    CdialogSub* dlg;

CdialogSub.h

protected:    //定义消息处理函数-------    LRESULT OnSubMsg(WPARAM wParam, LPARAM lParam);

3:实现消息处理函数
CMFCmiltiWinDlg.cpp

afx_msg LRESULT CMFCmiltiWinDlg::OnMainMsg(WPARAM wParam, LPARAM lParam){    CString* strMsg = (CString*)wParam;    SetDlgItemText(IDC_EDITup, *strMsg);    return 0;}

CdialogSub.cpp

afx_msg LRESULT CdialogSub::OnSubMsg(WPARAM wParam, LPARAM lParam){    // 将 wParam 强制转换为 CString 类型      CString* strMsg = (CString*)wParam;    // 设置对话框中编辑框的文本      SetDlgItemText(IDC_editSub, *strMsg);    return 0;}

4:建立: 消息<—–>消息函数的映射
在:BEGIN_MESSAGE_MAP END_MESSAGE_MAP() 中

CMFCmiltiWinDlg.cpp

    BEGIN_MESSAGE_MAP(CdialogSub, CDialogEx)    //建立  消息,消息处理函数  映射表_____    ON_MESSAGE(WM_MAIN_MSG, &CMFCmiltiWinDlg::OnMainMsg)   //建立消息映射表_____    //建立消息映射表_____    END_MESSAGE_MAP()

CdialogSub.cpp

BEGIN_MESSAGE_MAP(CdialogSub, CDialogEx)    //建立消息映射表_____    ON_MESSAGE(WM_SUB_MSG, CdialogSub::OnSubMsg)    //建立消息映射表_____    //建立消息映射表_____END_MESSAGE_MAP()
0 0
原创粉丝点击