教你一个问题:
   VC6.0中,给一个编辑框定义了一个控件变量:CString m_strSendData;m_strSendData = _T(""); 网上说_T是支持Unicode编码的,但是我输入汉字,
 m_strSendData 存储的是汉字的区位码,若输入字母或数字,貌似就成了ASC,我要想让m_strSendData存储的也是字母或数字的Unicode区位码,
 该怎么实现?       CMSComDlg(CWnd* pParent = NULL);    // standard constructor
 // Dialog Data
     //{{AFX_DATA(CMSComDlg)
     enum { IDD = IDD_MSCOM_DIALOG };
     CMSComm    m_ctrMSCom;
     CString    m_strComNo;
     CString    m_strCheckBit;
     CString    m_strRecvData;
     CString m_strSendData;   //编辑框控件变量
 CMSComDlg::CMSComDlg(CWnd* pParent /*=NULL*/)
     : CDialog(CMSComDlg::IDD, pParent)
 {
     //{{AFX_DATA_INIT(CMSComDlg)
     m_strComNo = _T("");
     m_strBps = _T("");
     m_strDataBit = _T("");
     m_strStopBit = _T("");
     m_strCheckBit = _T("");
     m_strRecvData = _T("");
     m_strSendData = _T("");   //编辑框控件变量

解决方案 »

  1.   

    _T是自适应的,你最好定义 UNICODE, _UNICODE两个宏,这样,程序才是unicode工程。
      

  2.   

    那你也可以只改负责存储/读取的那个函数。
    实现写入文件时是unicode,读出来都是ascii。
      

  3.   

    没看太明白。
    不要定义控件变量,直接用GetDlgItemTextW和SetDlgItemTextW
      

  4.   

    建议最好别用TChar,自己控制编码的转换。比如c++内部用ansi,如果需要unicode再用Windows提供的函数转成Unicode即可。这样自由度更高,而且不会因为TCHAR带来新的混乱。
      

  5.   

    _T()宏的目的是为了自动匹配工程字符集
    如果你要明确使用unicod字符应该用L""
      

  6.   

    想了个办法,将字母和数字的区位码单独放到数组里,然后判断输入的与0xA0作比较,大于的就是汉字输入,否则是字母或数字,再从数组里拿取相应的区位码,去读取字模,但是发送数字结果正确,而无论输入什么汉字,都显示的是“烫”,搞不懂了~
       void CMSComDlg::ReadDataFromFile()
     {    
         unsigned char num[2][10] = {
             {0xA3,0xA3,0xA3,0xA3,0xA3,0xA3,0xA3,0xA3,0xA3,0xA3},   //0~9的区位码
             {0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9}
         }; 
          char *p = m_strSendData.GetBuffer(m_strSendData.GetLength());  //输入字符的存储区域
          unsigned   char i=0, j=0;
          unsigned   char   n,qh,wh; 
          unsigned   long   offset; 
          FILE *fd;
          fd=fopen( "HZK16 ", "rb ");
          memset(cBuf, 0, 1024);
          while(p[i])
       for(j = 0; j < m_strSendData.GetLength()/2; j++)    //getlength返回字节数
          {
          if (p[i] <=0xA0)     //小于0xA0,输入的是数字
         { 
               i++;
           n = p[i++] - '0';
            qh =num[0][n] - 0xA0; 
         wh =num[1][n] - 0xA0;        
          }
         else {            //否则是汉字
         qh=p[i++]-0xa0;
          wh=p[i++]-0xa0;
           }