为何用CString:Format函数无法将char*转换CString?解决办法

为何用CString::Format函数无法将char*转换CString?
VC2005
Unicode

void   CChat2Dlg::OnBnClickedBtnTest()
{
//   TODO:   在此添加控件通知处理程序代码
char   buff[]= "This   is   test   string ";
CString   msg;
msg=buff;   MessageBox(msg);
msg.Format(TEXT( "%s "),buff);   MessageBox(msg);
}
上述程序两次显示的内容不一样,第一次正确,第二次是乱码。


------解决方案--------------------
void CChat2Dlg::OnBnClickedBtnTest()
{
// TODO: 在此添加控件通知处理程序代码
TCHAR buff[]=_T( "This is test string ");
CString msg;
msg=buff;
MessageBox(msg);
msg.Format(_T( "%s "),buff);
MessageBox(msg);
}
------解决方案--------------------
CString 的operator = 接收char *, 在内部进行转换
第二个乱码的原因相信你已经很清楚了
------解决方案--------------------
非UNICODE工程,强制使用UNICODE字符串,出的问题,用_T()就可以了,根据工程自动转换的
------解决方案--------------------
CString strTemp;
strTemp = m;
str.Format(TEXT( "Sorry, try again.%s "), strTemp);
MessageBox(str);