不存在从 "CString" 到 "LPCWSTR" 的适当转换函数,该如何处理

不存在从 "CString" 到 "LPCWSTR" 的适当转换函数
VC++,MFC,OpenCV

CString filename = fileDlg.GetPathName();
USES_CONVERSION;
LPWSTR pwStr=new wchar_t[filename.GetLength()+1];
wcscpy(pwStr,T2W((LPCTSTR)filename));
int len = WideCharToMultiByte(CP_ACP,0,filename,-1,NULL,0,NULL,NULL);//filename下波浪
char * cvfile = new char[len];
WideCharToMultiByte(CP_ACP,0,filename,-1,cvfile,len,NULL,NULL);//filename下波浪
CFile file;
file.Open(filename,CFile::modeRead|CFile::typeBinary);
file.SeekToBegin();

提示的错误是:
不存在从 "CString" 到 "LPCWSTR" 的适当转换函数,该如何处理

新手不知道哪里出了问题……望大神指教!谢谢!
------解决方案--------------------
CString有一个GetBuffer()的成员函数返回其内部的字符指针
------解决方案--------------------
string.GetBuffer()

------解决方案--------------------
使用 CString::GetBuffer() 即可
------解决方案--------------------
因为你的编译环境是多字符集.
CString实际上是CStringA,  即内部是ASCII的.

wcscpy(pwStr,T2W((LPCTSTR)filename));  这里你都作了转换, 为什么不用呢??

后面的参数应该是使用pwStr, 而不是filename.

------解决方案--------------------
wcscpy(pwStr,T2W((LPCSTR)filename));

LPCTSTR->LPCSTR