我有编写以下下一个回调函数,需要传出一个字符串
BOOL CToolCanClientDlg::DataSend(int _Commandword ,byte * _sBuff,UINT _sBuffLen,LPCTSTR _outstring,UINT _outstart ,UINT _outlen)
{
byte rBuff[128];
memset(rBuff,0,128);
m_com.ClearReadBuffer();
m_com.Write(_sBuff,_sBuffLen);
for (UINT i =0 ;i<2;i++)
{
m_data.delayTime(500);
m_com.Read(rBuff,128);
if ((rBuff[0]==((byte)(_Commandword>>8))) && (rBuff[1]==((byte)(_Commandword))))
{
CString strVal;
for (UINT i=_outstart;i<_outstart+_outlen;i++)
{
CString strVal_1;
strVal_1.Format(_T("%02x"),rBuff[i]);
strVal+=strVal_1;
}
_outstring=strVal;
return TRUE;
}
return FALSE;
}
return FALSE;我在以下函数中调用它
LPCTSTR  LOCMAC;
BOOL blResult=DataSend(ORD_ETCLOCINFO,sBuff,6,LOCMAC,16,6);发现LOCMAC为==""  调试信息为 指针错误进入调试红字部分的是正常的 就是传递不出来
请问这是怎么回事?

解决方案 »

  1.   

    _outstring的类型是LPCTSTR,这个参数只是把指针复制了一份这样定义就可以了:
    TCHAR*_outstring赋值的时候:
    _tcscpy(_outstring,(LPCTSTR)strVal);
      

  2.   

    LPCTSTR _outstrin ;//是指针类型
    wcscpy((wchar_t *)_outstrin, strVal.GetBuffer());//应该用copy
    _outstrin = strVal;//不能用赋值
      

  3.   

    可以了 多谢楼上的大哥 后来我想了下 我完全没必要传这么一个字符串出来 我传个数组出来 在转化成字符串 不仅仅 简单明了 而且思路清晰 ..楼上大哥的方法我试过了 可以的  不过我传个TCHAR指针出来 还不如我直接传个 byte指针出来 这样都可以直接传给数组 后续处理好处理