- MFC教程
- MFC-首页
- MFC - 概述
- MFC - 环境设置
- MFC - VC++ 项目
- MFC - 入门
- MFC - Windows 基础知识
- MFC - 对话框
- MFC - Windows 资源
- MFC - 属性表
- MFC - 窗口布局
- MFC-控制管理
- MFC-Windows 控件
- MFC - 消息和事件
- MFC-Activex 控件
- MFC-文件系统
- MFC——标准I/O
- MFC - 文档视图
- MFC-字符串
- MFC-卡雷
- MFC - 链接列表
- MFC - 数据库类
- MFC-序列化
- MFC——多线程
- MFC-- 互联网编程
- MFC-GDI
- MFC - 库
- MFC 有用资源
- MFC - 快速指南
- MFC - 有用的资源
- MFC - 讨论
MFC-文件系统
在本章中,我们将讨论文件系统的各个组件。
驱动器
驱动器是连接到计算机的物理设备,用于存储信息。逻辑磁盘、逻辑卷或虚拟磁盘(简称VD或vdisk)是一种虚拟设备,它在计算机系统中的一个或多个物理磁盘驱动器上提供可用存储容量区域。驱动器可以是硬盘、CD ROM、DVD ROM、闪存 (USB) 驱动器、存储卡等。
您要执行的主要操作之一是获取计算机上的驱动器列表。
让我们通过创建一个新的基于 MFC 对话框的应用程序来研究一个简单的示例。
步骤 1 - 从工具箱中拖动一个按钮,将其标题更改为获取驱动器信息。
步骤 2 - 删除静态控件的标题(TODO 行)并将其 ID 更改为 IDC_STATIC_TEXT。
步骤 3 - 右键单击按钮并选择添加事件处理程序。
步骤 4 - 选择 BN_CLICKED 消息类型,然后单击“添加和编辑”按钮。
步骤 5 - 为静态文本控件添加值变量 m_strDrives。
为了支持计算机上的驱动器,Win32 库提供了 Microsoft Window 的 GetLogicalDrives() 函数,该函数将检索当前计算机上所有驱动器的列表。
步骤 6 - 编译并执行上述代码后,您将看到以下输出。
步骤 7 - 单击按钮时,您可以看到计算机上的所有驱动器。
目录
在计算中,目录是一种文件系统编目结构,其中包含对其他计算机文件以及可能的其他目录的引用。目录是一个物理位置。它可以处理驱动器上不可用的操作。
让我们通过创建一个新的基于 MFC 对话框的应用程序来研究一个简单的示例
步骤 1 - 从工具箱中拖动三个按钮。将其标题更改为创建目录、删除目录和移动目录。
步骤 2 - 将这些按钮的 ID 更改为IDC_BUTTON_CREATE、IDC_BUTTON_DELETE和IDC_BUTTON_MOVE。
步骤 3 - 删除 TODO 行。
步骤 4 - 为每个按钮添加事件处理程序。
步骤 5 - 要创建目录,您可以调用 Win32 库的 CreateDirectory() 方法。
第 6 步- 这是“创建”按钮事件处理程序实现,我们将在其中创建一个目录,然后再创建两个子目录。
void CMFCDirectoriesDemoDlg::OnBnClickedButtonCreate() { // TODO: Add your control notification handler code here SECURITY_ATTRIBUTES saPermissions; saPermissions.nLength = sizeof(SECURITY_ATTRIBUTES); saPermissions.lpSecurityDescriptor = NULL; saPermissions.bInheritHandle = TRUE; if (CreateDirectory(L"D:\\MFCDirectoryDEMO", &saPermissions) == TRUE) AfxMessageBox(L"The directory was created."); CreateDirectory(L"D:\\MFCDirectoryDEMO\\Dir1", NULL); CreateDirectory(L"D:\\MFCDirectoryDEMO\\Dir2", NULL); }
步骤7 - 要删除目录,您可以调用Win32 库的RemoveDirectory()函数。这是删除按钮事件处理程序的实现。
void CMFCDirectoriesDemoDlg::OnBnClickedButtonDelete() { // TODO: Add your control notification handler code here if (RemoveDirectory(L"D:\\MFCDirectoryDEMO\\Dir1") == TRUE) AfxMessageBox(L"The directory has been deleted"); }
步骤 8 - 如果您想移动目录,您还可以调用相同的 MoveFile() 函数。这是移动按钮事件处理程序的实现,我们将在其中创建第一个新目录,然后将 Dir2 移动到该目录。
void CMFCDirectoriesDemoDlg::OnBnClickedButtonMove() { // TODO: Add your control notification handler code here CreateDirectory(L"D:\\MFCDirectory", NULL); if (MoveFile(L"D:\\MFCDirectoryDEMO\\Dir1", L"D:\\MFCDirectory\\Dir1") == TRUE) AfxMessageBox(L"The directory has been moved"); }
步骤 9 - 编译并执行上述代码后,您将看到以下输出。
步骤 10 - 当您单击“创建目录”按钮时,它将创建这些目录。
步骤 11 - 当您单击“删除目录”按钮时,它将删除 Dir1。
文件处理
MFC 应用程序中的大部分文件处理都是与名为CArchive的类结合执行的。CArchive 类充当应用程序和用于存储数据或使其可用的介质之间的中继。它允许您以永久二进制形式(通常是磁盘存储)保存复杂的对象网络,该形式在删除这些对象后仍然存在。
以下是 CArchive 类中的方法列表 -
这是用于存储和检索数据的运算符列表
先生。 | 名称和描述 |
---|---|
1 | 运算符 << 将对象和原始类型存储到存档中。 |
2 | 操作员>> 从存档中加载对象和原始类型。 |
让我们通过创建一个新的基于 MFC 对话框的应用程序来研究一个简单的示例。
步骤 1 - 拖动一个编辑控件和两个按钮,如下图所示。
步骤 2 - 添加控制变量m_editCtrl和值变量m_strEdit用于编辑控件。
步骤 3 - 为“打开”和“保存”按钮添加单击事件处理程序。
步骤 4 - 这是事件处理程序的实现。
void CMFCFileProcessingDlg::OnBnClickedButtonOpen() { // TODO: Add your control notification handler code here UpdateData(TRUE); CFile file; file.Open(L"ArchiveText.rpr", CFile::modeRead); if(file) { CArchive ar(&file, CArchive::load); ar >> m_strEdit; ar.Close(); file.Close(); } UpdateData(FALSE); } void CMFCFileProcessingDlg::OnBnClickedButtonSave() { // TODO: Add your control notification handler code here UpdateData(TRUE); if (m_strEdit.GetLength() == 0) { AfxMessageBox(L"You must enter the name of the text."); return; } CFile file; file.Open(L"ArchiveText.rpr", CFile::modeCreate | CFile::modeWrite); CArchive ar(&file, CArchive::store); ar << m_strEdit; ar.Close(); file.Close(); }
步骤 5 - 编译并执行上述代码后,您将看到以下输出。
步骤 6 - 写一些内容并单击“保存”。它将以二进制格式保存数据。
步骤 7 - 从编辑控制中删除测试。单击“打开”时,请观察到再次加载相同的文本。