关于MFC代码错误的问题
我用向导新建了一个基于对话框的应用程序,在对话框中添加了一个打开按钮,两个文本编辑框,一个用来输入文件名,一个用来显示打开的文件,并给这两个编辑框关联了两个变量m_Ope...
我用向导新建了一个基于对话框的应用程序,在对话框中添加了一个打开按钮,两个文本编辑框,一个用来输入文件名,一个用来显示打开的文件,并给这两个编辑框关联了两个变量m_Openpath,和m_Text,并在对话框的类中为按钮添加了方法,代码如下:
void CReadFileDlg::OnBnClickedOpenfile()
{
// 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);
FILE * pFile=fopen(strPath,"r+t");
if (pFile)
{
char pchData[1000]={0};
fread(pchData,sizeof(char),1000,pFile);
fclose(pFile);
m_Text.SetWindowText(pchData);
}
}
}
显示如下的错误:
error C2664: “CFileDialog::CFileDialog(BOOL,LPCTSTR,LPCTSTR,DWORD,LPCTSTR,CWnd *,DWORD,BOOL)”: 不能将参数 5 从“const char [25]”转换为“LPCTSTR”
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>d:\c++小程序\readfile\readfile\readfiledlg.cpp(165) : error C2039: “SetWindowTextW”: 不是“ATL::CStringT<BaseType,StringTraits>”的成员
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=StrTraitMFC_DLL<wchar_t>
1> ]
1>d:\c++小程序\readfile\readfile\readfiledlg.cpp(166) : error C2664: “fopen”: 不能将参数 1 从“CString”转换为“const char *”
1> 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
1>d:\c++小程序\readfile\readfile\readfiledlg.cpp(172) : error C2039: “SetWindowTextW”: 不是“ATL::CStringT<BaseType,StringTraits>”的成员
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=StrTraitMFC_DLL<wchar_t>
1> ]
1
我是初学者,这是一个非常简单的代码,是直接参考书上的代码段子,但是我不会改,请各位大侠赐教,小妹不胜感激…… 展开
void CReadFileDlg::OnBnClickedOpenfile()
{
// 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);
FILE * pFile=fopen(strPath,"r+t");
if (pFile)
{
char pchData[1000]={0};
fread(pchData,sizeof(char),1000,pFile);
fclose(pFile);
m_Text.SetWindowText(pchData);
}
}
}
显示如下的错误:
error C2664: “CFileDialog::CFileDialog(BOOL,LPCTSTR,LPCTSTR,DWORD,LPCTSTR,CWnd *,DWORD,BOOL)”: 不能将参数 5 从“const char [25]”转换为“LPCTSTR”
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>d:\c++小程序\readfile\readfile\readfiledlg.cpp(165) : error C2039: “SetWindowTextW”: 不是“ATL::CStringT<BaseType,StringTraits>”的成员
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=StrTraitMFC_DLL<wchar_t>
1> ]
1>d:\c++小程序\readfile\readfile\readfiledlg.cpp(166) : error C2664: “fopen”: 不能将参数 1 从“CString”转换为“const char *”
1> 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
1>d:\c++小程序\readfile\readfile\readfiledlg.cpp(172) : error C2039: “SetWindowTextW”: 不是“ATL::CStringT<BaseType,StringTraits>”的成员
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=StrTraitMFC_DLL<wchar_t>
1> ]
1
我是初学者,这是一个非常简单的代码,是直接参考书上的代码段子,但是我不会改,请各位大侠赐教,小妹不胜感激…… 展开
2个回答
展开全部
你把工程发送到gwlprogrammer@hotmail.com,我帮你找错。
追问
谢谢你了,问题已经解决,把属性改为多字符就好啦,对了,我是初学者,以后有什么问题,直接发你邮箱行吗,我的邮箱:huluoboxiami@163.com
追答
发不发送的主动权在你手里,处不处理的控制权在我手里,有空的时候我会尽量帮你。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
参数5改成 L"ALL Files(*.TXT)|*.TXT||"
更多追问追答
追问
这句是对了,可是还有四个错误呢……然后还要怎么改呢
追答
#include
CFile file(strPath, CFile::modeRead);
char pchData[1000]={0};
file.Read(pchData, 1000);
file.Close();
TCHAR szData[1000] = {0};
mbstowcs(szData, pchData, 1000);
m_Text.SetWindowText(szData);
文件读取部分改下试试
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询