DWORD WINAPI CChatDlg::ThreadProc(LPVOID lpParameter)
{
return 0;
}
就是这个函数里面,我想在这个函数里获得文本框的文本,一调用
CString strSend;
GetDlgItemText(IDC_send,strSend);
就出错错误信息为error C2352: 'CWnd::GetDlgItemTextA' : illegal call of non-static member function。而在消息响应函数中调用则完全没有问题
void CChatDlg::OnRecvData(WPARAM wParam,LPARAM lParam)
{   
   CString strSend;
   GetDlgItemText(IDC_send,strSend);}大家可以帮忙解答下吗?是不是在ThreadProc中调用先要调用什么句柄或者指针啊?真是有些迷糊了,该文本框直接在CChatDlg上,应该可以直接调用吧。。

解决方案 »

  1.   

    另外还有一个问题就是: 如何把send框里的文本发送到接受框里去,利用消息postmessage发送?中间有一个难题,利用GetDlgItemText获得send框里的文本的话,那么接收buf为cstring类型,而想要把该接收buf做为参数传递到消息参数中去,又必须为char类型,这该怎么办啊。。转换类型还是其他方法??我现在的理解是GetDlgItemText的接收BUF必须为Cstring类型,消息发送函数postmessage传递的参数必须为char类型?(似乎把参数改为cstring类型的就报错)是不是错了?请指正
      

  2.   

    (*CLASSNAME) GetDlgItemText(IDC_send,strSend);
      

  3.   

    1.因为ThreadProc是类的静态方法
      

  4.   

    窗口句柄已经作为线程参数传进去了。HWND hwnd=((RECVPARAM*)lpParameter)->hwnd;
    问题是没办法让窗口句柄和GetDlgItemText关联起来。到底ThreadProc这个函数里要如何正确调用GetDlgItemText呢?可以帮忙解答下吗?另外GetDlgItemText里的接收buf类型和消息传递参数类型不匹配要如何处理呢,我想把接收buf做为参数传递到消息里去
      

  5.   

    静态成员函数没有this指针,直接调用其类的成员函数就是错误。
      

  6.   

    DWORD WINAPI ThreadProc(LPVOID lpParameter)
    {
    CChatDlg *pDlg = (CChatDlg*)lpParameter;
    pDlg->GetDlgItemText(IDC_send,strSend);
    return 0;
    }
    另外一个问题,接受到的字符串new一块内存送过去,接受方受到后释放
      

  7.   

    接受到的字符串new一块内存送过去,接受方受到后释放
    我的代码如下,结果出错了,好象是说类型转换出错
    send=new char[200];
    ::PostMessage(hwnd,WM_RECVDATA,(WPARAM)send,(LPARAM)tempBuf);错误结果为error C2440: 'type cast' : cannot convert from 'class CString' to 'unsigned int'。请问这个new一块内存和接收后的释放的代码应该怎么写呢?我上面那个new的语句应该是出错了吧?好象只能new同一个类型的对象吧,不能通过NEW来转换类型。。请指教可以吗,详细点的代码
      

  8.   

    简单来说,就是把第二句里的send想办法传到第三句里的参数WPARAM里去。。
    CString send;
    pDlg->GetDlgItemText(IDC_send,send);
    ::PostMessage(hwnd,WM_RECVDATA,(WPARAM)send,(LPARAM)tempBuf);
      

  9.   

    是要传递 对话框句句柄如果传递的是控件句柄, 就GetwindowText(hwndidc, ...)
      

  10.   

    kantonwang2007() 说的对
    DWORD WINAPI ThreadProc(LPVOID lpParameter)
    {
    CChatDlg *pDlg = (CChatDlg*)lpParameter;
    pDlg->GetDlgItemText(IDC_send,strSend);
    return 0;
    }这样可以
    在开线成的时候也可以传递个THIS指针进去
    我现在就写这个那你可以加我QQ把程序发给你188290951
    在AfxBeginThread(ThreadProc,this)就可以了 嘿嘿
      

  11.   

    GetDlgItemText应该不能用char*吧,我试了下
    char *sss;
    sss=new char[200];
    GetDlgItemText(IDC_send,sss);//运行结果报错
    GetDlgItemText(IDC_send,(LPTSTR)sss);//同样报错。如果要在GetDlgItemText调用char型buf,请问要怎么样才能实现啊
      

  12.   

    CString send;
    GetDlgItemText(IDC_send,send);//似乎这里的buf只能是Cstring类型
    ::PostMessage(hwnd,WM_RECVDATA,0,(LPARAM)send);//但是这里的buf又必须是char类型挣扎矛盾中啊,不知道如何解决