📄 addfiledlg.cpp
字号:
// AddFileDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Compress.h"
#include "AddFileDlg.h"
#include "dlgs.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAddFileDlg
IMPLEMENT_DYNAMIC(CAddFileDlg, CFileDialog)
CAddFileDlg::CAddFileDlg() :
CFileDialog(TRUE,NULL,NULL,
OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT |
OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST |
OFN_ENABLEHOOK | OFN_EXPLORER |
OFN_OVERWRITEPROMPT,
NULL,NULL)
{
CString title;
title.LoadString(IDS_ADDDLG_TITLE);
m_ofn.lpstrTitle=title;
SetTemplate(NULL,"AddFileDlg");
m_pParent=NULL;
m_pListCtrl=NULL;
}
BEGIN_MESSAGE_MAP(CAddFileDlg, CFileDialog)
//{{AFX_MSG_MAP(CAddFileDlg)
ON_BN_CLICKED(IDC_CHECK_ALL, OnCheckAll)
ON_BN_CLICKED(IDC_UNCHECK_ALL, OnUncheckAll)
ON_BN_CLICKED(IDC_CHECK_SEL, OnCheckSel)
ON_BN_CLICKED(IDC_UNCHECK_SEL, OnUncheckSel)
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDOK,OnClickOK)
ON_BN_CLICKED(IDCANCEL,OnClickCancel)
END_MESSAGE_MAP()
void CAddFileDlg::OnInitDone()
{
CFileDialog::OnInitDone();
if (!m_pParent) m_pParent=(CDialog*)GetParent();
HideControl(IDOK);
HideControl(IDCANCEL);
HideControl(edt1);
HideControl(stc3);
HideControl(cmb1);
HideControl(stc2);
CRect rc;
CWnd *pListBox=m_pParent->GetDlgItem(lst1);
pListBox->GetWindowRect(&rc);
m_pParent->ScreenToClient(&rc);
rc.bottom+=60;
pListBox->MoveWindow(&rc);
}
void CAddFileDlg::OnClickOK()
{
//////////////////////////////////////////////////////////
//取得选择的文件及文件夹
LPITEMIDLIST pidl,pPathIdl,pFullIdl;
CShellPidl sp;
SHFILEINFO sfi;
char fname[MAX_PATH];
int nItem,Count,size;
pPathIdl=sp.CreatePidl(MAX_PATH);
size=m_pParent->SendMessage(CDM_GETFOLDERIDLIST,
MAX_PATH,
(LPARAM)(LPVOID)pPathIdl);
if (size>MAX_PATH)
{
CoTaskMemFree(pPathIdl);
pPathIdl=sp.CreatePidl(size);
m_pParent->SendMessage(CDM_GETFOLDERIDLIST,
size,
(LPARAM)(LPVOID)pPathIdl);
}
Count=m_pListCtrl->GetItemCount();
for (nItem=0;nItem<Count;nItem++)
{
if (m_pListCtrl->GetCheck(nItem))
{
pidl=(LPITEMIDLIST)m_pListCtrl->GetItemData(nItem);
pFullIdl=sp.ConcatPidls(pPathIdl,pidl);
SHGetPathFromIDList(pFullIdl,fname);
SHGetFileInfo((LPCTSTR)pFullIdl,0,&sfi,
sizeof(SHFILEINFO),
SHGFI_PIDL | SHGFI_ATTRIBUTES);
CoTaskMemFree(pFullIdl);
if (sfi.dwAttributes & SFGAO_FOLDER)
m_Folders.Add(fname);
else
m_Files.Add(fname);
}
}
CoTaskMemFree(pPathIdl);
///////////////////////////////////////////////////////////////////
//取得其它选项
int sel;
sel=m_pCompressLevel->GetCurSel();
if (sel==0) m_iCompressLevel=CX_DEFAULT_COMPRESSION;
else if (sel==1) m_iCompressLevel=CX_BEST_SPEED;
else if (sel==2) m_iCompressLevel=CX_BEST_COMPRESSION;
else m_iCompressLevel=CX_NO_COMPRESSION;
sel=m_pCompressPath->GetCurSel();
if (sel==0) m_nCompressPath=CCompressDoc::relative;
else if (sel==1) m_nCompressPath=CCompressDoc::absolute;
else m_nCompressPath=CCompressDoc::nofolder;
///////////////////////////////////////////////////////////////////
//结束对话框
((CDialog*)GetParent())->EndDialog(IDOK);
}
void CAddFileDlg::OnClickCancel()
{
((CDialog*)GetParent())->EndDialog(IDCANCEL);
}
BOOL CAddFileDlg::OnFileNameOK()
{
return TRUE;
}
void CAddFileDlg::OnFolderChange()
{
m_pListCtrl=(CListCtrl*)GetParent()->GetDlgItem(lst2)->GetWindow(GW_CHILD);
if (m_pListCtrl)
{
DWORD style=m_pListCtrl->GetExStyle();
style|=LVS_EX_CHECKBOXES;
m_pListCtrl->SetExtendedStyle(style);
}
}
void CAddFileDlg::OnCheckAll()
{
// TODO: Add your control notification handler code here
int nItem,Count;
Count=m_pListCtrl->GetItemCount();
for (nItem=0;nItem<Count;nItem++)
m_pListCtrl->SetCheck(nItem);
}
void CAddFileDlg::OnUncheckAll()
{
// TODO: Add your control notification handler code here
int nItem,Count;
Count=m_pListCtrl->GetItemCount();
for (nItem=0;nItem<Count;nItem++)
m_pListCtrl->SetCheck(nItem,FALSE);
}
void CAddFileDlg::OnCheckSel()
{
// TODO: Add your control notification handler code here
int nItem;
POSITION pos=m_pListCtrl->GetFirstSelectedItemPosition();
while (pos)
{
nItem=m_pListCtrl->GetNextSelectedItem(pos);
m_pListCtrl->SetCheck(nItem);
}
}
void CAddFileDlg::OnUncheckSel()
{
// TODO: Add your control notification handler code here
int nItem;
POSITION pos=m_pListCtrl->GetFirstSelectedItemPosition();
while (pos)
{
nItem=m_pListCtrl->GetNextSelectedItem(pos);
m_pListCtrl->SetCheck(nItem,FALSE);
}
}
BOOL CAddFileDlg::OnInitDialog()
{
CFileDialog::OnInitDialog();
// TODO: Add extra initialization here
m_pCompressLevel=(CComboBox*)GetDlgItem(IDC_COMBO_LEVEL);
m_pCompressLevel->AddString("正常压缩");
m_pCompressLevel->AddString("最快压缩");
m_pCompressLevel->AddString("最好压缩率(最慢)");
m_pCompressLevel->AddString("不压缩");
m_pCompressLevel->SetCurSel(0);
m_pCompressPath=(CComboBox*)GetDlgItem(IDC_COMBO_PATH);
m_pCompressPath->AddString("压缩相对路径");
m_pCompressPath->AddString("压缩绝对路径");
m_pCompressPath->AddString("不压缩路径");
m_pCompressPath->SetCurSel(1);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -