我在一个线程函数中想要得到一个文本框的值,用GetDlgItemText,结果出错,怎么解决呢??要怎么才能把这个文本框作为指针变量传递给线程函数呢??

解决方案 »

  1.   

    怎么会出错呢?难道你是用的CWnd?
      

  2.   

    MFC 指针不能跨线程使用, 这是TLS的原因
    只能使用对应的HANDLE
      

  3.   

    把对话框的hwnd,和文本框的id 作为参数传入线程,在线程内调用::GetDlgItemText(hwnd,id,textout);
      

  4.   

    可是要怎么把对话框的hwnd,和文本框的id 作为参数传入线程呢??线程函数就只有一个参数,用结构体的话,要这么传呢??
      

  5.   

    new 一个结构体出来, 把指针传给该线程做参数, 线程退出的时候再delete掉
      

  6.   

    昏,不合理的设计,偶合太厉害了。你的线程看样子是个工作者线程。你关心的只是计算参数。而不是文本框,文本框是参数的来源。或许一会你可能吧参数来源又弄到一个combox里边。是不是又要改动线程把combox传进去呢?如果一会又要用其它的控件,又继续改线程?正确的做法是通过某个接口(类)方法来取得你要的参数,以及把执行结果分发出去。
    也就是说执行计算的工作者线程关心的是参数的输入,计算,参数的输出。而不是编辑框什么的这样那样的控件。
      

  7.   

    可以传指针,我就传了一个文档类的this指针进去,然后在线程函数里面用CXXDoc *Doc;然后让Doc = (CXXDoc *)lpParam;就可以完全使用了.