MFC创建线程,消息通信修改

1:在定时器中创建一个线程
case TIMER1:
if (m_SpiManage.IsSpiConnect())
{
  m_pThread = AfxBeginThread(WORK_ReadSAWtag, &m_Info);
  //ReadSAWtag();
 }
2:创建线程函数 (放在ReadSAWtag()函数上面)
/创建的线程函数
/创建的线程函数
UINT WORK_ReadSAWtag(LPVOID pParam)
{
 // TODO: 在此添加控件通知处理程序代码
 threadInfo *pInfo = (threadInfo*)pParam;
 CTryStaticDlg *dlg; //将void类型强制转换成dlg类型
 dlg = (CTryStaticDlg *)pdlg;
 dlg->ReadSAWtag();
 ::SendMessage(pInfo->hWnd, WM_ReadSAWtag_MSG, 0, -1);
 return 0;
 
}
3.在CTryStaticDlg.h头文件中自定义消息:#define WM_ReadSAWtag_MSG  WM_USER + 100
4.在CTryStaticDlg.h的类中增加定义
// 实现
protected:
 CWinThread *m_pThread;
 HICON m_hIcon;
 threadInfo m_Info;
5.在CTryStaticDlg.h头文件中添加消息处理函数的声明
LRESULT OnReadSAWtagMsg(WPARAM wParam, LPARAM lParam);
6.在初始化函数中增加定义
m_Info.hWnd = m_hWnd;
7. 在CTryStaticDlg类实现文件CTryStaticDlg.cpp中的消息映射表中加入自定义消息映射:
BEGIN_MESSAGE_MAP(CTryStaticDlg, CDialogEx)
 ON_WM_SYSCOMMAND()
 ON_WM_PAINT()
 ON_WM_QUERYDRAGICON()
 ON_MESSAGE(WM_ReadSAWtag_MSG, OnReadSAWtagMsg)添加
 ON_BN_CLICKED(IDC_BUTTON1, &CTryStaticDlg::OnBnClickedButton1)
 ON_BN_CLICKED(IDC_BUTTON4, &CTryStaticDlg::OnBnClickedButton4)
 ON_BN_CLICKED(IDC_BUTTON5, &CTryStaticDlg::OnBnClickedButton5)
 ON_BN_CLICKED(IDC_BUTTON2, &CTryStaticDlg::OnBnClickedButton2)
 ON_WM_TIMER()
 ON_BN_CLICKED(IDC_BUTTON3, &CTryStaticDlg::OnBnClickedButton_Save)
 ON_BN_CLICKED(IDC_BUTTON6, &CTryStaticDlg::OnBnClickedButton6)
 ON_BN_CLICKED(IDC_BUTTON_ClearAll, &CTryStaticDlg::OnBnClickedButtonClearall)
 ON_BN_CLICKED(IDOK, &CTryStaticDlg::OnBnClickedOk)
END_MESSAGE_MAP()
6.在CTryStaticDlg类实现文件CTryStaticDlg.cpp中定义消息响应
LRESULT CTryStaticDlg::OnReadSAWtagMsg(WPARAM wParam, LPARAM lParam)
{
 if (wParam == 0 && lParam == -1)
 {
  //m_stTip.SetWindowText("完成");
  //GetDlgItem(IDC_BUTTON_CAL)->EnableWindow(TRUE);
 }
 return 0;
}
3.备注
1)先申请个全局void类型指针: void *pdlg;
2)在dlg InitDialog中,将该void指针初始化为this:?pdlg= this;
3)在全局函数中加入以下程序
CTryStaticDlg *dlg; //将void类型强制转换成dlg类型
dlg = CTryStaticDlg *)pdlg; 
1:在定时器中创建一个线程
case TIMER1:
if (m_SpiManage.IsSpiConnect())
{
  m_pThread = AfxBeginThread(WORK_ReadSAWtag, &m_Info);
  //ReadSAWtag();
 }
2:创建线程函数 (放在ReadSAWtag()函数上面)
/创建的线程函数
/创建的线程函数
UINT WORK_ReadSAWtag(LPVOID pParam)
{
 // TODO: 在此添加控件通知处理程序代码
 threadInfo *pInfo = (threadInfo*)pParam;
 CTryStaticDlg *dlg; //将void类型强制转换成dlg类型
 dlg = (CTryStaticDlg *)pdlg;
 dlg->ReadSAWtag();
 ::SendMessage(pInfo->hWnd, WM_ReadSAWtag_MSG, 0, -1);
 return 0;
 
}
3.在CTryStaticDlg.h头文件中自定义消息:#define WM_ReadSAWtag_MSG  WM_USER + 100
4.在CTryStaticDlg.h的类中增加定义
// 实现
protected:
 CWinThread *m_pThread;
 HICON m_hIcon;
 threadInfo m_Info;
5.在CTryStaticDlg.h头文件中添加消息处理函数的声明
LRESULT OnReadSAWtagMsg(WPARAM wParam, LPARAM lParam);
6.在初始化函数中增加定义
m_Info.hWnd = m_hWnd;
7. 在CTryStaticDlg类实现文件CTryStaticDlg.cpp中的消息映射表中加入自定义消息映射:
BEGIN_MESSAGE_MAP(CTryStaticDlg, CDialogEx)
 ON_WM_SYSCOMMAND()
 ON_WM_PAINT()
 ON_WM_QUERYDRAGICON()
 ON_MESSAGE(WM_ReadSAWtag_MSG, OnReadSAWtagMsg)添加
 ON_BN_CLICKED(IDC_BUTTON1, &CTryStaticDlg::OnBnClickedButton1)
 ON_BN_CLICKED(IDC_BUTTON4, &CTryStaticDlg::OnBnClickedButton4)
 ON_BN_CLICKED(IDC_BUTTON5, &CTryStaticDlg::OnBnClickedButton5)
 ON_BN_CLICKED(IDC_BUTTON2, &CTryStaticDlg::OnBnClickedButton2)
 ON_WM_TIMER()
 ON_BN_CLICKED(IDC_BUTTON3, &CTryStaticDlg::OnBnClickedButton_Save)
 ON_BN_CLICKED(IDC_BUTTON6, &CTryStaticDlg::OnBnClickedButton6)
 ON_BN_CLICKED(IDC_BUTTON_ClearAll, &CTryStaticDlg::OnBnClickedButtonClearall)
 ON_BN_CLICKED(IDOK, &CTryStaticDlg::OnBnClickedOk)
END_MESSAGE_MAP()
6.在CTryStaticDlg类实现文件CTryStaticDlg.cpp中定义消息响应
LRESULT CTryStaticDlg::OnReadSAWtagMsg(WPARAM wParam, LPARAM lParam)
{
 if (wParam == 0 && lParam == -1)
 {
  //m_stTip.SetWindowText("完成");
  //GetDlgItem(IDC_BUTTON_CAL)->EnableWindow(TRUE);
 }
 return 0;
}
3.备注
1)先申请个全局void类型指针: void *pdlg;
2)在dlg InitDialog中,将该void指针初始化为this:?pdlg= this;
3)在全局函数中加入以下程序
CTryStaticDlg *dlg; //将void类型强制转换成dlg类型
dlg = CTryStaticDlg *)pdlg; 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值