CString m_buf;
CStatic *m_static;
char *szName;
...
m_buf.Format(":%s",szName);
m_static->SetWindowText(m_buf);为什么显示出来时乱码?

解决方案 »

  1.   

    szName赋值是怎样的 是'a'这种吗,反正如果有'\r','\n'之类是会有乱码的
      

  2.   

    char *szName; 是ascii码,如果工程定义了unicode,就会出现乱码
    vc2008默认是unicode。
      

  3.   

    你用断点看看szName是否有值,我总觉得szName没有赋值。
    改成这样试试:
    CString m_buf ;
    m_buf = szName;
    m_buf = ":" + m_buf;
    m_static->SetWindowText(m_buf); 
      

  4.   


    char *szName=NULL; 
    char str[]="abc";
    szname=str
      

  5.   

    看起来像是szName赋值有问题;
    另外,如果工程的语言不是英语的话, 也有可能是工程语言和PC语言不同;
      

  6.   

    1. m_buf.Format(":%s",szName); 
    2. m_static->SetWindowText(m_buf); 设断点在1处时szName的确有值,但到2处时szName就变成一个方框了
      

  7.   

            CString m_buf; 
    CStatic *m_static; 
    char *szName = new char[20];
    strcpy( szName, "test" );
    m_buf.Format( ":%s", szName );
    m_static = (CStatic *)this->GetDlgItem( IDC_STATIC_test );
    m_static->SetWindowText( m_buf );
    free( szName );
      

  8.   

    CString m_buf; 
    CStatic *m_static; 
    char *szName; 
    ... 
    m_buf.Format(_T(":%s"),szName); 
    m_static->SetWindowText(m_buf); 
    这种就行了