admin
2023-03-07 8b06b1cbf112d55307ea8a6efe711db4e7506d89
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include "pch.h"
#include "GUITool.h"
CString GUITool::selectFolder(CString title) {
 
    TCHAR           szFolderPath[MAX_PATH] = { 0 };
    CString         strFolderPath = TEXT("");
 
    BROWSEINFO      sInfo;
    ::ZeroMemory(&sInfo, sizeof(BROWSEINFO));
    sInfo.pidlRoot = 0;
    sInfo.lpszTitle = title;
    sInfo.ulFlags = BIF_RETURNONLYFSDIRS | BIF_EDITBOX | BIF_DONTGOBELOWDOMAIN;
    sInfo.lpfn = NULL;
 
    // ÏÔʾÎļþ¼ÐÑ¡Ôñ¶Ô»°¿ò  
    LPITEMIDLIST lpidlBrowse = ::SHBrowseForFolder(&sInfo);
    if (lpidlBrowse != NULL)
    {
        // È¡µÃÎļþ¼ÐÃû  
        if (::SHGetPathFromIDList(lpidlBrowse, szFolderPath))
        {
            strFolderPath = szFolderPath;
        }
    }
    if (lpidlBrowse != NULL)
    {
        ::CoTaskMemFree(lpidlBrowse);
    }
    return strFolderPath;
}
 
CString GUITool::selectImage() {
 
    TCHAR szBuffer[MAX_PATH] = { 0 };
    OPENFILENAME ofn = { 0 };
    ofn.lStructSize = sizeof(ofn);
    ofn.lpstrFilter = _T("All\0*.PNG\0*.JPG");//ҪѡÔñµÄÎļþºó׺ 
    ofn.nFilterIndex = 1;
    ofn.lpstrFile = szBuffer;//´æ·ÅÎļþµÄ»º³åÇø 
    ofn.nMaxFile = sizeof(szBuffer) / sizeof(*szBuffer);
    ofn.nFilterIndex = 0;
    ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
    BOOL bSel = GetOpenFileName(&ofn);
    if (bSel) {
        return szBuffer;
    }
 
 
    return 0;
}
 
 
CString GUITool::selectExcel() {
 
    TCHAR szBuffer[MAX_PATH] = { 0 };
    OPENFILENAME ofn = { 0 };
    ofn.lStructSize = sizeof(ofn);
    ofn.lpstrFilter = _T("All\0*.xls");//ҪѡÔñµÄÎļþºó׺ 
    ofn.nFilterIndex = 1;
    ofn.lpstrFile = szBuffer;//´æ·ÅÎļþµÄ»º³åÇø 
    ofn.nMaxFile = sizeof(szBuffer) / sizeof(*szBuffer);
    ofn.nFilterIndex = 0;
    ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
    BOOL bSel = GetOpenFileName(&ofn);
    if (bSel) {
        return szBuffer;
    }
 
 
    return 0;
}
 
std::list<CString> GUITool::selectMulImages() {
    std::list<CString> paths;
    TCHAR szBuffer[MAX_PATH] = { 0 };
    OPENFILENAME ofn = { 0 };
    TCHAR szPath[MAX_PATH];
    int nLen = 0;
    TCHAR* p;
    ofn.lStructSize = sizeof(ofn);
    ofn.lpstrFilter = _T("All\0*.PNG\0*.JPG");//ҪѡÔñµÄÎļþºó׺ 
    ofn.nFilterIndex = 1;
    ofn.lpstrFile = szBuffer;//´æ·ÅÎļþµÄ»º³åÇø 
    ofn.nMaxFile = sizeof(szBuffer) / sizeof(*szBuffer);
    ofn.Flags = OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT | OFN_HIDEREADONLY | OFN_EXPLORER;
    BOOL bSel = GetOpenFileName(&ofn);
    if (bSel) {
        lstrcpyn(szPath, szBuffer, ofn.nFileOffset);
        szPath[ofn.nFileOffset] = '\0';
        nLen = lstrlen(szPath);
        if (szPath[nLen - 1] != '\\') {
            lstrcat(szPath, _T("\\"));
        }
        p = szBuffer + ofn.nFileOffset;
        while (*p) {
            CString name(p);
            CString dir(szPath);
            CString path;
            path.Format(_T("%s%s"), dir, name);
            paths.push_back(path);
            //ÒÆÖÁÏÂÒ»¸öÎļþ
            p += lstrlen(p) + 1;
        }
    }
 
 
    return paths;
}