在  非模态 对话框中用 多线程 无法用 GetDlgItemText 获取控件中的数据吗 ??
为什么获取的为null啊,同样的code在模态对话框中却可以,有什么解决方法吗

解决方案 »

  1.   

    恩,用的是 AfxGetMainWnd 获取的,google了一下这个函数说是获取主线程的,那么怎样才能获取一个线程中控件的值,在非模态对话框,请指教
      

  2.   

    用 多线程 无法用 GetDlgItemText 获取控件中的数据吗 ??这是因为HWND与CWnd*之间的映射是通过一个线程局部存储(TLS)的MAP来实现的。
      

  3.   

    线程中有个lpParamCString s;
    ((CTESTDlglpParam())->GetDlgItemText(IDC_EDIT1,s);用这个获取怎么会发生 内存不能为read的错误第一次用多线程,大虾请指点,应该怎么改
      

  4.   

    应该怎样改啊,看了看TLS不懂,能说一下思路吗
      

  5.   

    lpParam传的时候用对话框的句柄 HWNDCString s;
    HWND hwndEdit = ::GetDlgItem(hwnd,IDC_EDIT1);
    int nLen = GetWindowTextLength(hwndEdit);
    GetWindowText(hwndEdit, rString.GetBufferSetLength(nLen), nLen+1);
    rString.ReleaseBuffer();
      

  6.   

    感谢这位,想了几天还是没有找到答案,有没有通用的方法,比如如果获取ListCtrl内容怎么处理,再次感谢
      

  7.   

    lpParam传的时候用对话框的句柄 HWND