这是一段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);
}
}
}
vc到evc代码移植主要是注意宽窄字符转化的问题,你可以写段测试代码测试一下你的函数,或者调试一下,应该很容易找到问题
m_sMsgList是什么类型的?CString类是会自动进行宽字符和ansi字符转换的~~~~~
SetDlgItemText,只接受宽字符。
m_sMsgList是CString类型的,我在上边标注了
if(in.GetAt(in.GetLength()-1)=='\n')
这一句是不是有问题?改成_T('\n')试试看。
不用装PB,装个EVC模拟器就可以单步跟踪,或者用ActiveSync连开发板在线调试都行。
引用: 引用 8 楼 ustb_anqi 的回复:
PB太大了,我没有装,请问不装PB可以调试吗?
你不是在用EVC调试么?直接用EVC就可以了,不需要PB。
这样查找错误:
先在一个按钮里面响应如下代码:
CString str=_T("abca")
SetDlgItemText(IDC_SHOWTEXT,str);
然后看在你的IDC_SHOWTEXT是否有显示,如果有,那么说明 你的上面的程序那里有逻辑错误
如果没有就还别的函数了,
比如用 Edit box的关联变量,在updatedata
这样查找错误:
先在一个按钮里面响应如下代码:
CString str=_T("abca")
SetDlgItemText(IDC_SHOWTEXT,str);
然后看在你的IDC_SHOWTEXT是否有显示,如果有,那么说明 你的上面的程序那里有逻辑错误
如果没有就还别的函数了,
比如用 Edit box的关联变量,在updatedata
谢谢楼上几位大哥,evc刚刚入手,资料很少,我会好好研究一下的
好了,找到毛病了,问题出在这句if(in.GetAt(in.GetLength()-1)=='\n'),貌似evc不能识别回车键,随便改了一个符号先凑合着用吧。。。