m_btn.Create((LPCTSTR)"love",WS_CHILD|BS_DEFPUSHBUTTON,CRect(0,0,100,100),this,123);
m_btn.ShowWindow(SW_SHOWNORMAL);
按钮上不能正常显示LOVE,是乱码,
Create第一个参数是LPCTSTR型,我用“love”提示我const char*与LPCTSTR不兼容,就用了强制转换,
结果不能正常显示,为啥?求解!

解决方案 »

  1.   

    m_btn.Create(_T("love"),WS_CHILD|BS_DEFPUSHBUTTON,CRect(0,0,100,100),this,123);
      

  2.   

    vs2010程序的字符集是Unicode,所以字符串都是LPWSTR或LPCWSTR宽字符。需要将字符串前面加_T宏。如果不想使用Unicode字符集,可以通过项目属性(Alt+F7_)配置 常规 字符集 选择 多字符集。
      

  3.   

    双引号括住的字符"Love"会被解释成一个ANSI字符串,而在UNICODE环境下LPCTSTR = LPCWSTR 是宽字符串,与ANSI字符串不兼容。   你这样强制转换会把ANSI字符串强制解释为UNICODE字符串,自然是乱码用_T()宏可以使内部的字符串自动适应(UNICODE环境是宽字符,ANSI环境是多字符)如果你(以后也)不需要编译ANSI版本的程序,那直接在字符串前加L    L"Love"如果你需要编译ANSI版本的程序,在项目属性-常规  中修改