本程序基于前期我的博客文章《MFC用信号灯模拟工控机数字量输入信号实时采集实例(源码下载》
1、在主界面添加一个启动线程按钮,一个终止线程按钮。
2、在TheradDlg.h中相关代码
cpp
class CTheradDlg : public CDialog
{
// Construction
public:
...
CTheradDlg(CWnd* pParent = NULL); // standard constructor
CWinThread* pThread;
bool isThreadBegin ; //线程退出/执行控制
void My_Func();
static UINT My_TheradFunc(LPVOID lparam);
...
}
3、在TheradDlg.cpp中相关代码
cpp
void CTheradDlg::OnButton1()
{
isThreadBegin = true; //运行线程执行
pThread = AfxBeginThread(My_TheradFunc,(LPVOID)this);
}
void CTheradDlg::OnButton2()
{
isThreadBegin = false; //停止线程执行
}
UINT CTheradDlg::My_TheradFunc(LPVOID lparam)//将窗口指针赋给无类型指针
{
CTheradDlg *dlg = (CTheradDlg*)lparam; //可以调用CTheradtDlg定义的类成员函数
while (dlg-> isThreadBegin)
{
dlg->My_Func(); //线程要执行的函数(调用CTheradtDlg定义的类成员函数)
}
return TRUE;
}
运行程序