char str[80],*number="27865412";
     strcpy_s (str,"number: ");
     strcat_s (str,number);
     puts (str);
     ::MessageBoxW (this->m_hWnd ,LPCWSTR(str),_T("文件夹"),MB_OK);
为什么MessageBox 显示的是乱码?编译环境:vc++ 2005

解决方案 »

  1.   

    字符编码问题,ANSI还是Unicode?
      

  2.   

    ::MessageBoxA (this->m_hWnd ,str,"文件夹",MB_OK);这样试试,把一个ASCII的字符字符转成UNICODE不行的.
      

  3.   

    MessageBoxW 需要的是Unicode字符  你给它的是ANSI字符
      

  4.   

    如果你一定要用 ::MessageBoxW 的话
    先搞个 unsigned short wCh[200] 出来
    然后 MultiByteToWideChar 转成 一个 真正是 UNICODE 的 wCh ,再传给 MessageBoxW 
      

  5.   

    ::MessageBoxW (this->m_hWnd ,LPCWSTR(str),_T("文件夹"),MB_OK);
    -->
    ::MessageBox (this->m_hWnd ,str,"文件夹",MB_OK);
      

  6.   

    用DLGBASE的测了一下. char str[80],*number="27865412";
    strcpy (str,"number: ");
    strcat (str,number);
    //puts (str); unsigned short wCh[200];
    int iLen = strlen(str);
    MultiByteToWideChar(CP_ACP,0,str,iLen,wCh,iLen);
    wCh[iLen] = 0;
    ::MessageBoxW (this->m_hWnd ,wCh,L"文件夹",MB_OK);这样可以转过去显示的.
      

  7.   

    MessageBoxW  要求宽字符
    你前面定义的字符是 char 属于多字节字符
    二者之间不能通过强制转换来进行
    你可以用 CString str
    和 CStringA stra ;
    str = stra 来进行二者之间的转换