如何创建线程

自己写的一个MFC应用程序使用另一个软件的API函数,取得这个软件运行时的数据,在交互操作的时候 我的MFC程序界面会失去响应。在看USB驱动资料的时候,看到一句话“为了避免读操作时应用程序界面失去响应,单独创建一个读输入报告的线程。”想到我的程序可能也需要创建一个线程,我不知道如何创建线程,找了一个例子程序看了一下

//指向写报告线程的指针
CWinThread * pWriteReportThread;

UINT ReadReportThread(LPVOID pParam)
{
   CMyUsbHidTestAppDlg *pAppDlg = (CMyUsbHidTestAppDlg*)pParam //
传递参数
}
void CMyUsbHidTestAppDlg::OnShowWindow(BOOL bShow, UINT nStatus)
{
………………

CDialog::OnShowWindow(bShow, nStatus);
//
创建一个读报告的线程(处于挂起状态)
pReadReportThread=AfxBeginThread(ReadReportThread, this,THREAD_PRIORITY_NORMAL, 0,   CREATE_SUSPENDED,   NULL);
//
如果创建成功,则恢复该线程的运行

if(pReadReportThread!=NULL)
{
pReadReportThread->ResumeThread();
}
………………
}

 

线程建好后,在使用UpDateData进行对话框数据交换时,编译报错了。

error C3861: 'UpdateData': identifier not found

 

原因是UpDateDataCWnd类的成员函数,我把UpDateData放在对话框类外面使用了,而且线程中不能使用界面函数

 

引用 13 goodname 的回复:
这个不行

(1)
UpDateData
CWnd类的成员函数

(2)
不能在线程中使用界面函数,最好使用postmessage通知一下

 

既然不能使用UpDateData,那就看别人用什么吧,找到了SetDlgItemText函数,问题解决。

用法记一下。

CString m_sAltitude;

double m_nAltitude;

m_sAltitude = _T("");

m_sAltitude.Format("%lf",m_nAltitude);

SetDlgItemText(IDC_ALTITUDE,m_sAltitude);  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值