如何将单词:ThinkPad,
中的任何一个字母转化成全角的?
谢谢~~

解决方案 »

  1.   

    这两个函数可以完成能转换数字,英文字母(大小写),所有标点符号,代码如下,你试一下:  BOOL   Half2All(const   BYTE   *pBuf   ,   int   in_size   ,   BYTE   *pOut   ,   int   *out_size)  
      {  
      if(!pBuf)  
      {  
      return   FALSE;  
      }  
      if(!pOut)  
      {  
      return   FALSE;  
      }  
       
      if(*out_size   <   (in_size   *   2   +   1))  
      {  
      *out_size   =   in_size   *   2   +   1;  
      return   FALSE;  
      }  
       
      BYTE   *pBt1   =   new   BYTE[in_size   +   1];  
      memset(pBt1   ,   0   ,   in_size+1);  
      memcpy(pBt1   ,   pBuf   ,   in_size);  
       
      BYTE   *pBt2   =   pOut;  
      for(int   i   =   0   ;   i   <=   in_size   ;   i++)  
      {  
      if(*pBt1   ==   0x00)  
      {  
      *pBt2++   =   *pBt1++;  
      }  
      else   if(*pBt1   ==   0xa3)  
      {  
      *pBt2++   =   *pBt1++;  
      *pBt2++   =   *pBt1++;  
      }  
      else   if(*pBt1   <   0xa3)  
      {  
      *pBt2++   =   0xa3;  
      *pBt2++   =   0x80   +   *pBt1++;  
      }  
      else  
      {  
      *pBt2++   =   *pBt1++;  
      }  
      }  
      return   TRUE;  
      }  
       
      BOOL   All2Half(const   BYTE   *pBuf   ,   int   in_size   ,   BYTE   *pOut   ,   int   *out_size)  
      {  
      if(!pBuf)  
      {  
      return   FALSE;  
      }  
      if(!pOut)  
      {  
      return   FALSE;  
      }  
       
      if(*out_size   <   (in_size   /2   +   1))  
      {  
      *out_size   =   in_size   /   2   +   1;  
      return   FALSE;  
      }  
       
      BYTE   *pBt1   =   new   BYTE[in_size   +   1];  
      memset(pBt1   ,   0   ,   in_size+1);  
      memcpy(pBt1   ,   pBuf   ,   in_size);  
       
      BYTE   *pBt2   =   pOut;  
      for(int   i   =   0   ;   i   <   in_size   ;   i++)  
      {  
      if(*pBt1   ==   0x00)  
      {  
      *pBt2++   =   *pBt1++;  
      }  
      else   if(*pBt1   ==   0xa3)  
      {  
      pBt1++;  
      *pBt2++   =   *pBt1++   -   0x80;  
      }  
      else  
      {  
      *pBt2++   =   *pBt1++;  
      }  
      }  
      return   TRUE;  
      }
      

  2.   

    哇,太复杂了给你来个简单点的
    CString CPublic::ConvertPy(CString ABC)
    {
    int Len;
    CString Han;
    char *buf1, buf[MAX_PATH];

    Han = ABC;
    Len = Han.GetLength();

    ZeroMemory( buf, sizeof( buf ) );
    buf1 = Han.GetBuffer(0);
    LCMapString( GetUserDefaultLCID(), LCMAP_FULLWIDTH, buf1, Len, buf, sizeof( buf ) );
    CString Zen = CString( buf );
    if(Zen.GetLength() > 80) Zen = Zen.Mid(1,80);
    Han.ReleaseBuffer();
    return Zen;
    }