vc++ MFC文件对话框
我用VS2008学习vc++中的MFC。照着书上的例子写了个“文件”对话框,在打开的源代码中没有出错,为什么我照着写下后就出错了呢?教材中使用的是VC6.0
代码:
void CFileDlgDlg::OnBnClickedFileOpen()
{
// TODO: 在此添加控件通知处理程序代码
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
"All Files(*.TXT)|*.TXT||",AfxGetMainWnd());
CString strPath,strText="";
if(dlg.DoModal() == IDOK)
{
strPath=dlg.GetPathName();
m_OpenPath.SetWindowText(strPath);
CFile file(strPath,CFile::modeRead);
char read[10000];
file.readOnly(read,10000);
for(int i=0;i<file.GetLength();i++)
{
strText += read[i];
}
file.Close();
m_FileText.SetWindowText(strText);
}
}
void CFileDlgDlg::OnBnClickedFileSave()
{
// TODO: 在此添加控件通知处理程序代码
CFileDialog dlg(FALSE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
"All Files(*.TXT)|*.TXT||",AfxGetMainWnd());
CString strPath,strText="";
char write[10000];
if(dlg.DoModal() == IDOK)
{
strPath=dlg.GetPathName();
if(strPath.Right(4) != ".TXT")
strPath += ".TXT";
m_SavePath.SetWindowText(strPath);
CFile file(_T(strPath),CFile::modeCreate|CFile::modeWrite);
m_FileText.GetWindowText(strText);
strcpy(write,strText);
file.Write(write,strText.GetLength());
file.Close()
}
}
这两段代码产生的错误:
1>e:\vc\filedlg\filedlg\filedlgdlg.cpp(158) : error C2664: “CFileDialog::CFileDialog(BOOL,LPCTSTR,LPCTSTR,DWORD,LPCTSTR,CWnd *,DWORD,BOOL)”: 不能将参数 5 从“const char [25]”转换为“LPCTSTR”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>e:\vc\filedlg\filedlg\filedlgdlg.cpp(159) : error C2440: “初始化”: 无法从“const char [1]”转换为“ATL::CStringT<BaseType,StringTraits>”
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=StrTraitMFC_DLL<wchar_t>
1> ]
1> class“ATL::CStringT<BaseType,StringTraits>”的构造函数声明为“explicit”
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=StrTraitMFC_DLL<wchar_t>
1> ]
1>e:\vc\filedlg\filedlg\filedlgdlg.cpp(163) : error C2065: “m_OpenPath”: 未声明的标识符
1>e:\vc\filedlg\filedlg\filedlgdlg.cpp(163) : error C2228: “.SetWindowTextW”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>e:\vc\filedlg\filedlg\filedlgdlg.cpp(166) : error C2064: 项不会计算为接受 2 个参数的函数
1>e:\vc\filedlg\filedlg\filedlgdlg.cpp(173) : error C2065: “m_FileText”: 未声明的标识符
1>e:\vc\filedlg\filedlg\filedlgdlg.cpp(173) : error C2228: “.SetWindowTextW”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>e:\vc\filedlg\filedlg\filedlgdlg.cpp(181) : error C2664: “CFileDialog::CFileDialog(BOOL,LPCTSTR,LPCTSTR,DWORD,LPCTSTR,CWnd *,DWORD,BOOL)”: 不能将参数 5 从“const char [25]”转换为“LPCTSTR”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>e:\vc\filedlg\filedlg\filedlgdlg.cpp(182) : error C2440: “初始化”: 无法从“const char [1]”转换为“ATL::CStringT<BaseType,StringTraits>”
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=StrTraitMFC_DLL<wchar_t>
1> ]
1> class“ATL::CStringT<BaseType,StringTraits>”的构造函数声明为“explicit”
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=StrTraitMFC_DLL<wchar_t>
1> ]
1>e:\vc\filedlg\filedlg\filedlgdlg.cpp(189) : error C2065: “m_SavePath”: 未声明的标识符
1>e:\vc\filedlg\filedlg\filedlgdlg.cpp(189) : error C2228: “.SetWindowTextW”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>e:\vc\filedlg\filedlg\filedlgdlg.cpp(190) : error C2065: “LstrPath”: 未声明的标识符
1>e:\vc\filedlg\filedlg\filedlgdlg.cpp(191) : error C2065: “m_FileText”: 未声明的标识符
1>e:\vc\filedlg\filedlg\filedlgdlg.cpp(191) : error C2228: “.GetWindowTextW”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>e:\vc\filedlg\filedlg\filedlgdlg.cpp(192) : error C2664: “strcpy”: 不能将参数 2 从“CString”转换为“const char *”
1> 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
恳请高手指点