首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

MFC CFileDialog 獲取文件路徑並顯示在列表框

     編輯:程式設計疑難解答

完整代碼


// 按鈕點擊響應
void CMyDialog::OnBnClickedBtnSelectFile() {
    CFileDialog fileDlg(TRUE); // TRUE=打開文件對話框
    fileDlg.m_ofn.lpstrFilter = _T("所有文件(*.*)|*.*|文本文件(*.txt)|*.txt||");
    if (IDOK == fileDlg.DoModal()) {
        CString path = fileDlg.GetPathName(); // 獲取完整路徑
        
        // 顯示在列表框
        int idx = m_listBox.AddString(path); // m_listBox 為 CListBox 變量
        m_listBox.SetCurSel(idx);            // 選中新增項
        
        // 可選:保存到成員變量/容器
        m_filePaths.push_back(path);
    }
}

關鍵點

  • `CFileDialog(TRUE)` 打開模式,`FALSE` 保存模式。
  • `GetPathName()` 返回完整路徑,`GetFileName()` 僅文件名。
  • `CListBox::AddString` 返回索引,可用於後續操作。
  • 記得在 `DoDataExchange` 中 `DDX_Control(pDX, IDC_LIST1, m_listBox);` 綁定控制項變量。

擴展:多選文件


CFileDialog fileDlg(TRUE, NULL, NULL, OFN_ALLOWMULTISELECT | OFN_EXPLORER);
fileDlg.m_ofn.lpstrFilter = ...;
if (IDOK == fileDlg.DoModal()) {
    POSITION pos = fileDlg.GetStartPosition();
    while (pos) {
        CString path = fileDlg.GetNextPathName(pos);
        m_listBox.AddString(path);
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved