我用的基于对话框的应用程序:在CEdit控件的ON_EN_CHANGE响应消息函数中: void CNetDlg::OnChangeEdit2() 
{
              //很多代码省略,只写主要的
CString in;
GetDlgItem(IDC_EDIT2)->GetWindowText(in);//获得用户输入的文字 if(in.GetAt(in.GetLength()-1)=='/n')
            //若用户按下回车键,则在IDC_EDIT1控件中显示输入的文本
{
GetDlgItem(IDC_EDIT1)->SetWindowText(in);
GetDlgItem(IDC_EDIT2)->SetWindowText("");
}
}
   为什么我测试的时候,按下回车键不管用,也就是说:if(in.GetAt(in.GetLength()-1)=='/n')
这句话没有被通过?是什么原因??

解决方案 »

  1.   

    而且,我把if(in.GetAt(in.GetLength()-1)=='/n')换成:if(in.GetAt(in.GetLength()-1)=='a')
    程序就可以运行了,不管我输入什么字符,只要我一打a,输入框的问题就显示到IDC_EDIT2 上了。
      

  2.   

    设置 Want return 没?
      

  3.   

    这是我参照的示例程序部分代码:
    void CExample1Dlg::OnInputText()
    CString in;
    GetDlgItem(IDC_INPUTTEXT)->GetWindowText(in);
    //输入框中只有回车键被按下,所以不发送回车键字符
    if(in.GetLength()<1)
    {
    return;
    }
    if(in.GetAt(in.GetLength()-1)=='\n')
    {
    //in.TrimRight(" ")用来消去无用的空格键字符
    in.TrimRight(" ");
    //将输入框中的字符清空,表示字符已经被发送
    GetDlgItem(IDC_INPUTTEXT)->SetWindowText("");
    if(in.GetLength()>2)
    {
    m_sShowText+=in;
    //将输入的话显示到显示窗口中
    GetDlgItem(IDC_SHOWTEXT)->SetWindowText(m_sShowText);
    CEdit * output=(CEdit *)GetDlgItem(IDC_SHOWTEXT);
    //随时跟踪滚动条的位置
    output->LineScroll(output->GetLineCount()); //服务器端
    if(!m_bClient)
    {
    int length=m_connectionList.GetCount();
    SOCKET  socket;
    for(int i=0;i<length;i++)
    {
    socket=m_connectionList.GetAt(m_connectionList.FindIndex(i));
    send(socket,in.GetBuffer(0),in.GetLength(),0);
    }
    }
    //客户端
    else
    {
    m_client.SendString(in);
    }
    }
    }它的消息映射:ON_EN_UPDATE(IDC_INPUTTEXT,OnInputText)
    运行正常
      

  4.   

    如果不设置Want return 的话,一按回车整个程序就关闭了。我的设置:AUTO HScroll,Want return ,Border,Multiline。
      

  5.   

    '/n'or'\n'我都试过了,不行!555555~~~
      

  6.   

    我想会不会是因为要想用ASCII字符必须要有什么说法吧?
      

  7.   

    楼住的消息影射搞错了,不是ON_EN_CHANGE,应该是EN_UPDATE,MSDN中如下说明:
       
    ON_EN_CHANGE   The user has taken an action that may have altered text in an edit control. Unlike the EN_UPDATE notification message, this notification message is sent 
    after Windows updates the display. 所以当按下回车键的时候,在ON_EN_CHANGE无法发现那个回车符。
    另外,需要将Edit对话框设置为Want return 和 Vertical Scroll。
      

  8.   

    楼住的消息影射搞错了,不是ON_EN_CHANGE,应该是EN_UPDATE,MSDN中如下说明:
       
    ON_EN_CHANGE   The user has taken an action that may have altered text in an edit control. Unlike the EN_UPDATE notification message, this notification message is sent 
    after Windows updates the display. 所以当按下回车键的时候,在ON_EN_CHANGE无法发现那个回车符。
    另外,需要将Edit对话框设置为Want return 和 Vertical Scroll。
      

  9.   

    刚才我试了一下,把消息映射变过来也是一样不可以,如:ON_EN_UPDATE(IDC_INPUTTEXT,OnInputText)
      

  10.   

    哦~~~~哦~~~我明白了,刚才我把AUTO HScroll 改成了Vertical Scroll或AUTO VScroll程序就可以运行了,呵呵,谢谢!!但是小弟还有一事不明:AUTO HScroll 和那两个有什么区别呢?