作者:quke.cn |
分类:VC/C++| GAE的第三方上传工具SDUpload。 |
| 获取谷歌地图当前位置坐标 |
| 图解SDBlog1.0Beta。 |
| VS2008安装时与Office2007的冲突 |
| 关于 |
| SDBlog介绍-开始提供下载了。 |
| 留言本 |
| Python中文全攻略 |
| 电子及计算机经典好书 |
| c++中抽象类、虚函数和纯虚函数的学习 |
如何把里面的数据写入到文件?
RichEdit控件中为我们提供了一个函数long StreamOut(int nFormat, EDITSTREAM &es)
1.我们来讲讲一些介绍,当然你懂了也可以不用看。
EDITSTREAM是什么?
它是一个结构,它有三个成员变量,这里我们只要用到二个就够了。
typedef struct _editstream
{
DWORD_PTR dwCookie; // 一般我们用来存参数
DWORD dwError; // Last error
EDITSTREAMCALLBACK pfnCallback; //回调函数
} EDITSTREAM;这个回调函数的格式为
//这个回调名称是可以变的(废话)
DWORD CALLBACK SaveCallBack(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG * pcb)
{
//写入文件
((CFile *)(LONGLONG)(dwCookie))->Write(pbBuff,cb);return 0;
}
2.现在我来讲讲如何实现a)创建文件或者打开文件
b)设置回调函数
c)调用StreamOut
d)回调函数中写入文件
e)记得要关闭文件那么我就从代码上讲解给大家听
bool SaveMessage(LPCTSTR pszFileName)
{
//首先,我们得创建一个文件
CString strFileName=pszFileName;//打开文件
if (strFileName.IsEmpty()==true)
{
CFileDialog FileDlg(FALSE,TEXT("RTF"),0,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,TEXT("信息文件(*.RTF)|*.RTF||"),this);
if (FileDlg.DoModal()==IDOK) strFileName=FileDlg.GetPathName();
else return true;
}//打开文件
CFile File;
if (File.Open(strFileName,CFile::modeWrite|CFile::modeCreate,NULL)==FALSE) return false;//构造数据
EDITSTREAM EditStream;
EditStream.pfnCallback=SaveCallBack; //这是我们的回调函数
EditStream.dwCookie=(DWORD)(LONGLONG)(&File);//写入文件
StreamOut(SF_RTF,EditStream);
File.Close();return true;
}//保存回调
DWORD CALLBACK SaveCallBack(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG * pcb)
{
//写入文件
((CFile *)(LONGLONG)(dwCookie))->Write(pbBuff,cb);return 0;
}
3.那么有人会问,保存的文件只能是RTF吗?当然也可以是TXT文件,你们有没有注意到StreamOut的第一个参数,SF_RTF就是RTF文件,要是SF_TEXT就是TXT文件了
固定链接:http://www.quke.cn/log-357.html
2010-02-2 11:57 AM |
浏览:
评论: