打開文件對話框和文件拖曳功能
阿新 • • 發佈:2019-02-06
判斷 acc 一個 cep all date 變量 char ||
打開文件對話框和文件拖曳功能
打開文件對話框
生成一個編輯框控件綁定變量m_szPath,一個按鈕控件添加事件OnBnClickedButtonBrowse()。
void CMFC06FileBrowseDlg::OnBnClickedButtonBrowse() { // TODO: 在此添加控件通知處理程序代碼 // 過濾器 static TCHAR BASED_CODE szFilter[] = _T("JPG (*.jpg)|*.jpg|") _T("BMP文件 (*.bmp)|*.bmp|") _T("PNG文件 (*.png)|*.png|") /*_T("All Files (*.*)|*.*||")*/; CFileDialog Filedlg(TRUE, _T(""), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, NULL); // 彈出對話框 if (Filedlg.DoModal() != IDOK) { return; } // 把獲取的路徑更新到對話框裏 m_szPath = Filedlg.GetPathName(); UpdateData(FALSE); }
文件拖曳功能
主界面對話框的【屬性】-【Accept Files】的值設置為True。
在【屬性】裏的【消息】面板上有一個叫做【WM_DROPFILES】的屬性單擊就可以綁定一個函數。
void CMFC06FileBrowseDlg::OnDropFiles(HDROP hDropInfo) { // TODO: 在此添加消息處理程序代碼和/或調用默認值 UINT count; TCHAR filePath[MAX_PATH] = { 0 }; // 判斷拖動過來了多少個文件 count = DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0); // 如果是一個文件 if (count == 1) { // 直接賦值 DragQueryFile(hDropInfo, 0, filePath, sizeof(filePath)); m_szPath = filePath; UpdateData(FALSE); DragFinish(hDropInfo); CDialog::OnDropFiles(hDropInfo); return; } else { // 如果不止一個文件就可以挨個顯示或者直接賦值到編輯框 // 這種情況要麽就是存在vector裏,要麽就是顯示在ListCtrl裏把多個文件列舉出來。 //m_vectorFile.clear(); for (UINT i = 0; i < count; i++) { int pathLen = DragQueryFile(hDropInfo, i, filePath, sizeof(filePath)); m_szPath = filePath; //m_vectorFile.push_back(filePath); //break; } UpdateData(FALSE); DragFinish(hDropInfo); } CDialogEx::OnDropFiles(hDropInfo); }
打開文件對話框和文件拖曳功能