CString是一个文件路径,获取文件路径\前的数据
时间: 2024-05-12 08:13:13 浏览: 43
你可以使用`CString::ReverseFind`函数来查找最后一个反斜杠字符的位置,然后使用`CString::Left`函数来获取该位置之前的子串。示例如下:
```c++
CString strPath = _T("C:\\Windows\\System32\\notepad.exe");
int nPos = strPath.ReverseFind('\\');
CString strParentPath = strPath.Left(nPos);
```
这样就可以获取到文件路径中最后一个反斜杠字符之前的数据,即`C:\Windows\System32`。需要注意的是,如果文件路径中没有反斜杠字符,则`ReverseFind`函数会返回-1,需要进行错误处理。
相关问题
mfc多文档CViewTree获取文件路径
在MFC多文档应用程序中,CViewTree类通常用于显示文件夹结构。要获取当前选中的文件的路径,可以使用以下代码:
```
// 获取当前选中项
HTREEITEM hItem = GetSelectedItem();
// 获取该项的数据
MY_TREE_DATA* pData = (MY_TREE_DATA*)GetItemData(hItem);
// 获取文件路径
CString strFilePath = pData->strFilePath;
```
其中,MY_TREE_DATA是自定义的树节点数据结构,可以包含文件路径等信息。在CMainFrame类中,可以在OnCreate函数中设置树节点的数据结构:
```
// 设置树节点数据结构
m_wndFileView.SetImageList(&m_FileViewImages, TVSIL_NORMAL);
m_wndFileView.SetItemHeight(18);
m_wndFileView.SetItemData(m_wndFileView.GetRootItem(), (DWORD_PTR)&m_pDocManager);
```
在CViewTree类中,可以在OnSelChanged函数中获取当前选中的文件路径:
```
void CViewTree::OnSelChanged(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// 获取当前选中项
HTREEITEM hItem = GetSelectedItem();
// 获取该项的数据
MY_TREE_DATA* pData = (MY_TREE_DATA*)GetItemData(hItem);
// 获取文件路径
CString strFilePath = pData->strFilePath;
// 将文件路径发送给视图
((CMainFrame*)AfxGetMainWnd())->SendMessage(WM_VIEW_FILE, 0, (LPARAM)(LPCTSTR)strFilePath);
*pResult = 0;
}
```
在CMainFrame类中,可以处理WM_VIEW_FILE消息,以在视图中打开选中的文件:
```
// 处理WM_VIEW_FILE消息
afx_msg LRESULT OnViewFile(WPARAM wParam, LPARAM lParam)
{
CString strFilePath = (LPCTSTR)lParam;
// 打开文件
CDocument* pDoc = m_pDocManager->OpenDocumentFile(strFilePath);
if (pDoc != NULL)
{
// 获取视图
CView* pView = pDoc->GetFirstView();
if (pView != NULL)
{
// 将视图设置为活动视图
SetActiveView(pView);
}
}
return 0;
}
```
利用vc++写一个mfc列表控件的数据使用文件系统的文件
好的,下面是一个简单的示例代码,演示如何利用VC++的MFC框架和文件系统读取文件数据,并将数据显示在列表控件中:
首先,在你的MFC应用程序中创建一个列表控件(List Control),并设置它的样式为 Report,也就是报表样式。然后,在列表控件的头部添加几列,用于显示文件的名称、大小、创建时间等信息。
接下来,在你的代码中,定义一个 CFileFind 类型的变量,用于查找文件系统中的文件。然后,在查找到文件后,将文件的信息存储在一个 CFileStatus 类型的变量中。
接着,利用 CStdioFile 类型的变量,打开文件并读取文件数据,在读取数据的同时,将数据添加到列表控件中。最后,关闭文件并释放所有的资源。
下面是示例代码:
```
CFileFind finder;
CString strWildcard = _T("C:\\*.txt");
BOOL bWorking = finder.FindFile(strWildcard);
while (bWorking)
{
bWorking = finder.FindNextFile();
if (!finder.IsDots())
{
CString strFilePath = finder.GetFilePath();
CFileStatus fileStatus;
CStdioFile file;
if (CFile::GetStatus(strFilePath, fileStatus))
{
if (file.Open(strFilePath, CFile::modeRead))
{
ULONGLONG nFileSize = file.GetLength();
CString strFileName = finder.GetFileName();
CTime timeCreate = fileStatus.m_mtime;
CString strCreateTime = timeCreate.Format(_T("%Y-%m-%d %H:%M:%S"));
int nIndex = m_listCtrl.InsertItem(0, strFileName);
m_listCtrl.SetItemText(nIndex, 1, FormatSize(nFileSize));
m_listCtrl.SetItemText(nIndex, 2, strCreateTime);
CString strData;
while (file.ReadString(strData))
{
m_listCtrl.SetItemText(nIndex, 3, strData);
}
file.Close();
}
}
}
}
finder.Close();
```
在这段示例代码中,我们首先定义了一个 CFileFind 类型的变量 finder,并使用通配符指定要查找的文件类型。然后,在 while 循环中,我们依次查找文件,并使用 GetFilePath() 方法获取文件的完整路径名。
接着,我们使用 GetStatus() 方法获取文件的状态信息,并使用 CStdioFile 类型的变量 file 打开文件。在打开文件之后,我们依次读取文件中的每一行数据,并使用 InsertItem() 方法在列表控件中插入一行数据。
在插入一行数据之后,我们使用 SetItemText() 方法将文件的名称、大小、创建时间等信息添加到列表控件的相应列中。最后,我们关闭文件并释放所有的资源。
需要注意的是,上述代码中使用了 FormatSize() 方法,用于将文件的大小格式化为易于阅读的格式。你可以根据需要修改该方法的实现。
希望这个简单的示例对你有所帮助!
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)