Feature: add menu-driven compress/extract via custom file+folder picker
This commit is contained in:
52
server/2015Remote/ZstaPickerDlg.h
Normal file
52
server/2015Remote/ZstaPickerDlg.h
Normal file
@@ -0,0 +1,52 @@
|
||||
#pragma once
|
||||
|
||||
#include <afxwin.h>
|
||||
#include <afxcmn.h>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
// 让用户在同一个对话框里累加要压缩的"文件 + 文件夹"组合:
|
||||
// [添加文件...] 调出多选文件对话框
|
||||
// [添加文件夹...] 调出多选文件夹对话框 (IFileOpenDialog + FOS_PICKFOLDERS)
|
||||
// [移除选中] 从列表里删除
|
||||
// DoModal() 返回 IDOK 时,m_Paths 即为结果 (ANSI/MBCS 路径,与 ZSTA 管道一致)。
|
||||
class CZstaPickerDlg : public CDialog
|
||||
{
|
||||
public:
|
||||
explicit CZstaPickerDlg(CWnd* parent = nullptr);
|
||||
|
||||
virtual INT_PTR DoModal();
|
||||
|
||||
std::vector<std::string> m_Paths;
|
||||
|
||||
protected:
|
||||
virtual BOOL OnInitDialog();
|
||||
|
||||
afx_msg void OnAddFiles();
|
||||
afx_msg void OnAddFolders();
|
||||
afx_msg void OnRemove();
|
||||
afx_msg void OnSize(UINT nType, int cx, int cy);
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
|
||||
private:
|
||||
enum CtrlId {
|
||||
IDC_ZSTA_LIST = 1001,
|
||||
IDC_ZSTA_ADDFILES = 1002,
|
||||
IDC_ZSTA_ADDFOLDERS = 1003,
|
||||
IDC_ZSTA_REMOVE = 1004,
|
||||
};
|
||||
|
||||
CListCtrl m_List;
|
||||
CButton m_BtnAddFiles;
|
||||
CButton m_BtnAddFolders;
|
||||
CButton m_BtnRemove;
|
||||
CButton m_BtnOK;
|
||||
CButton m_BtnCancel;
|
||||
|
||||
std::vector<BYTE> m_Template; // in-memory DLGTEMPLATE bytes
|
||||
|
||||
void AddPath(const std::string& path);
|
||||
void RefreshList();
|
||||
void LayoutControls(int cx, int cy);
|
||||
};
|
||||
Reference in New Issue
Block a user