怎么用CFileDialog打开一个txt文件 并让txt文件显示?CString m_szTmp;
CString m_szEditText;
char buf[1000];
CFileDialog dlg(TRUE,"mdl","*.txt");
if(dlg.DoModal()==IDOK)
{
m_szEditText = dlg.GetPathName();
CFile mfile;
mfile.Open(dlg.GetPathName(), CFile::modeRead);
mfile.Read(buf,sizeof(buf));
m_szTmp = buf;
m_szEditText = m_szTmp;
UpdateData(false);
mfile.Close();
}怎么不行啊 ?Open不能打开么 ?
CString m_szEditText;
char buf[1000];
CFileDialog dlg(TRUE,"mdl","*.txt");
if(dlg.DoModal()==IDOK)
{
m_szEditText = dlg.GetPathName();
CFile mfile;
mfile.Open(dlg.GetPathName(), CFile::modeRead);
mfile.Read(buf,sizeof(buf));
m_szTmp = buf;
m_szEditText = m_szTmp;
UpdateData(false);
mfile.Close();
}怎么不行啊 ?Open不能打开么 ?
解决方案 »
- slider控件,如何在滑块移动的情况下精确的拖动它。
- HRESULT 中的设备代码 是干什么用的
- 重载DrawItem后,如何向CListCtrl中添加新项,拜托大家了
- richedit中输出文字对齐的问题.
- 线程池示例?
- 多文档程序,视类的显示问题。高手进!
- 如何设置工具条和菜单条的背景呀?效果就和超级解霸一样。
- 我想学COM请问一下有那里有入门的电子图书或教程可以下载?有没有什么好点的关于COM编程的网站能给推荐一下吗?
- 请高手们帮帮我。怎样才能打开当前目录下的某一文件。我编的代码不能运行。请帮我看一下
- VC浏览器开发怎么判断是否在同一窗口打开
- listbox control控件,m_list_info.AddString(strMsg);多行当中怎么才能添加到第一行?
- 如何更改2003,XP下按钮的形状
这句不对:
mfile.Read(buf,1000);
而且之前的buf最好初始化:char buf[1000] = {0};
#ifdef _UNICODE
#define __fopen _wfopen
#define __string wstring
#define __ostringstream wostringstream
#define __splitpath _wsplitpath
#else
#define __fopen fopen
#define __string string
#define __ostringstream ostringstream
#define __splitpath _splitpath
#endif
/****************************************************************************
获取文件内容并放在一个string里。
****************************************************************************/
static
bool GetFileString(const TCHAR* FilePath,__string& str)
{
FILE* fp;
fp = __fopen(FilePath, _T("rb"));
if (!fp)
return false;
//获取文件字符串个数
fseek(fp,0,SEEK_END);
UINT length=ftell(fp);
rewind(fp);
//获取文件文本
char* p;
p=new char[length+1];
fread(p,1,length,fp);
p[length]=NULL;
#ifdef _UNICODE
wchar_t* buf;
buf = new wchar_t[length+1];
setlocale(LC_ALL,".936");
mbstowcs(buf,p,length+1);
setlocale(LC_ALL,"C");
str=buf;
delete buf;
#else
str=p;
#endif
delete[] p;
fclose(fp);
return true;
}
/****************************************************************************
获取文件内容并放在一个TCHAR*里,使用完要调用delete 删除。
****************************************************************************/
static
TCHAR* GetFileString(const TCHAR* FilePath)
{
FILE* fp;
fp = __fopen(FilePath, _T("rb"));
if (!fp)
return false;
//获取文件字符串个数
fseek(fp,0,SEEK_END);
UINT length=ftell(fp);
rewind(fp);
//获取文件文本
char* p;
p=new char[length+1];
fread(p,1,length,fp);
p[length]=NULL;
#ifdef _UNICODE
wchar_t* buf;
buf = new wchar_t[length+1];
setlocale(LC_ALL,".936");
mbstowcs(buf,p,length+1);
setlocale(LC_ALL,"C");
delete[] p; //删除原来的char*
fclose(fp);
return buf;
#else
fclose(fp);
return p;
#endif
}
/****************************************************************************
保存文件。
****************************************************************************/
static
bool SaveFileString(const TCHAR* FilePath,__string& str)
{
FILE* fp = __fopen(FilePath, _T("wb"));
if (!fp)
return false; int len=str.size();
#ifdef _UNICODE//如果定义了unicode,则先转为ansi再保存
//len是源字符串的长度 len=_tcslen(WindowText)
//(len+1)*2是源字符串占用的内存空间,包括NULL结束符
//nChars返回转换的字符个数,不包括NULL,既nChars=_tcslen(buf)
//wcstombs会自动添加NULL结束符
char* buf = new char[(len+1)*2];
setlocale(LC_ALL,".936");
int nChars = wcstombs(buf,str.c_str(),(len+1)*2);
setlocale(LC_ALL,"C");
fwrite(buf,1,nChars,fp);
delete buf;
#else
fwrite(str.c_str(),1,len,fp);
#endif
fclose(fp);
return true;
}/****************************************************************************
保存文件。
****************************************************************************/
static
bool SaveFileString(const TCHAR* FilePath,const TCHAR* str)
{
FILE* fp = __fopen(FilePath, _T("wb"));
if (!fp)
return false; int len=_tcslen(str);
#ifdef _UNICODE//如果定义了unicode,则先转为ansi再保存
//len是源字符串的长度 len=_tcslen(WindowText)
//(len+1)*2是源字符串占用的内存空间,包括NULL结束符
//nChars返回转换的字符个数,不包括NULL,既nChars=_tcslen(buf)
//wcstombs会自动添加NULL结束符
char* buf = new char[(len+1)*2];
setlocale(LC_ALL,".936");
int nChars = wcstombs(buf,str,(len+1)*2);
setlocale(LC_ALL,"C");
fwrite(buf,1,nChars,fp);
delete buf;
#else
fwrite(str,1,len,fp);
#endif
fclose(fp);
return true;
}/***********************************************测试代码**********************
__string str;
if (GetFileString(_T("d:\\a.txt"),str))
{
trace(str.c_str());
str+=_T("jacky");
bool rel=SaveFileString(_T("d:\\b.txt"),str);
trace(rel);
} {
TCHAR* str=GetFileString(_T("d:\\a.txt"));
if (str)
{
trace(str);
bool rel=SaveFileString(_T("d:\\b.txt"),str);
trace(rel);
delete[] str;
}
}
****************************************************************************/
好像不太对吧
你可以百度一下:MFC 如何另存 保存对话框编辑框里的内容 ,即可找到个人网易博客,里面有完整的代码。
或者直接点击进入个人网易博客http://blog.163.com/wenxianliang08@126/blog/#m=0http://www.95wangming.com
?什么情况,怎么不行?
读取出来了,要显示在哪里?
EDIT控件,直接SetWindowsText(szEditText)