-
Notifications
You must be signed in to change notification settings - Fork 2
/
FileDlg.cpp
94 lines (80 loc) · 2.69 KB
/
FileDlg.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
// FileDlg.cpp : implementation file
//
#include "stdafx.h"
#include "FileDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFileDlg
IMPLEMENT_DYNAMIC(CFileDlg, CFileDialog)
CFileDlg::CFileDlg(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName, DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) :
CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd)
{
}
BEGIN_MESSAGE_MAP(CFileDlg, CFileDialog)
//{{AFX_MSG_MAP(CFileDlg)
ON_WM_CANCELMODE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
// const int CFileDlg::GetCurFileList(std::vector<CString>& vstrFilePath, const CString& FileNameExt)
// {
// //抓取程式目錄下的.xls表格
// WIN32_FIND_DATA FindFileData; //一個結構,找到的檔案
// HANDLE hListFile;
// CString strFilePath; //檔案所在路徑
// CString strFilePathType; //要找的檔案類型+路徑
//
// ///設定所在目錄
// GetCurrentDirectory(MAX_PATH, strFilePath.GetBuffer(0)); //抓目前所在的目錄(路徑)
// strFilePathType.Format("%s\\*.%s", strFilePath, FileNameExt); //目前執行檔所在路徑\*.xls
// hListFile = FindFirstFile(strFilePathType.GetBuffer(0), &FindFileData);
//
// if(hListFile == INVALID_HANDLE_VALUE)
// {
// //找不到檔案
// //strFilePathType也用不到了!拿來顯示錯誤訊息吧!
// strFilePathType.Format("錯誤%d", GetLastError());
// MessageBox(strFilePathType);
// strFilePathType.Format("");
// }
// else
// {
// //填上選擇Excel下拉式選單的資料
// vstrFilePath.clear();
// do
// {
// strFilePathType.Format("%s\\*.%s", strFilePath, FindFileData.cFileName);
// vstrFilePath.push_back(strFilePathType);
// }
// while(FindNextFile(hListFile, &FindFileData));
// }
// return (int)vstrFilePath.size();
// //程式到此結束,下面都是註解
// }
const int CFileDlg::GetSelFileList(std::vector<CString>& vstrFilePath)
{
// 取得第一個檔案名稱的位置 若沒有的話傳回NULL
POSITION pos = GetStartPosition();
if (pos) vstrFilePath.clear();
while(pos != NULL)
vstrFilePath.push_back(GetNextPathName(pos));// 透過位置來取得檔案名稱 檔案名稱包含完整路徑
return (int)vstrFilePath.size();
}
void CFileDlg::SetSelMultiFileTotal(const int& FileMaxBuffer)
{
const int BufferSize = (FileMaxBuffer * (MAX_PATH + 1)) + 1;
m_ofn.nMaxFile = BufferSize;
m_ofn.lpstrFile = szFileNameBuffer.GetBuffer(BufferSize);
szFileNameBuffer.ReleaseBuffer();
m_ofn.lpstrFile[0] = NULL;
}
BOOL CFileDlg::OnInitDialog()
{
CFileDialog::OnInitDialog();
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}