Chinaunix首页 | 论坛 | 博客
  • 博客访问: 402121
  • 博文数量: 95
  • 博客积分: 5001
  • 博客等级: 大校
  • 技术积分: 1030
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-13 11:43
文章分类

全部博文(95)

文章存档

2007年(95)

我的朋友

分类: C/C++

2007-08-03 22:28:25

问题的提出:
    需要点击一个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了。


注:以上只是我自己尝试的方法,但是网上还有的说可以使用句柄,但是我并没有成功,如果谁成功了希望能告诉我。
阅读(5496) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~