问题的提出:
需要点击一个CButton控件然后运行一个线程,将字符串显示在CEdit控件里面;
1.在CTestDlg.h里面定义一个全局结构体,并在CTestDlg类里面包含一个hTmp成员:
struct hS
{
CString Tmp;
CtestDlg *hWnd;
};
class CTestDlg
{//.....
public:
CString chtmp;
struct hS *hTmp;
friend UINT ReadThread(LPVOID pParam);
protected:
CEdit m_Edit;
}
2.在void CtestDlg::OnBnClickedButton1()
函数里面赋值hTmp
hTmp->Tmp = chtmp;
hTmp->hWnd = this;//关键是把this指针传进去。
AfxBeginThread(ReadThread, hTmp);
3.在UINT ReadThread(LPVOID pParam)函数里面将hTmp转换为Tmp2并把ReadThread申明为友元函数
转换:
struct hS *Tmp2;
Tmp2 = (hS*)pParam;
操作:
Tmp2->hWnd->m_Edit.SetWindowText( (LPTSTR)Tmp2->Tmp );
ok了。
注:以上只是我自己尝试的方法,但是网上还有的说可以使用句柄,但是我并没有成功,如果谁成功了希望能告诉我。
阅读(5546) | 评论(1) | 转发(0) |