vc向evc移植的问题,麻烦高手看一下这段代码!!!

xiebinbnm   2010-3-28 11:21 楼主
    这是一段Vc代码,意思就是说在一个编辑框(IDC_INPUTTEXT)中输入一句话,点击回车发送出去,同时在本地文本框(IDC_SHOWTEXT)显示出来,我想把这段代码移植到evc,编译时没有问题的,可是下载到开发板上在编辑框(IDC_INPUTTEXT)中输入的内容在本地文本框(IDC_SHOWTEXT)就显示不出来了,将这段代码替换成//CString in=L"abc";
//SetDlgItemText(IDC_SHOWTEXT,in);
,是可以在文本框(IDC_SHOWTEXT)显示出来的,应该是数据类型的问题吧?请问高手我这段代码应该怎么改,给点建议也可以

                
         CString in;
        CMessg msg;
        GetDlgItemText(IDC_INPUTTEXT,in);
        if(in.GetLength()<1)
        {
                return;
        }
        if(in.GetAt(in.GetLength()-1)=='\n')
        {
                in.TrimRight(L" ");
                SetDlgItemText(IDC_INPUTTEXT,L"");
                if(in.GetLength()>2)
                {
                        m_sMsgList+=in;//Cstring m_sMsgList
                       
                        SetDlgItemText(IDC_SHOWTEXT,m_sMsgList);
                        int m_iLineCurrentPos=((CEdit *)(GetDlgItem(IDC_SHOWTEXT)))->GetLineCount();
                        ((CEdit *)(GetDlgItem(IDC_SHOWTEXT)))->LineScroll(m_iLineCurrentPos);
                        msg.m_strText=in;//Cstring m_strText
                        if(!m_bClient)
                        {
                                POSITION pos;
                                for(pos=m_connectionList.GetHeadPosition();pos!=NULL;)
                                {
                                        CClientSocket * t= (CClientSocket *)m_connectionList.GetNext(pos);
                                        t->SendMessage(&msg);
                                }
                        }
                        else
                        {
                                m_clientsocket.SendMessage(&msg);
                        }
                }
        }

回复评论 (14)

vc到evc代码移植主要是注意宽窄字符转化的问题,你可以写段测试代码测试一下你的函数,或者调试一下,应该很容易找到问题
点赞  2010-3-28 12:09
谢谢,我觉得也是这方面的问题
点赞  2010-3-28 12:15
m_sMsgList是什么类型的?CString类是会自动进行宽字符和ansi字符转换的~~~~~
SetDlgItemText,只接受宽字符。
点赞  2010-3-28 14:36
m_sMsgList是CString类型的,我在上边标注了
点赞  2010-3-28 15:47
if(in.GetAt(in.GetLength()-1)=='\n')

这一句是不是有问题?改成_T('\n')试试看。
点赞  2010-3-28 20:30
谢谢5楼,我改了,还是不行啊
点赞  2010-3-28 21:09
你单步跟踪一下试试看吧。
点赞  2010-3-28 21:24
PB太大了,我没有装,请问不装PB可以调试吗?
点赞  2010-3-29 08:18
不用装PB,装个EVC模拟器就可以单步跟踪,或者用ActiveSync连开发板在线调试都行。
点赞  2010-3-29 08:30
引用: 引用 8 楼 ustb_anqi 的回复:
PB太大了,我没有装,请问不装PB可以调试吗?


你不是在用EVC调试么?直接用EVC就可以了,不需要PB。
点赞  2010-3-29 09:22
这样查找错误:
先在一个按钮里面响应如下代码:
CString str=_T("abca")
SetDlgItemText(IDC_SHOWTEXT,str);
然后看在你的IDC_SHOWTEXT是否有显示,如果有,那么说明 你的上面的程序那里有逻辑错误

如果没有就还别的函数了,
比如用 Edit box的关联变量,在updatedata
点赞  2010-3-29 11:29
这样查找错误:
先在一个按钮里面响应如下代码:
CString str=_T("abca")
SetDlgItemText(IDC_SHOWTEXT,str);
然后看在你的IDC_SHOWTEXT是否有显示,如果有,那么说明 你的上面的程序那里有逻辑错误

如果没有就还别的函数了,
比如用 Edit box的关联变量,在updatedata
点赞  2010-3-29 11:29
谢谢楼上几位大哥,evc刚刚入手,资料很少,我会好好研究一下的
点赞  2010-3-29 15:51
好了,找到毛病了,问题出在这句if(in.GetAt(in.GetLength()-1)=='\n'),貌似evc不能识别回车键,随便改了一个符号先凑合着用吧。。。
点赞  2010-3-30 10:36
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复