MFC 自定义消息(类向对话框类传递自定义消息)

创建的对话框类为 CMFCTEST2Dlg

在 MFCTEST2Dlg.h : 头文件 定义

#define WM_MYMESSAGE (WM_USER + 100)  //step 1

....

// 生成的消息映射函数
    virtual BOOL OnInitDialog();
    afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
    afx_msg void OnPaint();
    afx_msg HCURSOR OnQueryDragIcon();
    afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);//自定义消息
    DECLARE_MESSAGE_MAP()

在 MFCTEST2Dlg.cpp 中

BEGIN_MESSAGE_MAP(CMFCTEST2Dlg, CDialogEx)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDOK, &CMFCTEST2Dlg::OnBnClickedOk)
    ON_MESSAGE(WM_MYMESSAGE,&CMFCTEST2Dlg::OnMyMessage)//自定义消息
    ON_BN_CLICKED(IDC_ADD, &CMFCTEST2Dlg::OnBnClickedAdd)
END_MESSAGE_MAP()

。。。。。。。


 LRESULT  CMFCTEST2Dlg::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
   MessageBox(_T("recv msg success"));
   for(int i=0;i<100;i++)
   {
       Sleep(1800);
   pbar->StepIt();
   }
    //添加自己的消息处理
   // ……
    return 0;   
}

 

在自定义类CpublishPoint 中

在PublishPoint.h 头文件中

#define WM_MYMESSAGE (WM_USER + 100)  //必须与接收消息端一致

在 PublishPoint.cpp 中

void  CPublishPoint::TestMessage(CWnd* pWnd)
 {

     pWnd->SendMessage(WM_MYMESSAGE, 0, 0);

 }

CWnd 为 对话框句柄

对话框中的句柄获取方式:

 CWnd* pWnd = CWnd::FindWindow(NULL,_T("MFCTEST2"));  //后面为对话框caption属性之

将 pWnd 传递给 CpublishPoint 类

 CPublishPoint *cpp=new CPublishPoint();
 cpp->TestMessage(pWnd);

 

 

 

posted on 2014-05-12 11:11  markygis  阅读(512)  评论(0编辑  收藏  举报