我的程序是上位机程序,要将单片机串行口输入的数据转换成十进制数据输出。
                   int a;
          CString str;
 m_strEditReceiveMsg += ch;
 
 a=str.Format("%d",m_strEditReceiveMsg);
最后一条语句出错了,提示类型转换不正确。函数str.Format完成了转换为十进制的功能,那怎样赋给显示框所对应的变量呢?因为要将数据输出在显示框中。谢谢各位指点了!

解决方案 »

  1.   

    a=str.Format("%d",m_strEditReceiveMsg);
    ============
    Format并不能完成转换为十进制的功能啊,Format("%d",....)的功能是将一个整型数转成字符型放进str变量中去。
      

  2.   

    看过前贴了
    用 atoi(strEditReceiveMsg.GetBuffer());
    试试看
      

  3.   

    用atoi吧,你的不能转换的,Format是格式化字符串的
      

  4.   

    需要先把m_strEditReceiveMsg 转换成数字,然后才能用你的Format
      

  5.   

     atoi(strEditReceiveMsg.GetBuffer()),这个函数我用了,提示有错误,说GetBuffer()没有参数吧,求指教!还有就是我怎么把这个数值显示到编辑框中呢,谢谢了!
      

  6.   

    atoi(strEditReceiveMsg.GetBuffer()),这个函数我用了,提示有错误,说GetBuffer()没有参数吧,求指教!还有就是我怎么把这个数值显示到编辑框中呢,谢谢了!
      

  7.   

    首先 要把你要转化的数转成int型  然后用str.format("d%",(int型变量));
    然后getdlgitem(编辑框ID)->setwindowtext(str);
    就可以了  想问一下 你要把什么类型的变量转换成int啊  不同的类型用不同的函数
      

  8.   

    m_strEditReceiveMsg 是什么类型的?
    说说你具体是要实现什么,是需要把什么类型转换成什么类型?CString转int?
    还是只是把CString显示到编辑框里面?如果只是显示的话,用这句:GetDlgItem(Edit控件的ID号)->SetWindowText(m_strEditReceiveMsg);
      

  9.   

    串口输出的不是字符串吧,如果是的话,用aoti(m_strEditReceiveMsg)转成10进制如果是16进制,你需要将m_strEditReceiveMsg先转成10进制 得到例m_EditReceiveMsg然后通过str.Format("%d",EditReceiveMsg)
      

  10.   

    最后一句啊 a是int型啊  后面的是CString类型  你写错了啊
      

  11.   

    要更新编辑框的话,既然你已经绑定了m_strEditReceiveMsg,就用UpdateData(FALSE);
    就可以了,SetWindowText()这种方式比较原始。
      

  12.   

    其实LZ啊,你既然是要显示输出,那直接用
    int a;
    CString str;
    str.Format("%d", a);
    m_strEditReceiveMsg += str;
    UpdateData(FALSE);
    这样就足够了,为什么非要重新给a复制呢。