vc 自定义消息实现

    xiaoxiao2021-03-30  34

    本案例是根据两个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()
    转载请注明原文地址: https://ju.6miu.com/read-665033.html

    最新回复(0)