VC++中,怎样利用多线程和回调函数,从串口调试助手中接收数据,然后在编辑框中显示出来?

2024-12-14 22:57:06
推荐回答(1个)
回答1:

头文件中
static UINT thdWork(LPVOID lParam);

主程序中
运行标志 = TRUE;

m_pThd = AfxBeginThread(thdWork,this);
需要工作线程结束时 运行标志 = FALSE;

工作线程
UINT CMYCLASS::thdWork(LPVOID lParam)
{
CMYCLASS *pThis = (CMYCLASS*)lParam; //要使用成员变量必须明确使用pThis->变量名

while(运行标志)
{
if(SerialPort收到数据)

{
//这里不能调用GDI绘图代码,只能向控件发消息,不过控件变量的SetWindowText之类的方法实际上是向控件的HWND发消息,所以是可以用的.

pThis->m_lst.AddString(收到的字符串);

//或者使用其他方式通知主线程,由主线程显示

}
Sleep(1); //如果接收代码不会阻塞这里必须睡眠一下,不然CPU100%

}

return 0;

}