MFC消息机制初级心得

在Windows编程中,与以往的面向过程的DOS程序中最大的不同是,Window采用的是消息驱动机制,即程序中的事件都是由消息来驱动的。

消息机制的实现如:

在本例中我们调用线程完成http发送任务,等待线程任务结束,发送消息给主线程,等待对话框响应显示任务完成信息字样。

1,首先在global.h文件中定义宏 WM_UPDATE_MSG 用来表示数据更新

//File  global.h

#define WM_UPDATE_MSG WM_USER+5

2,在对话框类头文件中添加用来消息响应成员函数

LRESULT OnUpdateState(WPARAM wParam, LPARAM lParam);

并在cpp文件中实现消息响应函数

LRESULT CAlterParamDlg::OnUpdateState(WPARAM wParam, LPARAM lParam)
{
SetState((int)wParam);
return 0;
}

3,在对话框类cpp文件中添加消息映射如红色字体,表示对于消息WM_UPDATE_MSGOnUpdateState()函数响应

//FILE dialog.cpp

BEGIN_MESSAGE_MAP(CAlterParamDlg, CDialog)   //消息--动作 映射表
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP                
ON_BN_CLICKED(IDOK, OnBnClickedAlter)
ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)
ON_MESSAGE(WM_UPDATE_MSG, OnUpdateState)     //消息绑定  前者发生调用后者响应
ON_WM_DESTROY()
END_MESSAGE_MAP()

4,在线程执行体结束位置调用消息发送函数发送消息

AfxGetApp()->GetMainWnd()->GetSafeHwnd()用于获取主窗口句柄

::SendMessage(AfxGetApp()->GetMainWnd()->GetSafeHwnd(), WM_UPDATE_MSG, (WPARAM)2, NULL);

翻译为:向句柄为AfxGetApp()->GetMainWnd()->GetSafeHwnd()的窗口发送WM_UPDATE_MSG消息,参数为WPARAM)2, NULL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值