1:在定时器中创建一个线程
case TIMER1:
if (m_SpiManage.IsSpiConnect())
{
AfxBeginThread(WORK_ReadSAWtag, NULL);
//ReadSAWtag();
}
2:创建线程函数 (放在ReadSAWtag()函数上面)
/////创建的线程函数
/////创建的线程函数
UINT WORK_ReadSAWtag(LPVOID pParam)
{
// TODO: 在此添加控件通知处理程序代码
threadInfo *pInfo = (threadInfo*)pParam;
CTryStaticDlg *dlg; //将void类型强制转换成dlg类型
dlg = (CTryStaticDlg *)pdlg;
dlg->ReadSAWtag();
case TIMER1:
if (m_SpiManage.IsSpiConnect())
{
AfxBeginThread(WORK_ReadSAWtag, NULL);
//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头文件中添加消息处理函数的声明
LRESULT OnReadSAWtagMsg(WPARAM wParam, LPARAM lParam);
5. 在CTryStaticDlg类实现文件CTryStaticDlg.cpp中的消息映射表中加入自定义消息映射:
BEGIN_MESSAGE_MAP(CTryStaticDlg, CDialogEx)
ON_WM_SYSCOMMAND()
&
return 0;
}
3.在CTryStaticDlg.h头文件中自定义消息:#define WM_ReadSAWtag_MSG WM_USER + 100
4.在CTryStaticDlg.h头文件中添加消息处理函数的声明
LRESULT OnReadSAWtagMsg(WPARAM wParam, LPARAM lParam);
5. 在CTryStaticDlg类实现文件CTryStaticDlg.cpp中的消息映射表中加入自定义消息映射:
BEGIN_MESSAGE_MAP(CTryStaticDlg, CDialogEx)
ON_WM_SYSCOMMAND()
&

本文介绍了如何在MFC应用中使用工作线程并进行消息传递。首先,在定时器事件中创建线程,然后定义线程函数WORK_ReadSAWtag,该函数调用特定成员函数并发送自定义消息WM_ReadSAWtag_MSG到主线程。在头文件中声明自定义消息及处理函数OnReadSAWtagMsg,并在消息映射表中添加对应映射。最后,处理接收到的消息以更新UI状态。在实现过程中需要注意指针的正确使用以及线程安全问题。
6322

被折叠的 条评论
为什么被折叠?



