我在基于Frame类上创建了一个窗口,在窗口上添加了一个EDIT控件(IDC_EDIT1),基于view类建立了一个副线程(记为线程1),
通过这个线程读取Edit中的文本,并把读取到的字符发送一个自定义消息(sendmessage),在view创建了一个对应的消息响应函数,这个消息响应函数把接收到的消息再显示到EDIT中,
问题1:这是基于Frame类创建的窗口,在view类中创建的线程怎么读取EDIT中的文本,我用GetDlgItemText(IDC_EDIT1,STR1)不行,那个EDIT的ID无法获得。
问题2:同样的,那个view上的消息响应函数怎么把接收到的消息显示到EDIT中,
LRESULT CtestView::OnSend(WPARAM wParam,LPARAM lParam)//基于view类
{
CClientDC  dcsend(this);
CString str2=(char*)lParam;
CString str3("send:");
str2=str2+str3;
SetDlgItemText(IDC_EDIT1,str2);//这里出错
return TRUE;
}
新手,越详细越好,3Q

解决方案 »

  1.   

    CWnd::GetWindowTextint GetWindowText( LPTSTR lpszStringBuf, int nMaxCount ) const;
    void GetWindowText( CString& rString ) const;返回值:
    指定了要拷贝的字符串的长度,以字节为单位,不包括结尾的空字符。如果CWnd没有标题或标题为空,则为0。参数: lpszStringBuf 指向要接收窗口标题的复制字符串的缓冲区。  
    nMaxCount 指定了要拷贝的缓冲区的最大字符数目。如果字符串比nMaxCount指定的数目还要长,则被截断。  
    rString 用于接收窗口标题的复制字符串的CString对象。  说明:
    这个函数将CWnd的标题(如果有)拷贝到lpszStringBuf指向的缓冲区或者目的字符串rString。如果CWnd对象是一个控件,则GetWindowText成员函数将拷贝控件内的文本(而不是控件的标题)。这个成员函数会向CWnd对象发送一个WM_GETTEXT消息。
    CWnd::SetWindowTextvoid SetWindowText( LPCTSTR lpszString );参数: lpszString 指向一个CString对象或以null结尾的字符串,将被用作新的标题或控件文本。  说明:
    这个函数将窗口的标题设为指定的文本。如果窗口为一个控件,则将设置控件内的文本。
    这个函数使一条WM_SETTEXT消息被发送到这个窗口。
      

  2.   

    GetDlgItemText调用这个函数以获得与对话框中的控件相关的标题或文本
    SetDlgItemText设置窗口或对话框拥有的标题或是控件文本。
      

  3.   

       你edit控件怎么弄的呢?窗口类的话,你怎么用setDlgitemText呢?这是基于对话框类的。
      你用SETWINDOWTEXT试试。