mfc多文档cviewtree连接本地获取文件路径
时间: 2023-10-06 11:09:28 浏览: 103
MFC编程的获取文件路径
4星 · 用户满意度95%
实现步骤:
1. 在CViewTree类中添加成员变量CString m_strFilePath,用于保存文件路径。
2. 在CViewTree类的Create函数中添加以下代码,创建右键菜单:
```
// 创建右键菜单
m_pContextMenu = new CMenu;
m_pContextMenu->CreatePopupMenu();
m_pContextMenu->AppendMenu(MF_STRING, ID_OPEN_FILE, _T("打开文件"));
```
3. 在CViewTree类的OnContextMenu函数中添加以下代码,显示右键菜单:
```
CPoint pt;
GetCursorPos(&pt);
m_pContextMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, this);
```
4. 在CViewTree类的OnCommand函数中添加以下代码,处理右键菜单命令:
```
switch (nID)
{
case ID_OPEN_FILE:
{
// 打开文件对话框
CString strFilter = _T("所有文件(*.*)|*.*||");
CFileDialog dlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, strFilter, NULL);
if (dlg.DoModal() == IDOK)
{
m_strFilePath = dlg.GetPathName();
// TODO: 在CMainFrame类的OnOpenFile函数中打开文件
}
}
break;
}
```
5. 在CMainFrame类中添加OnOpenFile函数,用于打开文件:
```
void CMainFrame::OnOpenFile()
{
if (!m_wndView.m_pTreeCtrl) return;
CString strFilePath = m_wndView.m_pTreeCtrl->m_strFilePath;
if (!strFilePath.IsEmpty())
{
// TODO: 打开文件处理
}
}
```
6. 在CMainFrame类的OnCreate函数中添加以下代码,将OnOpenFile函数与ID_OPEN_FILE命令关联:
```
// 将ID_OPEN_FILE命令与OnOpenFile函数关联
if (!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("未能创建工具栏\n");
return -1;
}
if (!m_wndStatusBar.Create(this))
{
TRACE0("未能创建状态栏\n");
return -1;
}
m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));
CMenu* pMenu = GetMenu();
if (pMenu)
{
pMenu = pMenu->GetSubMenu(0);
if (pMenu)
{
pMenu->InsertMenu(ID_FILE_NEW, MF_BYCOMMAND, ID_OPEN_FILE, _T("打开文件"));
}
}
SetMenu(pMenu);
DrawMenuBar();
```
7. 最后,在CViewTree类的OnSelChanged函数中添加以下代码,将文件路径传递给CMainFrame类:
```
// 将文件路径传递给CMainFrame类
if (pParent && pParent != &m_pTreeCtrl->GetRootItem())
{
CString strFilePath = m_pTreeCtrl->GetItemPath(pParent) + _T("\\") + strText;
((CMainFrame*)AfxGetMainWnd())->m_wndView.m_pTreeCtrl->m_strFilePath = strFilePath;
}
```
完成上述步骤后,右键点击树形控件中的文件,选择“打开文件”,即可将文件路径传递给CMainFrame类,然后在CMainFrame类的OnOpenFile函数中处理文件打开操作。
阅读全文