如何在视图对象中访问文件?

mitterand 2009-03-12 02:11:36
在建立VC项目的时候,自动生成了视图对象。

现在用视图对象的“FILE”,“OPEN” 能够打开文件,且文件名在标题上显示。

现在我要对文件进行操作,比如返回文件的路径,I/O操作。

那么就要获得文件对象。

请问如何获得文件对象以及如何在视图对象中进行文件操作?

3X。
...全文
85 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
品茶 2009-03-30
  • 打赏
  • 举报
回复
LZ你有视图类,怎么会没有文档类?
打开文件的函数建议写在文档类中,在视图类中申明一个文档类的指针对象pDoc
CString filepath = pDoc->GetPathName(); 就可以得到文件路径。
另外访问项目外路径请用绝对路径,注意路径格式(‘\’是转义字符),如"d:\file"要写成"d:\\file"
Cpp权哥 2009-03-19
  • 打赏
  • 举报
回复
如果访问文件,不管你在视图中还是在其它地方都可以用CFile直接根据文件路径名来打开文件,或者用CFileDialog让用户来选择从而取得文件路径名来打开文件。

在视图中唯一特别的是,视图一般是跟一个文件关联的,如果是要取得这个跟视图相关联的文件,可以用GetDocument()函数。如果正好是在视图的显示函数中,可以直接用pDoc指针来访问那个跟视图相关联的文件。
mitterand 2009-03-16
  • 打赏
  • 举报
回复
我是这样实现的:
CFileDialog dlg(TRUE, "SQL", "*.txt",OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT,"Text Files(*.txt)|*.txt|Microsoft Office Excel Files(*.xls)|*.xls|All Files(*.*)|*.*||");
if ( dlg.DoModal()!=IDOK )
return;
//obtain the absolute path of file
CString sFileName=dlg.GetPathName();
sFileName = sFileName;
//open file
CStdioFile out;
out.Open(sFileName, CFile::modeRead);


此外,我觉得GetDocument()不能访问项目外的文件。
chin_chen 2009-03-15
  • 打赏
  • 举报
回复
DWORD WINAPI GetFinalPathNameByHandle(
__in HANDLE hFile,
__out LPWSTR lpszFilePath,
__in DWORD cchFilePath,
__in DWORD dwFlags
);
typedef struct _BY_HANDLE_FILE_INFORMATION {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD dwVolumeSerialNumber;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD nNumberOfLinks;
DWORD nFileIndexHigh;
DWORD nFileIndexLow;
} BY_HANDLE_FILE_INFORMATION,
*PBY_HANDLE_FILE_INFORMATION;

BOOL WINAPI GetFileInformationByHandle(
__in HANDLE hFile,
__out LPBY_HANDLE_FILE_INFORMATION lpFileInformation
);
品茶 2009-03-13
  • 打赏
  • 举报
回复
CPLT_BetaDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
上面的代码是自动生成的。可以对pDoc进行操作
具体代码如下:
CStdioFile file;
filepath = pDoc->GetPathName();
BOOL bOpen = file.Open(filepath,CFile::modeRead);
下面代码省略
npuhuxl 2009-03-12
  • 打赏
  • 举报
回复
视图中有个GetDocument()函数,返回与该视图相关联的CDocument对象指针

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧