base
@@ -0,0 +1,46 @@
|
||||
// BandwidthDlg.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "BandwidthDlg.h"
|
||||
#include ".\bandwidthdlg.h"
|
||||
|
||||
|
||||
// CBandwidthDlg 대화 상자입니다.
|
||||
|
||||
IMPLEMENT_DYNAMIC(CBandwidthDlg, CDialog)
|
||||
CBandwidthDlg::CBandwidthDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CBandwidthDlg::IDD, pParent)
|
||||
, m_sPath(_T(""))
|
||||
, m_nLevel(0)
|
||||
{
|
||||
}
|
||||
|
||||
CBandwidthDlg::~CBandwidthDlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CBandwidthDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Text(pDX, IDC_EDT_PATH, m_sPath);
|
||||
DDX_Control(pDX, IDC_CBO_LEVEL, m_cboLevel);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CBandwidthDlg, CDialog)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CBandwidthDlg 메시지 처리기입니다.
|
||||
|
||||
BOOL CBandwidthDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
m_cboLevel.SetCurSel(m_nLevel);
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
#pragma once
|
||||
#include "afxwin.h"
|
||||
|
||||
|
||||
// CBandwidthDlg 대화 상자입니다.
|
||||
|
||||
class CBandwidthDlg : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CBandwidthDlg)
|
||||
|
||||
public:
|
||||
CBandwidthDlg(CWnd* pParent = NULL); // 표준 생성자입니다.
|
||||
virtual ~CBandwidthDlg();
|
||||
|
||||
// 대화 상자 데이터입니다.
|
||||
enum { IDD = IDD_BANDWIDTH };
|
||||
|
||||
public:
|
||||
CString m_sPath;
|
||||
int m_nLevel;
|
||||
CComboBox m_cboLevel;
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
|
||||
public:
|
||||
virtual BOOL OnInitDialog();
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
@@ -0,0 +1,53 @@
|
||||
// ConfigCommonDlg.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "ConfigCommonDlg.h"
|
||||
|
||||
|
||||
// CConfigCommonDlg 대화 상자입니다.
|
||||
|
||||
IMPLEMENT_DYNAMIC(CConfigCommonDlg, CDialog)
|
||||
CConfigCommonDlg::CConfigCommonDlg(CWnd* pParent /*=NULL*/)
|
||||
: CConfigSubDlg(CConfigCommonDlg::IDD, pParent)
|
||||
, m_nAfterExec(0)
|
||||
, m_bAutoConnect(FALSE)
|
||||
, m_bSavePassword(FALSE)
|
||||
{
|
||||
}
|
||||
|
||||
CConfigCommonDlg::~CConfigCommonDlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CConfigCommonDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_CBO_AFTEREXEC, m_cboAfterExec);
|
||||
DDX_Check(pDX, IDC_CHK_AUTOCONNECT, m_bAutoConnect);
|
||||
DDX_Check(pDX, IDC_CHK_SAVEPASSWORD, m_bSavePassword);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CConfigCommonDlg, CDialog)
|
||||
ON_CBN_SELCHANGE(IDC_CBO_AFTEREXEC, OnCboAfterexecSelchange)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CConfigCommonDlg 메시지 처리기입니다.
|
||||
|
||||
BOOL CConfigCommonDlg::OnInitDialog()
|
||||
{
|
||||
CConfigSubDlg::OnInitDialog();
|
||||
|
||||
m_cboAfterExec.SetCurSel(m_nAfterExec);
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
|
||||
}
|
||||
|
||||
void CConfigCommonDlg::OnCboAfterexecSelchange()
|
||||
{
|
||||
m_nAfterExec = m_cboAfterExec.GetCurSel();
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
#pragma once
|
||||
|
||||
#include "ConfigSubDlg.h"
|
||||
|
||||
// CConfigCommonDlg 대화 상자입니다.
|
||||
|
||||
class CConfigCommonDlg : public CConfigSubDlg
|
||||
{
|
||||
DECLARE_DYNAMIC(CConfigCommonDlg)
|
||||
|
||||
public:
|
||||
CConfigCommonDlg(CWnd* pParent = NULL); // 표준 생성자입니다.
|
||||
virtual ~CConfigCommonDlg();
|
||||
|
||||
// 대화 상자 데이터입니다.
|
||||
enum { IDD = IDD_CONFIG_COMMON };
|
||||
|
||||
public:
|
||||
CComboBox m_cboAfterExec;
|
||||
|
||||
BOOL m_bAutoConnect;
|
||||
BOOL m_bSavePassword;
|
||||
int m_nAfterExec;
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
|
||||
public:
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnCboAfterexecSelchange();
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
@@ -0,0 +1,162 @@
|
||||
// ConfigDlg.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "ConfigDlg.h"
|
||||
|
||||
|
||||
// CConfigDlg 대화 상자입니다.
|
||||
|
||||
IMPLEMENT_DYNAMIC(CConfigDlg, CDialog)
|
||||
CConfigDlg::CConfigDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CConfigDlg::IDD, pParent)
|
||||
{
|
||||
m_iPage = -1;
|
||||
}
|
||||
|
||||
CConfigDlg::~CConfigDlg()
|
||||
{
|
||||
for (int i = 0; i < m_paPage.GetCount(); i++)
|
||||
delete (PCONFIG_PAGE_STRUCT)m_paPage[i];
|
||||
}
|
||||
|
||||
void CConfigDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_STC_TITLE, m_stcTitle);
|
||||
DDX_Control(pDX, IDC_TAB, m_tab);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CConfigDlg, CDialog)
|
||||
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB, OnSelchangeTb)
|
||||
ON_BN_CLICKED(IDOK, OnOk)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CConfigDlg 메시지 처리기입니다.
|
||||
|
||||
BOOL CConfigDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
m_stcTitle.m_crText = ::GetSysColor(COLOR_3DFACE);
|
||||
m_stcTitle.m_nFontWeight = FW_BOLD;
|
||||
m_stcTitle.m_nFontSize = 14;
|
||||
m_stcTitle.m_sFontName = _T("Verdana");
|
||||
m_stcTitle.SetConstantText(APP_TITLE);
|
||||
|
||||
m_tab.InsertItem(0, "기본");
|
||||
m_tab.InsertItem(1, "URL 저장");
|
||||
m_tab.InsertItem(2, "프록시");
|
||||
// m_tab.SetItemSize(CSize(130, 17));
|
||||
|
||||
m_tab.GetClientRect(&m_rcFrame);
|
||||
m_rcFrame.left += 1;
|
||||
m_rcFrame.top += 23;
|
||||
m_rcFrame.right -= 1;
|
||||
m_rcFrame.bottom -= 1;
|
||||
|
||||
m_dlgCommon.m_bAutoConnect = COptions::GetOptionVal(OPTION_AUTOCONNECT);
|
||||
m_dlgCommon.m_bSavePassword = COptions::GetOptionVal(OPTION_SAVEPASSWORD);
|
||||
m_dlgCommon.m_nAfterExec = COptions::GetOptionVal(OPTION_AFTEREXEC);
|
||||
m_dlgUrl.m_bSearchSub = COptions::GetOptionVal(OPTION_SEARCHSUBURL);
|
||||
m_dlgUrl.m_nTag = COptions::GetOptionVal(OPTION_URLTAGTYPE);
|
||||
m_dlgUrl.m_sSTag = COptions::GetOption(OPTION_URLSTAG);
|
||||
m_dlgUrl.m_sETag = COptions::GetOption(OPTION_URLETAG);
|
||||
m_dlgProxy.m_sHost = COptions::GetOption(OPTION_PROXYHOST);
|
||||
m_dlgProxy.m_sPort = COptions::GetOption(OPTION_PROXYPORT);
|
||||
m_dlgProxy.m_bUseIEProxy = COptions::GetOptionVal(OPTION_USEIEPROXY);
|
||||
|
||||
AddPage(m_dlgCommon, "기본");
|
||||
AddPage(m_dlgUrl, "URL 저장");
|
||||
AddPage(m_dlgProxy, "프록시");
|
||||
|
||||
ShowPage(0);
|
||||
|
||||
#ifdef _OPENDISK
|
||||
SetWindowText("Opensidk Console 설정");
|
||||
#else
|
||||
SetWindowText("SP-Console 설정");
|
||||
#endif
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
|
||||
}
|
||||
|
||||
void CConfigDlg::AddPage(CConfigSubDlg &dlg, LPCTSTR pszCaption)
|
||||
{
|
||||
PCONFIG_PAGE_STRUCT pcp = new CONFIG_PAGE_STRUCT;
|
||||
pcp->pdlg = &dlg;
|
||||
pcp->nID = dlg.GetID();
|
||||
pcp->sCaption = pszCaption;
|
||||
|
||||
m_paPage.Add(pcp);
|
||||
|
||||
if (!::IsWindow(dlg.m_hWnd))
|
||||
dlg.Create(dlg.GetID(), this);
|
||||
}
|
||||
|
||||
BOOL CConfigDlg::ShowPage(int iPage)
|
||||
{
|
||||
if (m_iPage >= 0) {
|
||||
PCONFIG_PAGE_STRUCT pcp = (PCONFIG_PAGE_STRUCT)m_paPage[m_iPage];
|
||||
if (!pcp)
|
||||
return FALSE;
|
||||
|
||||
if (pcp->pdlg) {
|
||||
if (::IsWindow(pcp->pdlg->GetSafeHwnd()))
|
||||
pcp->pdlg->ShowWindow(SW_HIDE);
|
||||
}
|
||||
}
|
||||
|
||||
PCONFIG_PAGE_STRUCT pcp = (PCONFIG_PAGE_STRUCT)m_paPage[iPage];
|
||||
if (!pcp)
|
||||
return FALSE;
|
||||
|
||||
if (pcp->pdlg) {
|
||||
if (::IsWindow(pcp->pdlg->GetSafeHwnd())) {
|
||||
pcp->pdlg->SetParent(&m_tab);
|
||||
pcp->pdlg->MoveWindow(m_rcFrame.left, m_rcFrame.top, m_rcFrame.Width(), m_rcFrame.Height());
|
||||
pcp->pdlg->ShowWindow(SW_SHOW);
|
||||
pcp->pdlg->RedrawWindow();
|
||||
pcp->pdlg->SetFocus();
|
||||
}
|
||||
|
||||
m_tab.SetCurSel(iPage);
|
||||
|
||||
m_iPage = iPage;
|
||||
}
|
||||
|
||||
m_stcTitle.SetWindowText(pcp->sCaption);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void CConfigDlg::OnSelchangeTb(NMHDR *pNMHDR, LRESULT *pResult)
|
||||
{
|
||||
ShowPage(m_tab.GetCurSel());
|
||||
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
void CConfigDlg::OnOk()
|
||||
{
|
||||
m_dlgCommon.UpdateData();
|
||||
m_dlgUrl.UpdateData();
|
||||
m_dlgProxy.UpdateData();
|
||||
|
||||
COptions::SetOption(OPTION_AUTOCONNECT, m_dlgCommon.m_bAutoConnect);
|
||||
COptions::SetOption(OPTION_SAVEPASSWORD, m_dlgCommon.m_bSavePassword);
|
||||
COptions::SetOption(OPTION_AFTEREXEC, m_dlgCommon.m_nAfterExec);
|
||||
COptions::SetOption(OPTION_SEARCHSUBURL, m_dlgUrl.m_bSearchSub);
|
||||
COptions::SetOption(OPTION_URLTAGTYPE, m_dlgUrl.m_nTag);
|
||||
COptions::SetOption(OPTION_URLSTAG, m_dlgUrl.m_sSTag);
|
||||
COptions::SetOption(OPTION_URLETAG, m_dlgUrl.m_sETag);
|
||||
COptions::SetOption(OPTION_PROXYHOST, m_dlgProxy.m_sHost);
|
||||
COptions::SetOption(OPTION_PROXYPORT, m_dlgProxy.m_sPort);
|
||||
COptions::SetOption(OPTION_USEIEPROXY, m_dlgProxy.m_bUseIEProxy);
|
||||
|
||||
CDialog::OnOK();
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
#pragma once
|
||||
|
||||
#include "ConfigSubDlg.h"
|
||||
#include "ConfigCommonDlg.h"
|
||||
#include "ConfigUrlDlg.h"
|
||||
#include "ConfigProxyDlg.h"
|
||||
#include "GdStatic.h"
|
||||
|
||||
|
||||
// CConfigDlg 대화 상자입니다.
|
||||
|
||||
class CConfigDlg : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CConfigDlg)
|
||||
|
||||
public:
|
||||
CConfigDlg(CWnd* pParent = NULL); // 표준 생성자입니다.
|
||||
virtual ~CConfigDlg();
|
||||
|
||||
// 대화 상자 데이터입니다.
|
||||
enum { IDD = IDD_CONFIG };
|
||||
|
||||
private:
|
||||
typedef struct {
|
||||
UINT nID;
|
||||
CString sCaption;
|
||||
CWnd *pdlg;
|
||||
} CONFIG_PAGE_STRUCT, *PCONFIG_PAGE_STRUCT;
|
||||
|
||||
CConfigCommonDlg m_dlgCommon;
|
||||
CConfigUrlDlg m_dlgUrl;
|
||||
CConfigProxyDlg m_dlgProxy;
|
||||
|
||||
CRect m_rcFrame;
|
||||
|
||||
CPtrArray m_paPage;
|
||||
int m_iPage;
|
||||
|
||||
public:
|
||||
CGdStatic m_stcTitle;
|
||||
CTabCtrl m_tab;
|
||||
|
||||
protected:
|
||||
void AddPage(CConfigSubDlg &dlg, LPCTSTR pszCaption);
|
||||
BOOL ShowPage(int iPage);
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
|
||||
public:
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnSelchangeTb(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
afx_msg void OnOk();
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
@@ -0,0 +1,64 @@
|
||||
// ConfigShProxyDlg.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "ConfigProxyDlg.h"
|
||||
|
||||
|
||||
// CConfigProxyDlg 대화 상자입니다.
|
||||
|
||||
IMPLEMENT_DYNAMIC(CConfigProxyDlg, CDialog)
|
||||
CConfigProxyDlg::CConfigProxyDlg(CWnd* pParent /*=NULL*/)
|
||||
: CConfigSubDlg(CConfigProxyDlg::IDD, pParent)
|
||||
, m_sHost(_T(""))
|
||||
, m_sPort(_T(""))
|
||||
, m_bUseIEProxy(FALSE)
|
||||
{
|
||||
}
|
||||
|
||||
CConfigProxyDlg::~CConfigProxyDlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CConfigProxyDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_EDT_HOST, m_edtHost);
|
||||
DDX_Control(pDX, IDC_EDT_PORT, m_edtPort);
|
||||
DDX_Text(pDX, IDC_EDT_HOST, m_sHost);
|
||||
DDX_Text(pDX, IDC_EDT_PORT, m_sPort);
|
||||
DDX_Check(pDX, IDC_CHK_USE_IEPROXY, m_bUseIEProxy);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CConfigProxyDlg, CDialog)
|
||||
ON_BN_CLICKED(IDC_CHK_USE_IEPROXY, OnUseIeproxy)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CConfigProxyDlg 메시지 처리기입니다.
|
||||
|
||||
BOOL CConfigProxyDlg::OnInitDialog()
|
||||
{
|
||||
CConfigSubDlg::OnInitDialog();
|
||||
|
||||
OnUseIeproxy();
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
|
||||
}
|
||||
|
||||
void CConfigProxyDlg::OnUseIeproxy()
|
||||
{
|
||||
UpdateData(TRUE);
|
||||
|
||||
if (m_bUseIEProxy) {
|
||||
GetDlgItem(IDC_EDT_HOST)->EnableWindow(FALSE);
|
||||
GetDlgItem(IDC_EDT_PORT)->EnableWindow(FALSE);
|
||||
}
|
||||
else {
|
||||
GetDlgItem(IDC_EDT_HOST)->EnableWindow(TRUE);
|
||||
GetDlgItem(IDC_EDT_PORT)->EnableWindow(TRUE);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
#pragma once
|
||||
|
||||
#include "ConfigSubDlg.h"
|
||||
|
||||
// CConfigProxyDlg 대화 상자입니다.
|
||||
|
||||
class CConfigProxyDlg : public CConfigSubDlg
|
||||
{
|
||||
DECLARE_DYNAMIC(CConfigProxyDlg)
|
||||
|
||||
public:
|
||||
CConfigProxyDlg(CWnd* pParent = NULL); // 표준 생성자입니다.
|
||||
virtual ~CConfigProxyDlg();
|
||||
|
||||
// 대화 상자 데이터입니다.
|
||||
enum { IDD = IDD_CONFIG_PROXY };
|
||||
|
||||
public:
|
||||
CEdit m_edtHost;
|
||||
CEdit m_edtPort;
|
||||
|
||||
CString m_sHost;
|
||||
CString m_sPort;
|
||||
BOOL m_bUseIEProxy;
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
|
||||
public:
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnUseIeproxy();
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
@@ -0,0 +1,69 @@
|
||||
// ConfigUrlDlg.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "ConfigUrlDlg.h"
|
||||
|
||||
|
||||
// CConfigUrlDlg 대화 상자입니다.
|
||||
|
||||
IMPLEMENT_DYNAMIC(CConfigUrlDlg, CDialog)
|
||||
CConfigUrlDlg::CConfigUrlDlg(CWnd* pParent /*=NULL*/)
|
||||
: CConfigSubDlg(CConfigUrlDlg::IDD, pParent)
|
||||
, m_bSearchSub(FALSE)
|
||||
, m_nTag(0)
|
||||
, m_sSTag(_T(""))
|
||||
, m_sETag(_T(""))
|
||||
{
|
||||
}
|
||||
|
||||
CConfigUrlDlg::~CConfigUrlDlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CConfigUrlDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_EDT_STAG, m_edtSTag);
|
||||
DDX_Control(pDX, IDC_EDT_ETAG, m_edtETag);
|
||||
DDX_Check(pDX, IDC_CHK_SEARCHSUB, m_bSearchSub);
|
||||
DDX_Radio(pDX, IDC_RDO_TAG1, m_nTag);
|
||||
DDX_Text(pDX, IDC_EDT_STAG, m_sSTag);
|
||||
DDX_Text(pDX, IDC_EDT_ETAG, m_sETag);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CConfigUrlDlg, CDialog)
|
||||
ON_BN_CLICKED(IDC_RDO_TAG1, OnTag)
|
||||
ON_BN_CLICKED(IDC_RDO_TAG2, OnTag)
|
||||
ON_BN_CLICKED(IDC_RDO_TAG3, OnTag)
|
||||
ON_BN_CLICKED(IDC_RDO_TAG4, OnTag)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CConfigUrlDlg 메시지 처리기입니다.
|
||||
|
||||
BOOL CConfigUrlDlg::OnInitDialog()
|
||||
{
|
||||
CConfigSubDlg::OnInitDialog();
|
||||
|
||||
OnTag();
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
|
||||
}
|
||||
|
||||
void CConfigUrlDlg::OnTag()
|
||||
{
|
||||
UpdateData(TRUE);
|
||||
|
||||
if (m_nTag != 3) {
|
||||
GetDlgItem(IDC_EDT_STAG)->EnableWindow(FALSE);
|
||||
GetDlgItem(IDC_EDT_ETAG)->EnableWindow(FALSE);
|
||||
}
|
||||
else {
|
||||
GetDlgItem(IDC_EDT_STAG)->EnableWindow(TRUE);
|
||||
GetDlgItem(IDC_EDT_ETAG)->EnableWindow(TRUE);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
#pragma once
|
||||
|
||||
#include "ConfigSubDlg.h"
|
||||
|
||||
// CConfigUrlDlg 대화 상자입니다.
|
||||
|
||||
class CConfigUrlDlg : public CConfigSubDlg
|
||||
{
|
||||
DECLARE_DYNAMIC(CConfigUrlDlg)
|
||||
|
||||
public:
|
||||
CConfigUrlDlg(CWnd* pParent = NULL); // 표준 생성자입니다.
|
||||
virtual ~CConfigUrlDlg();
|
||||
|
||||
// 대화 상자 데이터입니다.
|
||||
enum { IDD = IDD_CONFIG_URL };
|
||||
|
||||
public:
|
||||
CEdit m_edtSTag;
|
||||
CEdit m_edtETag;
|
||||
|
||||
BOOL m_bSearchSub;
|
||||
int m_nTag;
|
||||
CString m_sSTag;
|
||||
CString m_sETag;
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
|
||||
public:
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnTag();
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
@@ -0,0 +1,141 @@
|
||||
// ConnectDlg.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "ConnectDlg.h"
|
||||
|
||||
#include "ConnectProxyDlg.h"
|
||||
|
||||
|
||||
// CConnectDlg 대화 상자입니다.
|
||||
#define TIMER_ID_FOCUS 1
|
||||
|
||||
IMPLEMENT_DYNAMIC(CConnectDlg, CDialog)
|
||||
CConnectDlg::CConnectDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CConnectDlg::IDD, pParent)
|
||||
, m_sUserId(_T(""))
|
||||
, m_sPassword(_T(""))
|
||||
, m_bAutoConnect(FALSE)
|
||||
, m_bSavePassword(FALSE)
|
||||
{
|
||||
}
|
||||
|
||||
CConnectDlg::~CConnectDlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CConnectDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_STC_LOGO, m_stcLogo);
|
||||
DDX_Text(pDX, IDC_EDT_USERID, m_sUserId);
|
||||
DDX_Text(pDX, IDC_EDT_PASSWORD, m_sPassword);
|
||||
DDX_Check(pDX, IDC_CHK_AUTOCONNECT, m_bAutoConnect);
|
||||
DDX_Check(pDX, IDC_CHK_SAVEPASSWORD, m_bSavePassword);
|
||||
DDX_Control(pDX, IDC_CHK_AUTOCONNECT, m_chkAutoConnect);
|
||||
DDX_Control(pDX, IDC_CHK_SAVEPASSWORD, m_chkSavePassword);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CConnectDlg, CDialog)
|
||||
ON_WM_TIMER()
|
||||
ON_BN_CLICKED(IDC_BTN_PROXY, OnBtnProxy)
|
||||
ON_BN_CLICKED(IDC_CHK_AUTOCONNECT, OnChkAutoconnect)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CConnectDlg 메시지 처리기입니다.
|
||||
|
||||
BOOL CConnectDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// m_stcLogo.SetBitmap(::LoadBitmap(AfxGetInstanceHandle(), (LPCSTR)IDB_LOGO));
|
||||
|
||||
CenterWindow();
|
||||
ShowWindow(SW_SHOW);
|
||||
|
||||
m_nTimer = (UINT)SetTimer(TIMER_ID_FOCUS, 100, 0);
|
||||
CBrush brBkgnd;
|
||||
brBkgnd.CreateSysColorBrush(COLOR_BTNFACE);
|
||||
|
||||
RECT rc;
|
||||
rc.left = rc.top = 0;
|
||||
rc.right = 147;
|
||||
rc.bottom = 61;
|
||||
|
||||
CClientDC cdcSrc(this);
|
||||
CClientDC cdcDst(this);
|
||||
HDC hdcSrc = ::CreateCompatibleDC(cdcSrc.m_hDC);
|
||||
HDC hdcDst = ::CreateCompatibleDC(cdcDst.m_hDC);
|
||||
#ifdef _LGU
|
||||
// 2014.07.16
|
||||
HBITMAP hbmSrc = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_LOGO_LGU));
|
||||
#else //
|
||||
HBITMAP hbmSrc = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_LOGO));
|
||||
#endif //
|
||||
HBITMAP hbmDst = ::CreateCompatibleBitmap(cdcDst.m_hDC, rc.right, rc.bottom);
|
||||
HBITMAP hbmOldSrc = (HBITMAP)SelectObject(hdcSrc, hbmSrc);
|
||||
HBITMAP hbmOldDst = (HBITMAP)SelectObject(hdcDst, hbmDst);
|
||||
|
||||
::FillRect(hdcDst, &rc, brBkgnd);
|
||||
|
||||
TransparentBlt(hdcDst, 0, 0, 144, 36, hdcSrc, 0, 0, 144, 36, RGB(255, 255, 255));
|
||||
|
||||
SelectObject(hdcSrc, hbmOldSrc);
|
||||
SelectObject(hdcDst, hbmOldDst);
|
||||
|
||||
// Attach to Bitmap and Replace image in CImageList
|
||||
m_stcLogo.SetBitmap(hbmDst);
|
||||
|
||||
DeleteDC(hdcSrc);
|
||||
DeleteDC(hdcDst);
|
||||
DeleteObject(hbmSrc);
|
||||
// DeleteObject(hbmDst);
|
||||
|
||||
brBkgnd.DeleteObject();
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
|
||||
}
|
||||
|
||||
void CConnectDlg::OnTimer(UINT nIDEvent)
|
||||
{
|
||||
KillTimer(m_nTimer);
|
||||
m_nTimer = 0;
|
||||
|
||||
if (m_sUserId == "")
|
||||
GetDlgItem(IDC_EDT_USERID)->SetFocus();
|
||||
else if (m_sPassword == "")
|
||||
GetDlgItem(IDC_EDT_PASSWORD)->SetFocus();
|
||||
else
|
||||
GetDlgItem(IDOK)->SetFocus();
|
||||
|
||||
CDialog::OnTimer(nIDEvent);
|
||||
}
|
||||
|
||||
void CConnectDlg::OnOK()
|
||||
{
|
||||
UpdateData(TRUE);
|
||||
|
||||
CDialog::OnOK();
|
||||
}
|
||||
|
||||
void CConnectDlg::OnChkAutoconnect()
|
||||
{
|
||||
if (m_chkAutoConnect.GetCheck() == BST_CHECKED) {
|
||||
m_chkSavePassword.SetCheck(BST_CHECKED);
|
||||
m_chkSavePassword.EnableWindow(FALSE);
|
||||
}
|
||||
else {
|
||||
m_chkSavePassword.EnableWindow(TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
void CConnectDlg::OnBtnProxy()
|
||||
{
|
||||
CConnectProxyDlg dlg;
|
||||
|
||||
dlg.DoModal();
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
#pragma once
|
||||
#include "afxwin.h"
|
||||
|
||||
|
||||
// CConnectDlg 대화 상자입니다.
|
||||
|
||||
class CConnectDlg : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CConnectDlg)
|
||||
|
||||
public:
|
||||
CConnectDlg(CWnd* pParent = NULL); // 표준 생성자입니다.
|
||||
virtual ~CConnectDlg();
|
||||
|
||||
// 대화 상자 데이터입니다.
|
||||
enum { IDD = IDD_CONNECT };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
|
||||
public:
|
||||
CStatic m_stcLogo;
|
||||
CString m_sUserId;
|
||||
CString m_sPassword;
|
||||
BOOL m_bAutoConnect;
|
||||
BOOL m_bSavePassword;
|
||||
CButton m_chkAutoConnect;
|
||||
CButton m_chkSavePassword;
|
||||
|
||||
UINT m_nTimer;
|
||||
|
||||
protected:
|
||||
virtual BOOL OnInitDialog();
|
||||
virtual void OnOK();
|
||||
|
||||
public:
|
||||
afx_msg void OnTimer(UINT nIDEvent);
|
||||
afx_msg void OnChkAutoconnect();
|
||||
afx_msg void OnBtnProxy();
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
@@ -0,0 +1,62 @@
|
||||
// ConnectProxyDlg.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "ConnectProxyDlg.h"
|
||||
|
||||
|
||||
// CConnectProxyDlg 대화 상자입니다.
|
||||
|
||||
IMPLEMENT_DYNAMIC(CConnectProxyDlg, CDialog)
|
||||
CConnectProxyDlg::CConnectProxyDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CConnectProxyDlg::IDD, pParent)
|
||||
{
|
||||
}
|
||||
|
||||
CConnectProxyDlg::~CConnectProxyDlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CConnectProxyDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CConnectProxyDlg, CDialog)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CConnectProxyDlg 메시지 처리기입니다.
|
||||
|
||||
BOOL CConnectProxyDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
m_dlg.Create(IDD_CONFIG_PROXY, this);
|
||||
|
||||
m_dlg.m_sHost = COptions::GetOption(OPTION_PROXYHOST);
|
||||
m_dlg.m_sPort = COptions::GetOption(OPTION_PROXYPORT);
|
||||
m_dlg.m_bUseIEProxy = COptions::GetOptionVal(OPTION_USEIEPROXY);
|
||||
m_dlg.UpdateData(FALSE);
|
||||
|
||||
m_dlg.OnInitDialog();
|
||||
m_dlg.MoveWindow(0, 0, 250, 130);
|
||||
m_dlg.ShowWindow(SW_SHOW);
|
||||
m_dlg.RedrawWindow();
|
||||
m_dlg.SetFocus();
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
|
||||
}
|
||||
|
||||
void CConnectProxyDlg::OnOK()
|
||||
{
|
||||
m_dlg.UpdateData(TRUE);
|
||||
COptions::SetOption(OPTION_PROXYHOST, m_dlg.m_sHost);
|
||||
COptions::SetOption(OPTION_PROXYPORT, m_dlg.m_sPort);
|
||||
COptions::SetOption(OPTION_USEIEPROXY, m_dlg.m_bUseIEProxy);
|
||||
|
||||
CDialog::OnOK();
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
#pragma once
|
||||
|
||||
#include "ConfigSubDlg.h"
|
||||
#include "ConfigProxyDlg.h"
|
||||
|
||||
|
||||
// CConnectProxyDlg 대화 상자입니다.
|
||||
|
||||
class CConnectProxyDlg : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CConnectProxyDlg)
|
||||
|
||||
public:
|
||||
CConnectProxyDlg(CWnd* pParent = NULL); // 표준 생성자입니다.
|
||||
virtual ~CConnectProxyDlg();
|
||||
|
||||
// 대화 상자 데이터입니다.
|
||||
enum { IDD = IDD_CONNECT_PROXY };
|
||||
protected:
|
||||
CConfigProxyDlg m_dlg;
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
virtual BOOL OnInitDialog();
|
||||
protected:
|
||||
virtual void OnOK();
|
||||
};
|
||||
@@ -0,0 +1,411 @@
|
||||
// SPConsole.cpp : 응용 프로그램에 대한 클래스 동작을 정의합니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "MainFrm.h"
|
||||
|
||||
#include "CustomControlSite.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#endif
|
||||
|
||||
|
||||
// CSPConsoleApp
|
||||
|
||||
BEGIN_MESSAGE_MAP(CSPConsoleApp, CWinApp)
|
||||
ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CSPConsoleApp 생성
|
||||
|
||||
CSPConsoleApp::CSPConsoleApp()
|
||||
{
|
||||
m_pimpldisp = NULL;
|
||||
}
|
||||
|
||||
CSPConsoleApp::~CSPConsoleApp()
|
||||
{
|
||||
if (m_pimpldisp)
|
||||
delete m_pimpldisp;
|
||||
}
|
||||
|
||||
|
||||
// 유일한 CSPConsoleApp 개체입니다.
|
||||
|
||||
CSPConsoleApp theApp;
|
||||
|
||||
// CSPConsoleApp 초기화
|
||||
|
||||
BOOL CSPConsoleApp::InitInstance()
|
||||
{
|
||||
// 응용 프로그램 매니페스트가 ComCtl32.dll 버전 6 이상을 사용하여 비주얼 스타일을
|
||||
// 사용하도록 지정하는 경우, Windows XP 상에서 반드시 InitCommonControls()가 필요합니다.
|
||||
// InitCommonControls()를 사용하지 않으면 창을 만들 수 없습니다.
|
||||
InitCommonControls();
|
||||
|
||||
CWinApp::InitInstance();
|
||||
|
||||
// OLE 라이브러리를 초기화합니다.
|
||||
if (!AfxOleInit()) {
|
||||
AfxMessageBox(IDP_OLE_INIT_FAILED);
|
||||
return FALSE;
|
||||
}
|
||||
AfxEnableControlContainer();
|
||||
|
||||
CCustomOccManager *poccmgr = new CCustomOccManager;
|
||||
m_pimpldisp = new CImpIDispatch;
|
||||
AfxEnableControlContainer(poccmgr);
|
||||
|
||||
CString strCmd = m_lpCmdLine;
|
||||
|
||||
if (strCmd.IsEmpty())
|
||||
{
|
||||
char szPath[MAX_PATH]={0};
|
||||
GetCurrentPath(szPath);
|
||||
CString strPath;
|
||||
|
||||
strPath.Format("%s\\SP-Updater.exe",szPath);
|
||||
#ifndef _DEBUG
|
||||
ShellExecute(NULL,"open",strPath,NULL,NULL,SW_SHOW);
|
||||
return FALSE;
|
||||
#endif
|
||||
}
|
||||
|
||||
HANDLE hMutex;
|
||||
do
|
||||
{
|
||||
hMutex = ::CreateMutex(NULL, TRUE, _T("SP-UpdaterXXXXXXXXXXXXXXX"));
|
||||
}while(GetLastError() == ERROR_ALREADY_EXISTS);
|
||||
|
||||
CloseHandle(hMutex);
|
||||
|
||||
// 업데이터 업데이트 - 업데이터에 의해 실행되는 경우 뿐이다.
|
||||
if (strCmd == "1")
|
||||
{
|
||||
char szPath[MAX_PATH]={0};
|
||||
GetCurrentPath(szPath);
|
||||
CString strSrcPath;
|
||||
CString strDesPath;
|
||||
strSrcPath.Format("%s\\update\\SP-Updater.exe",szPath);
|
||||
strDesPath.Format("%s\\SP-Updater.exe",szPath);
|
||||
|
||||
if(CopyFile(strSrcPath,strDesPath,FALSE))
|
||||
DeleteFile(strSrcPath);
|
||||
}
|
||||
|
||||
char szPath[MAX_PATH]={0};
|
||||
GetCurrentPath(szPath);
|
||||
CString strPath;
|
||||
strPath.Format(_T("%s\\%s"),szPath,CFG_FILENAME);
|
||||
COptions::Init(strPath);
|
||||
|
||||
CMainFrame* pFrame = new CMainFrame;
|
||||
if (!pFrame)
|
||||
return FALSE;
|
||||
|
||||
m_pMainWnd = pFrame;
|
||||
if (pFrame->LoadFrame(IDR_MAINFRAME, WS_OVERLAPPEDWINDOW, NULL, NULL)) {
|
||||
pFrame->ShowWindow(SW_SHOW);
|
||||
pFrame->UpdateWindow();
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
AfxCheckMemory();
|
||||
#endif
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
// CSPConsoleApp 메시지 처리기
|
||||
|
||||
|
||||
|
||||
// 응용 프로그램 정보에 사용되는 CAboutDlg 대화 상자입니다.
|
||||
|
||||
class CAboutDlg : public CDialog
|
||||
{
|
||||
public:
|
||||
CAboutDlg();
|
||||
|
||||
// 대화 상자 데이터
|
||||
enum { IDD = IDD_ABOUTBOX };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원
|
||||
|
||||
// 구현
|
||||
protected:
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
virtual BOOL OnInitDialog();
|
||||
};
|
||||
|
||||
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
|
||||
{
|
||||
}
|
||||
|
||||
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
}
|
||||
|
||||
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
// 대화 상자를 실행하기 위한 응용 프로그램 명령입니다.
|
||||
void CSPConsoleApp::OnAppAbout()
|
||||
{
|
||||
CAboutDlg aboutDlg;
|
||||
aboutDlg.DoModal();
|
||||
}
|
||||
|
||||
|
||||
// CSPConsoleApp 메시지 처리기
|
||||
|
||||
|
||||
|
||||
// 사용자 정의 함수
|
||||
CString GetErrorMessage(DWORD dwError)
|
||||
{
|
||||
CString sError;
|
||||
LPVOID lpBuffer;
|
||||
|
||||
if (!FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||
NULL, dwError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpBuffer, 0, NULL))
|
||||
sError = "알 수 없는 오류입니다.";
|
||||
else
|
||||
sError = (LPCTSTR)lpBuffer;
|
||||
|
||||
LocalFree(lpBuffer);
|
||||
|
||||
return sError;
|
||||
}
|
||||
|
||||
BOOL DeleteDirectory(CString sDirectory)
|
||||
{
|
||||
/*
|
||||
// no UI
|
||||
if (sDirectory.Right(1) != _T("\\"))
|
||||
sDirectory += _T("\\");
|
||||
|
||||
sDirectory += _T("*");
|
||||
|
||||
CFileFind finder;
|
||||
|
||||
BOOL bFound = finder.FindFile(sDirectory);
|
||||
while (bFound) {
|
||||
bFound = finder.FindNextFile();
|
||||
|
||||
if (finder.IsDots())
|
||||
continue;
|
||||
|
||||
if (finder.IsDirectory()) {
|
||||
if (!DeleteDirectory(finder.GetFilePath()))
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
if (!DeleteFile(finder.GetFilePath()))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
finder.Close();
|
||||
|
||||
sDirectory = sDirectory.Left(sDirectory.ReverseFind('\\'));
|
||||
RemoveDirectory(sDirectory);
|
||||
|
||||
return true;
|
||||
*/
|
||||
// UI
|
||||
if (sDirectory.Right(1) == _T("\\"))
|
||||
sDirectory.Delete(sDirectory.GetLength());
|
||||
|
||||
char szPath[MAX_PATH];
|
||||
|
||||
ZeroMemory(szPath, sizeof(szPath));
|
||||
CopyMemory(szPath, sDirectory, sDirectory.GetLength());
|
||||
|
||||
SHFILEOPSTRUCT shfo = {0};
|
||||
shfo.hwnd = NULL;
|
||||
shfo.wFunc = FO_DELETE;
|
||||
shfo.pFrom = szPath;
|
||||
shfo.pTo = NULL;
|
||||
shfo.fFlags = FOF_NOCONFIRMATION | FOF_NOERRORUI;
|
||||
shfo.fAnyOperationsAborted = false;
|
||||
shfo.hNameMappings = NULL;
|
||||
shfo.lpszProgressTitle = NULL;
|
||||
|
||||
return SHFileOperation(&shfo) == 0;
|
||||
}
|
||||
|
||||
int KrCompare(LPCTSTR pszText1, LPCTSTR pszText2)
|
||||
{
|
||||
int nLen = (int)strlen(pszText1);
|
||||
|
||||
PBYTE pbyText1 = (PBYTE)pszText1;
|
||||
PBYTE pbyText2 = (PBYTE)pszText2;
|
||||
|
||||
BOOL bText1Alpha, bText2Alpha;
|
||||
for (int i = 0; i < nLen; i++) {
|
||||
if (pbyText2[i] == NULL)
|
||||
return 1;
|
||||
|
||||
if (pbyText1[i] == pbyText2[i])
|
||||
continue;
|
||||
|
||||
bText1Alpha = isalpha(pbyText1[i]);
|
||||
bText2Alpha = isalpha(pbyText2[i]);
|
||||
|
||||
if (!bText1Alpha && bText2Alpha)
|
||||
return -1;
|
||||
|
||||
if (bText1Alpha && !bText2Alpha)
|
||||
return 1;
|
||||
|
||||
if (pbyText1[i] < pbyText2[i])
|
||||
return -1;
|
||||
|
||||
if (pbyText1[i] > pbyText2[i])
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (pbyText2[nLen] != NULL)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
CString NumericFormat(__int64 nNumeric)
|
||||
{
|
||||
CString sNumeric;
|
||||
sNumeric.Format("%I64d", nNumeric);
|
||||
|
||||
int nStartPos = sNumeric.GetLength();
|
||||
for (int i = nStartPos, j = 0; i > 0; i--, j++) {
|
||||
if (i != nStartPos && (j % 3) == 0)
|
||||
sNumeric.Insert(i, ',');
|
||||
}
|
||||
|
||||
return sNumeric;
|
||||
}
|
||||
|
||||
CString NumericFormatWithPoint(long double nNumeric)
|
||||
{
|
||||
CString sNumeric;
|
||||
sNumeric.Format("%.2f", nNumeric);
|
||||
|
||||
int nStartPos = sNumeric.Find('.');
|
||||
for (int i = nStartPos, j = 0; i > 0; i--, j++) {
|
||||
if (i != nStartPos && (j % 3) == 0)
|
||||
sNumeric.Insert(i, ',');
|
||||
}
|
||||
|
||||
return sNumeric;
|
||||
}
|
||||
|
||||
CString BYTE2KMBYTE(__int64 nBytes, int nFlag, bool bShowDecimalPoint)
|
||||
{
|
||||
CString sValue;
|
||||
|
||||
char* szUnit[] = {"Bytes", "KB", "MB", "GB", "TB", "PT"};
|
||||
|
||||
if (nFlag == 0) {
|
||||
for (nFlag = 5; nFlag > 0; nFlag--)
|
||||
if (((UINT64)nBytes >> (nFlag * 10)) >= 1)
|
||||
break;
|
||||
}
|
||||
|
||||
double nPow = pow(1024.0, (double)nFlag);
|
||||
if (bShowDecimalPoint && nFlag > 0)
|
||||
sValue = NumericFormatWithPoint((long double)nBytes / nPow) + szUnit[nFlag];
|
||||
else
|
||||
sValue = NumericFormat((__int64)ceil((long double)nBytes / nPow)) + szUnit[nFlag];
|
||||
|
||||
return sValue;
|
||||
}
|
||||
|
||||
CString GetValidFileName(LPCTSTR pszFileName)
|
||||
{
|
||||
CString sFileName = pszFileName;
|
||||
|
||||
if (sFileName.Find('/') >= 0 || sFileName.Find('\\') >= 0 || sFileName.Find(':') >= 0
|
||||
|| sFileName.Find('*') >= 0 || sFileName.Find('?') >= 0 || sFileName.Find('"') >= 0
|
||||
|| sFileName.Find('<') >= 0 || sFileName.Find('>') >= 0 || sFileName.Find('|') >= 0) {
|
||||
AfxMessageBox("파일명에 다음과 같은 문자가 올 수 없습니다:\n/ \\ : * ? \" < > |", MB_ICONEXCLAMATION);
|
||||
return "";
|
||||
}
|
||||
sFileName.Trim();
|
||||
|
||||
return sFileName;
|
||||
}
|
||||
|
||||
bool IsPathItself(CString sSrcPath, CString sDstPath)
|
||||
{
|
||||
int nSrcLen = sSrcPath.GetLength();
|
||||
if (nSrcLen > sDstPath.GetLength())
|
||||
return false;
|
||||
|
||||
// 2012-05-21 trozan
|
||||
// 상위 디렉토리를 하위 디렉토리로 이동 되는 버그 수정
|
||||
int iPos = sDstPath.Find(sSrcPath);
|
||||
if(iPos == 0)
|
||||
return true;
|
||||
|
||||
iPos = sDstPath.Find(nSrcLen, '/');
|
||||
if (iPos > 0)
|
||||
sDstPath = sDstPath.Left(iPos);
|
||||
|
||||
return sSrcPath == sDstPath;
|
||||
}
|
||||
|
||||
bool WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite)
|
||||
{
|
||||
DWORD dwWritten;
|
||||
while (nNumberOfBytesToWrite > 0) {
|
||||
if (!WriteFile(hFile, lpBuffer, nNumberOfBytesToWrite, &dwWritten, NULL))
|
||||
return false;
|
||||
|
||||
nNumberOfBytesToWrite -= dwWritten;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int GetCurrentPath(char* pszPath)
|
||||
{
|
||||
char szPath[MAX_PATH*2]={0};
|
||||
char* pData;
|
||||
|
||||
GetModuleFileName(NULL,szPath,MAX_PATH);
|
||||
|
||||
pData = strrchr(szPath,'\\');
|
||||
|
||||
__w64 int len = pData-szPath;
|
||||
strncpy(pszPath,szPath,len);
|
||||
pszPath[len] = 0; //cause wcsncpy does not appent null character
|
||||
return (int)len;
|
||||
}
|
||||
|
||||
#include "VERSION_INFO.h"
|
||||
BOOL CAboutDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// TODO: 여기에 추가 초기화 작업을 추가합니다.
|
||||
|
||||
// 2014.07.16
|
||||
CString strAbout;
|
||||
strAbout.Format("SP-Console Version %s", STRFILEVER);
|
||||
GetDlgItem(IDC_STATIC_ABOUT)->SetWindowText(strAbout);
|
||||
#ifdef _LGU
|
||||
GetDlgItem(IDC_STATIC_COPYRIGHT)->SetWindowText("Copyright (C) LG Uplus Corporation All rights reserved");
|
||||
#else //
|
||||
GetDlgItem(IDC_STATIC_COPYRIGHT)->SetWindowText("Copyright (C) KT Corporation All rights reserved ");
|
||||
#endif //
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
// SPConsole.h : SPConsole 응용 프로그램에 대한 주 헤더 파일
|
||||
//
|
||||
#pragma once
|
||||
|
||||
#ifndef __AFXWIN_H__
|
||||
#error PCH에서 이 파일을 포함하기 전에 'stdafx.h'를 포함하십시오.
|
||||
#endif
|
||||
|
||||
#include "resource.h" // 주 기호
|
||||
|
||||
#define WM_CANCEL_GETLIST WM_USER + 20
|
||||
#define WM_CANCEL_MAKETREE WM_USER + 21
|
||||
|
||||
// CSPConsoleApp:
|
||||
// 이 클래스의 구현에 대해서는 SPConsole.cpp을 참조하십시오.
|
||||
//
|
||||
int GetCurrentPath(char* pszPath);
|
||||
|
||||
class CSPConsoleApp : public CWinApp
|
||||
{
|
||||
public:
|
||||
CSPConsoleApp();
|
||||
~CSPConsoleApp();
|
||||
|
||||
public:
|
||||
class CImpIDispatch* m_pimpldisp;
|
||||
|
||||
CString m_sAppPath;
|
||||
|
||||
// 재정의
|
||||
public:
|
||||
virtual BOOL InitInstance();
|
||||
|
||||
// 구현
|
||||
|
||||
public:
|
||||
afx_msg void OnAppAbout();
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
extern CSPConsoleApp theApp;
|
||||
@@ -0,0 +1,718 @@
|
||||
// Microsoft Visual C++ generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "afxres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// 한국어(대한민국) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)
|
||||
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
|
||||
#pragma code_page(949)
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#define _AFX_NO_SPLITTER_RESOURCES\r\n"
|
||||
"#define _AFX_NO_OLE_RESOURCES\r\n"
|
||||
"#define _AFX_NO_TRACKER_RESOURCES\r\n"
|
||||
"#define _AFX_NO_PROPERTY_RESOURCES\r\n"
|
||||
"\r\n"
|
||||
"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)\r\n"
|
||||
"LANGUAGE 18, 1\r\n"
|
||||
"#pragma code_page(949)\r\n"
|
||||
"#include ""res\\ConsoleApp.rc2"" // Microsoft Visual C++에서 편집되지 않은 리소스\r\n"
|
||||
"#include ""afxres.rc"" // 표준 구성 요소\r\n"
|
||||
"#endif\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// RT_MANIFEST
|
||||
//
|
||||
|
||||
1 RT_MANIFEST "res\\ConsoleApp.manifest"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDI_SORT_NONE ICON "res\\SortNone.ico"
|
||||
IDI_SORT_ASC ICON "res\\SortAsc.ico"
|
||||
IDI_SORT_DESC ICON "res\\SortDesc.ico"
|
||||
IDI_ANONY_FOLDER ICON "res\\AnonyFolder.ico"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// GIF
|
||||
//
|
||||
|
||||
IDR_ADVERT GIF "res\\Advert.gif"
|
||||
IDR_WAIT GIF "res\\Wait.gif"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Menu
|
||||
//
|
||||
|
||||
IDR_MAINFRAME MENU
|
||||
BEGIN
|
||||
POPUP "파일(&F)"
|
||||
BEGIN
|
||||
MENUITEM "다시 접속\tCtrl+R", ID_FILE_RECONNECT
|
||||
MENUITEM "접속 끊기\tCtrl+X", ID_FILE_DISCONNECT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "올리기", ID_FILE_UPLOAD
|
||||
MENUITEM "내리기", ID_FILE_DOWNLOAD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "종료(&X)", ID_APP_EXIT
|
||||
END
|
||||
POPUP "보기(&V)"
|
||||
BEGIN
|
||||
MENUITEM "툴바", ID_VIEW_TOOLBAR
|
||||
MENUITEM "가운데 툴바", ID_VIEW_MID_TOOLBAR
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "새로고침", ID_VIEW_REFRESH
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "서버 트리", ID_VIEW_RTREE
|
||||
POPUP "서버 리스트"
|
||||
BEGIN
|
||||
MENUITEM "큰 아이콘", ID_VIEW_RLIST_TYPE1
|
||||
MENUITEM "아이콘", ID_VIEW_RLIST_TYPE2
|
||||
MENUITEM "간단히", ID_VIEW_RLIST_TYPE3
|
||||
MENUITEM "자세히", ID_VIEW_RLIST_TYPE4
|
||||
END
|
||||
MENUITEM "서버 상태바", ID_VIEW_RSTATUS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "로컬 트리", ID_VIEW_LTREE
|
||||
POPUP "로컬 리스트"
|
||||
BEGIN
|
||||
MENUITEM "미리보기", ID_VIEW_LLIST_TYPE0
|
||||
MENUITEM "큰 아이콘", ID_VIEW_LLIST_TYPE1
|
||||
MENUITEM "아이콘", ID_VIEW_LLIST_TYPE2
|
||||
MENUITEM "간단히", ID_VIEW_LLIST_TYPE3
|
||||
MENUITEM "자세히", ID_VIEW_LLIST_TYPE4
|
||||
END
|
||||
MENUITEM "로컬 상태바", ID_VIEW_LSTATUS
|
||||
END
|
||||
POPUP "설정(&S)"
|
||||
BEGIN
|
||||
POPUP "덮어쓰기 설정"
|
||||
BEGIN
|
||||
MENUITEM "물어보기", ID_CFG_OVERWITE_ASK
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "덮어쓰기", ID_CFG_OVERWITE1
|
||||
MENUITEM "이어받기", ID_CFG_OVERWITE2
|
||||
MENUITEM "이름변경", ID_CFG_OVERWITE3
|
||||
MENUITEM "건너뛰기", ID_CFG_OVERWITE4
|
||||
END
|
||||
MENUITEM "설정\tCtrl+O", ID_CFG_CONFIG
|
||||
END
|
||||
POPUP "도움말(&H)"
|
||||
BEGIN
|
||||
MENUITEM "도움말(&H)", ID_HELP_HELP
|
||||
MENUITEM "SP-Console 홈페이지(&G)", ID_HELP_HOMEPAGE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "SP-Console 정보(&A)", ID_APP_ABOUT
|
||||
END
|
||||
END
|
||||
|
||||
IDR_POP_LLIST MENU
|
||||
BEGIN
|
||||
POPUP "LIST"
|
||||
BEGIN
|
||||
MENUITEM "새 폴더", ID_LIST_NEWFOLDER
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "새로고침", ID_LIST_REFRESH
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "보기"
|
||||
BEGIN
|
||||
MENUITEM "미리보기", ID_LIST_TYPE0
|
||||
MENUITEM "큰 아이콘", 32891
|
||||
MENUITEM "아이콘", 32892
|
||||
MENUITEM "간단히", 32893
|
||||
MENUITEM "자세히", 32894
|
||||
END
|
||||
POPUP "정렬순서"
|
||||
BEGIN
|
||||
MENUITEM "이름", ID_LIST_SORT1
|
||||
MENUITEM "크기", ID_LIST_SORT2
|
||||
MENUITEM "형식", ID_LIST_SORT3
|
||||
MENUITEM "최종수정일", ID_LIST_SORT4
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "붙여넣기", ID_LIST_PASTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "모두선택", ID_LIST_ALL
|
||||
END
|
||||
END
|
||||
|
||||
IDR_POP_RTREE MENU
|
||||
BEGIN
|
||||
POPUP "TREE"
|
||||
BEGIN
|
||||
MENUITEM "잘라내기", ID_TREE_CUT
|
||||
MENUITEM "붙여넣기", ID_TREE_PASTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "삭제", ID_TREE_DELETE
|
||||
MENUITEM "이름 바꾸기", ID_TREE_RENAME
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "무인증 설정", ID_TREE_SETANONY
|
||||
MENUITEM "무인증 해제", ID_TREE_UNSETANONY
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "속성", ID_TREE_INFO
|
||||
END
|
||||
END
|
||||
|
||||
IDR_POP_RLISTFILE MENU
|
||||
BEGIN
|
||||
POPUP "LIST"
|
||||
BEGIN
|
||||
MENUITEM "다운로드", ID_LISTFILE_DOWNLOAD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "URL을 파일로 저장하기", ID_LISTFILE_SAVEURL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "잘라내기", ID_LISTFILE_CUT
|
||||
MENUITEM "붙여넣기", ID_LISTFILE_PASTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "삭제", ID_LISTFILE_DELETE
|
||||
MENUITEM "이름 바꾸기", ID_LISTFILE_RENAME
|
||||
END
|
||||
END
|
||||
|
||||
IDR_POP_RLIST MENU
|
||||
BEGIN
|
||||
POPUP "LIST"
|
||||
BEGIN
|
||||
MENUITEM "새 폴더", ID_LIST_NEWFOLDER
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "새로고침", ID_LIST_REFRESH
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "보기"
|
||||
BEGIN
|
||||
MENUITEM "큰 아이콘", ID_LIST_TYPE1
|
||||
MENUITEM "아이콘", ID_LIST_TYPE2
|
||||
MENUITEM "간단히", ID_LIST_TYPE3
|
||||
MENUITEM "자세히", ID_LIST_TYPE4
|
||||
END
|
||||
POPUP "정렬순서"
|
||||
BEGIN
|
||||
MENUITEM "이름", ID_LIST_SORT1
|
||||
MENUITEM "크기", ID_LIST_SORT2
|
||||
MENUITEM "형식", ID_LIST_SORT3
|
||||
MENUITEM "최종수정일", ID_LIST_SORT4
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "붙여넣기", ID_LIST_PASTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "모두선택", ID_LIST_ALL
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Accelerator
|
||||
//
|
||||
|
||||
IDR_MAINFRAME ACCELERATORS
|
||||
BEGIN
|
||||
"O", ID_CFG_CONFIG, VIRTKEY, CONTROL, NOINVERT
|
||||
"X", ID_FILE_DISCONNECT, VIRTKEY, CONTROL, NOINVERT
|
||||
"R", ID_FILE_RECONNECT, VIRTKEY, CONTROL, NOINVERT
|
||||
VK_F5, ID_VIEW_REFRESH, VIRTKEY, NOINVERT
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO
|
||||
BEGIN
|
||||
IDD_VOLUME_INFO, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 223
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 122
|
||||
END
|
||||
|
||||
IDD_REMOTE_VIEW, DIALOG
|
||||
BEGIN
|
||||
RIGHTMARGIN, 37
|
||||
END
|
||||
|
||||
IDD_CONNECT_PROXY, DIALOG
|
||||
BEGIN
|
||||
BOTTOMMARGIN, 104
|
||||
END
|
||||
|
||||
IDD_CONNECT, DIALOG
|
||||
BEGIN
|
||||
END
|
||||
|
||||
IDD_CONFIG_COMMON, DIALOG
|
||||
BEGIN
|
||||
BOTTOMMARGIN, 132
|
||||
END
|
||||
|
||||
IDD_CONFIG, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 203
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 192
|
||||
END
|
||||
|
||||
IDD_ABOUTBOX, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 189
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 48
|
||||
END
|
||||
|
||||
IDD_BANDWIDTH, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 163
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 58
|
||||
END
|
||||
|
||||
IDD_VOLUME_INFO1, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 223
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 122
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_WAITMESSAGE DIALOGEX 0, 0, 193, 67
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
CONTROL "",IDC_PICTURE,"Static",SS_BLACKRECT,11,9,32,34,WS_EX_TRANSPARENT
|
||||
LTEXT "처리중 입니다.",IDC_STC2,53,9,130,8
|
||||
LTEXT "잠시만 기다려 주시기 바랍니다.",IDC_STC3,53,20,130,8
|
||||
LTEXT "",IDC_STC,53,36,130,8
|
||||
CONTROL "",IDC_PROGRESS1,"msctls_progress32",WS_BORDER,11,52,130,8
|
||||
PUSHBUTTON "취소",IDC_CANCEL_BTN,145,50,37,13
|
||||
END
|
||||
|
||||
IDD_VOLUME_INFO DIALOGEX 0, 0, 230, 129
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION
|
||||
CAPTION "서비스정보"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "확인",IDOK,173,108,50,14
|
||||
ICON "",IDC_STC_ICON,7,7,20,20
|
||||
LTEXT "종류 :",IDC_STATIC,7,39,22,8
|
||||
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,33,216,1
|
||||
LTEXT "Static",IDC_STC_TYPE,35,39,188,8
|
||||
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,52,216,1
|
||||
LTEXT "사용 중인 공간 :",IDC_STC_USETITLE,7,58,58,8
|
||||
LTEXT "사용 가능한 공간 :",IDC_STC_FREETITLE,7,70,66,8
|
||||
RTEXT "Static",IDC_STC_USESPACE,76,58,98,8
|
||||
RTEXT "999,999,999,999,999바이트",IDC_STC_FREESPACE,76,70,98,8
|
||||
RTEXT "Static",IDC_STC_USESPACET,184,58,37,8
|
||||
RTEXT "999.999TB",IDC_STC_FREESPACET,184,70,37,8
|
||||
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,83,216,1
|
||||
RTEXT "999,999,999,999,999바이트",IDC_STC_TOTALSPACE,76,88,98,8
|
||||
RTEXT "999.999TB",IDC_STC_TOTALSPACET,184,88,37,8
|
||||
EDITTEXT IDC_EDT_TITLE,37,12,186,12,ES_AUTOHSCROLL | ES_READONLY
|
||||
LTEXT "전체 :",IDC_STC_TOTALTITLE,7,88,22,8
|
||||
END
|
||||
|
||||
IDD_REMOTE_VIEW DIALOGEX 0, 0, 49, 12
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
CONTROL "",IDC_REMOTE_TREE,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | TVS_EDITLABELS | TVS_SHOWSELALWAYS | TVS_TRACKSELECT | WS_BORDER | WS_TABSTOP,15,0,20,12
|
||||
CONTROL "",IDC_REMOTE_LIST,"SysListView32",LVS_SHOWSELALWAYS | LVS_SHAREIMAGELISTS | LVS_EDITLABELS | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,35,0,13,12
|
||||
CONTROL "",IDC_REMOTE_CBO_ADDR,"ComboBoxEx32",CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP,0,0,16,189
|
||||
END
|
||||
|
||||
IDD_CONNECT_PROXY DIALOGEX 0, 0, 134, 105
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "프락시 설정"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "확인",IDOK,42,85,40,14
|
||||
PUSHBUTTON "취소",IDCANCEL,87,85,40,14
|
||||
END
|
||||
|
||||
IDD_CONNECT DIALOGEX 0, 0, 238, 92
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "접속"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "접속",IDOK,32,70,50,14
|
||||
PUSHBUTTON "닫기",IDCANCEL,93,70,50,14
|
||||
LTEXT "아이디",IDC_STATIC,113,13,25,8
|
||||
LTEXT "비밀번호",IDC_STATIC,113,29,33,8
|
||||
EDITTEXT IDC_EDT_USERID,151,11,77,12,ES_AUTOHSCROLL
|
||||
EDITTEXT IDC_EDT_PASSWORD,151,27,77,12,ES_PASSWORD | ES_AUTOHSCROLL
|
||||
CONTROL "자동접속",IDC_CHK_AUTOCONNECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,113,46,45,10
|
||||
CONTROL "비밀번호저장",IDC_CHK_SAVEPASSWORD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,170,46,62,10
|
||||
PUSHBUTTON "프락시설정",IDC_BTN_PROXY,154,70,50,14
|
||||
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,9,62,224,1
|
||||
CONTROL "",IDC_STC_LOGO,"Static",SS_BITMAP,10,12,15,13,WS_EX_TRANSPARENT
|
||||
END
|
||||
|
||||
IDD_CONFIG_PROXY DIALOGEX 0, 0, 196, 133
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
EDITTEXT IDC_EDT_HOST,9,19,96,12,ES_AUTOHSCROLL
|
||||
EDITTEXT IDC_EDT_PORT,9,46,96,12,ES_AUTOHSCROLL
|
||||
CONTROL "Internet Explorer 설정 사용",IDC_CHK_USE_IEPROXY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,9,66,166,10
|
||||
LTEXT "호스트 :",IDC_STATIC,9,9,30,8
|
||||
LTEXT "포트 :",IDC_STATIC,9,36,22,8
|
||||
LTEXT "변경된 설정은 다음 프로그램 시작시부터 적용 됩니다.",IDC_STATIC,9,82,148,16
|
||||
END
|
||||
|
||||
IDD_CONFIG_COMMON DIALOGEX 0, 0, 196, 134
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
LTEXT "전송 후 실행",IDC_STATIC,9,51,45,8
|
||||
COMBOBOX IDC_CBO_AFTEREXEC,57,49,112,123,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
CONTROL "비밀번호 저장",IDC_CHK_SAVEPASSWORD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,111,23,67,8
|
||||
GROUPBOX "로그인",IDC_STATIC,10,10,175,28
|
||||
CONTROL "자동접속",IDC_CHK_AUTOCONNECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,23,59,8
|
||||
END
|
||||
|
||||
IDD_CONFIG DIALOGEX 0, 0, 210, 199
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION
|
||||
CAPTION "SP-Console 설정"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "확인",IDOK,98,177,50,14
|
||||
PUSHBUTTON "취소",IDCANCEL,153,177,50,14
|
||||
CONTROL "",IDC_TAB,"SysTabControl32",TCS_FOCUSONBUTTONDOWN,7,24,196,146
|
||||
LTEXT "Static",IDC_STC_TITLE,7,7,196,12
|
||||
END
|
||||
|
||||
IDD_ABOUTBOX DIALOGEX 0, 0, 225, 53
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "SP-Console 정보"
|
||||
FONT 9, "MS Shell Dlg", 0, 0, 0x1
|
||||
BEGIN
|
||||
ICON 128,IDC_STATIC,8,8,20,20
|
||||
LTEXT "About",IDC_STATIC_ABOUT,35,7,181,8,SS_NOPREFIX
|
||||
LTEXT "Copyright",IDC_STATIC_COPYRIGHT,35,20,180,8
|
||||
DEFPUSHBUTTON "확인",IDOK,181,34,37,14,WS_GROUP
|
||||
END
|
||||
|
||||
IDD_CONFIG_URL DIALOGEX 0, 0, 196, 134
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
CONTROL "하위폴더 검색",IDC_CHK_SEARCHSUB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,11,66,10
|
||||
GROUPBOX "태그",IDC_STATIC,10,25,175,93
|
||||
CONTROL "태그 사용 안함",IDC_RDO_TAG1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,21,40,68,10
|
||||
CONTROL "<img 태그 사용",IDC_RDO_TAG2,"Button",BS_AUTORADIOBUTTON,21,54,68,10
|
||||
CONTROL "<a href 태그 사용",IDC_RDO_TAG3,"Button",BS_AUTORADIOBUTTON,21,68,77,10
|
||||
CONTROL "Custom 태그 사용",IDC_RDO_TAG4,"Button",BS_AUTORADIOBUTTON,21,82,76,10
|
||||
EDITTEXT IDC_EDT_STAG,33,95,69,12,ES_AUTOHSCROLL
|
||||
LTEXT "URL",IDC_STATIC,105,96,14,8
|
||||
EDITTEXT IDC_EDT_ETAG,119,95,52,12,ES_AUTOHSCROLL
|
||||
END
|
||||
|
||||
IDD_BANDWIDTH DIALOGEX 0, 0, 170, 65
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Bandwidth 설정"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "확인",IDOK,55,44,50,14
|
||||
PUSHBUTTON "취소",IDCANCEL,113,44,50,14
|
||||
LTEXT "경로 : ",IDC_STATIC,7,9,24,8
|
||||
EDITTEXT IDC_EDT_PATH,33,7,130,12,ES_AUTOHSCROLL | ES_READONLY
|
||||
LTEXT "레벨 : ",IDC_STATIC,7,24,24,8
|
||||
COMBOBOX IDC_CBO_LEVEL,33,22,50,126,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_VOLUME_INFO1 DIALOGEX 0, 0, 230, 129
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION
|
||||
CAPTION "폴더/파일 정보"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "확인",IDOK,173,108,50,14
|
||||
ICON "",IDC_STC_ICON,7,7,20,20
|
||||
LTEXT "종류 :",IDC_STATIC,7,39,22,8
|
||||
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,33,216,1
|
||||
LTEXT "Static",IDC_STC_TYPE,35,39,188,8
|
||||
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,52,216,1
|
||||
LTEXT "파일 갯수 :",IDC_STC_USETITLE,7,58,40,8
|
||||
LTEXT "총 사이즈 :",IDC_STC_FREETITLE,7,89,40,8
|
||||
RTEXT "999,999",IDC_STC_USESPACE,76,58,98,8
|
||||
RTEXT "999,999,999,999,999바이트",IDC_STC_FREESPACE,76,89,98,8
|
||||
RTEXT "개",IDC_STC_USESPACET,184,58,37,8
|
||||
RTEXT "999.999TB",IDC_STC_FREESPACET,184,89,37,8
|
||||
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,103,216,1
|
||||
EDITTEXT IDC_EDT_TITLE,37,12,186,12,ES_AUTOHSCROLL | ES_READONLY
|
||||
LTEXT "폴더 갯수 :",IDC_STC_USETITLE2,7,70,40,8
|
||||
RTEXT "999,999",IDC_STC_USESPACE2,76,70,98,8
|
||||
RTEXT "개",IDC_STC_USESPACET2,184,70,37,8
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog Info
|
||||
//
|
||||
|
||||
IDD_CONFIG_COMMON DLGINIT
|
||||
BEGIN
|
||||
IDC_CBO_AFTEREXEC, 0x403, 9, 0
|
||||
0xe7bb, 0xebbf, 0xc8be, 0xd4c7, "\000"
|
||||
IDC_CBO_AFTEREXEC, 0x403, 9, 0
|
||||
0xceb7, 0xd7b1, 0xc0bf, 0xc1c7, "\000"
|
||||
IDC_CBO_AFTEREXEC, 0x403, 14, 0
|
||||
0xc3bd, 0xbabd, 0xdbc5, 0xc020, 0xbde7, 0xc0c3, 0x00db,
|
||||
IDC_CBO_AFTEREXEC, 0x403, 12, 0
|
||||
0xc3bd, 0xbabd, 0xdbc5, 0xc120, 0xb7be, 0x00e1,
|
||||
0
|
||||
END
|
||||
|
||||
IDD_BANDWIDTH DLGINIT
|
||||
BEGIN
|
||||
IDC_CBO_LEVEL, 0x403, 2, 0
|
||||
0x0030,
|
||||
IDC_CBO_LEVEL, 0x403, 2, 0
|
||||
0x0031,
|
||||
IDC_CBO_LEVEL, 0x403, 2, 0
|
||||
0x0032,
|
||||
IDC_CBO_LEVEL, 0x403, 2, 0
|
||||
0x0033,
|
||||
IDC_CBO_LEVEL, 0x403, 2, 0
|
||||
0x0034,
|
||||
IDC_CBO_LEVEL, 0x403, 2, 0
|
||||
0x0035,
|
||||
IDC_CBO_LEVEL, 0x403, 2, 0
|
||||
0x0036,
|
||||
IDC_CBO_LEVEL, 0x403, 2, 0
|
||||
0x0037,
|
||||
IDC_CBO_LEVEL, 0x403, 2, 0
|
||||
0x0038,
|
||||
IDC_CBO_LEVEL, 0x403, 2, 0
|
||||
0x0039,
|
||||
0
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Bitmap
|
||||
//
|
||||
|
||||
IDR_MAINFRAME BITMAP "res\\Toolbar.bmp"
|
||||
IDB_TOOLBAR BITMAP "res\\ToolbarEx24x.bmp"
|
||||
IDB_M_PASTE BITMAP "res\\mPaste.bmp"
|
||||
IDB_M_FOLDER BITMAP "res\\mFolder.bmp"
|
||||
IDB_M_CUT BITMAP "res\\mCut.bmp"
|
||||
IDB_M_COPY BITMAP "res\\mCopy.bmp"
|
||||
IDB_LOGO BITMAP "res\\Logo.bmp"
|
||||
IDB_CAP_REMOTE BITMAP "res\\capRemote.bmp"
|
||||
IDB_CAP_LOCAL BITMAP "res\\capLocal.bmp"
|
||||
IDB_BTN_UPLOAD BITMAP "res\\btnUpload.bmp"
|
||||
IDB_BTN_UP BITMAP "res\\btnUp.bmp"
|
||||
IDB_BTN_TOOLBAR2 BITMAP "res\\btnToolbar2.bmp"
|
||||
IDB_BTN_TOOLBAR1 BITMAP "res\\btnToolbar1.bmp"
|
||||
IDB_BTN_NEWFOLDER BITMAP "res\\btnNewFolder.bmp"
|
||||
IDB_BTN_LISTSTYLE BITMAP "res\\btnListstyle.bmp"
|
||||
IDB_BTN_GO BITMAP "res\\btnGo.bmp"
|
||||
IDB_BTN_DOWNLOAD BITMAP "res\\btnDownload.bmp"
|
||||
IDB_BTN_DELETE BITMAP "res\\btnDelete.bmp"
|
||||
IDB_MENUBAR BITMAP "res\\MenubarEx24x.bmp"
|
||||
IDB_LOGO_LGU BITMAP "res\\logo_lgu.bmp"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Toolbar
|
||||
//
|
||||
|
||||
IDR_MAINFRAME TOOLBAR 16, 16
|
||||
BEGIN
|
||||
BUTTON ID_FILE_RECONNECT
|
||||
BUTTON ID_FILE_DISCONNECT
|
||||
SEPARATOR
|
||||
BUTTON ID_VIEW_REFRESH
|
||||
SEPARATOR
|
||||
BUTTON ID_VIEW_RTREE
|
||||
BUTTON ID_VIEW_LTREE
|
||||
SEPARATOR
|
||||
BUTTON ID_CFG_CONFIG
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
//
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDR_MAINFRAME "SP-Console"
|
||||
IDS_COPY_NOT_ALLOWD "복사를 지원하지 않습니다."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
AFX_IDS_APP_TITLE "SP-Console"
|
||||
AFX_IDS_IDLEMESSAGE "준비"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
ID_INDICATOR_EXT "EXT"
|
||||
ID_INDICATOR_CAPS "CAP"
|
||||
ID_INDICATOR_NUM "NUM"
|
||||
ID_INDICATOR_SCRL "SCRL"
|
||||
ID_INDICATOR_OVR "OVR"
|
||||
ID_INDICATOR_REC "REC"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
ID_APP_ABOUT "프로그램 정보, 버전 번호, 저작권을 표시합니다.\n정보"
|
||||
ID_APP_EXIT "문서를 저장할지를 묻고 응용 프로그램을 끝냅니다.\n끝내기"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
ID_NEXT_PANE "다음 창으로 전환합니다.\n다음 창"
|
||||
ID_PREV_PANE "이전 창으로 전환합니다.\n이전 창"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
ID_WINDOW_SPLIT "활성 창을 여러 개의 창으로 분할합니다.\n분할"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
ID_EDIT_CLEAR "선택 영역을 지웁니다.\n지우기"
|
||||
ID_EDIT_CLEAR_ALL "모든 것을 지웁니다.\n모두 지우기"
|
||||
ID_EDIT_COPY "선택 영역을 복사하여 클립보드에 넣습니다.\n복사"
|
||||
ID_EDIT_CUT "선택 영역을 잘라내어 클립보드에 넣습니다.\n잘라내기"
|
||||
ID_EDIT_FIND "지정한 텍스트를 찾습니다.\n찾기"
|
||||
ID_EDIT_PASTE "클립보드 내용을 삽입합니다.\n붙여넣기"
|
||||
ID_EDIT_REPEAT "마지막 작업을 반복합니다.\n반복"
|
||||
ID_EDIT_REPLACE "특정 텍스트를 다른 텍스트로 바꿉니다.\n바꾸기"
|
||||
ID_EDIT_SELECT_ALL "전체 문서를 선택합니다.\n모두 선택"
|
||||
ID_EDIT_UNDO "마지막 작업 실행을 취소합니다.\n실행 취소"
|
||||
ID_EDIT_REDO "이전에 실행 취소된 작업을 다시 실행합니다.\n다시 실행"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
AFX_IDS_SCSIZE "창 크기를 변경합니다."
|
||||
AFX_IDS_SCMOVE "창 위치를 변경합니다."
|
||||
AFX_IDS_SCMINIMIZE "창을 아이콘으로 축소합니다."
|
||||
AFX_IDS_SCMAXIMIZE "창을 전체 화면 크기로 확대합니다."
|
||||
AFX_IDS_SCNEXTWINDOW "다음 문서 창으로 전환합니다."
|
||||
AFX_IDS_SCPREVWINDOW "이전 문서 창으로 전환합니다."
|
||||
AFX_IDS_SCCLOSE "문서를 저장할 것인지 확인하고 활성 창을 닫습니다."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
AFX_IDS_SCRESTORE "창을 보통 크기로 복원합니다."
|
||||
AFX_IDS_SCTASKLIST "작업 목록 활성화"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
ID_INFORMATION "공지사항"
|
||||
ID_INFORMATIONSTR "공지사항"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
ID_FILE_RECONNECT "재접속"
|
||||
ID_FILE_DISCONNECT "로그아웃"
|
||||
ID_VIEW_REFRESH "새로고침"
|
||||
ID_VIEW_RTREE "서버트리"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
ID_VIEW_LTREE "로컬트리"
|
||||
ID_CFG_CONFIG "설정"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
ID_VIEW_ALL "하위폴더보기"
|
||||
END
|
||||
|
||||
#endif // 한국어(대한민국) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
#define _AFX_NO_SPLITTER_RESOURCES
|
||||
#define _AFX_NO_OLE_RESOURCES
|
||||
#define _AFX_NO_TRACKER_RESOURCES
|
||||
#define _AFX_NO_PROPERTY_RESOURCES
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)
|
||||
LANGUAGE 18, 1
|
||||
#pragma code_page(949)
|
||||
#include "res\ConsoleApp.rc2" // Microsoft Visual C++에서 편집되지 않은 리소스
|
||||
#include "afxres.rc" // 표준 구성 요소
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{2320E669-0FE5-4782-B8DB-DD979167C3E3}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
..\Changelog.txt = ..\Changelog.txt
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConsoleApp", "ConsoleApp_vs100.vcxproj", "{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CommLib", "..\CommLib\CommLib_vs100.vcxproj", "{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConsoleTransfer", "..\ConsoleTransfer\ConsoleTransfer_vs100.vcxproj", "{8CF33995-4DDD-492E-9533-F73F82AEC607}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConsoleUpdater", "..\ConsoleUpdater\ConsoleUpdater_vs100.vcxproj", "{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug_LGU|Win32 = Debug_LGU|Win32
|
||||
Debug_Opendisk|Win32 = Debug_Opendisk|Win32
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release_LGU|Win32 = Release_LGU|Win32
|
||||
Release_Opendisk|Win32 = Release_Opendisk|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
Unicode Debug|Win32 = Unicode Debug|Win32
|
||||
Unicode Release|Win32 = Unicode Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Debug_LGU|Win32.ActiveCfg = Debug_LGU|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Debug_LGU|Win32.Build.0 = Debug_LGU|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Debug_Opendisk|Win32.ActiveCfg = Debug_Opendisk|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Debug_Opendisk|Win32.Build.0 = Debug_Opendisk|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Release_LGU|Win32.ActiveCfg = Release_LGU|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Release_LGU|Win32.Build.0 = Release_LGU|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Release_Opendisk|Win32.ActiveCfg = Release_Opendisk|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Release_Opendisk|Win32.Build.0 = Release_Opendisk|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Release|Win32.Build.0 = Release|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug_LGU|Win32.ActiveCfg = Debug_LGU|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug_LGU|Win32.Build.0 = Debug_LGU|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug_Opendisk|Win32.ActiveCfg = Debug_Opendisk|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug_Opendisk|Win32.Build.0 = Debug_Opendisk|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release_LGU|Win32.ActiveCfg = Release_LGU|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release_LGU|Win32.Build.0 = Release_LGU|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release_Opendisk|Win32.ActiveCfg = Release_Opendisk|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release_Opendisk|Win32.Build.0 = Release_Opendisk|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release|Win32.Build.0 = Release|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug_LGU|Win32.ActiveCfg = Debug_LGU|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug_LGU|Win32.Build.0 = Debug_LGU|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug_Opendisk|Win32.ActiveCfg = Debug_Opendisk|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug_Opendisk|Win32.Build.0 = Debug_Opendisk|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release_LGU|Win32.ActiveCfg = Release_LGU|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release_LGU|Win32.Build.0 = Release_LGU|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release_Opendisk|Win32.ActiveCfg = Release_Opendisk|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release_Opendisk|Win32.Build.0 = Release_Opendisk|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release|Win32.Build.0 = Release|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Debug_LGU|Win32.ActiveCfg = Debug_LGU|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Debug_LGU|Win32.Build.0 = Debug_LGU|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Debug_Opendisk|Win32.ActiveCfg = Debug_Opendisk|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Debug_Opendisk|Win32.Build.0 = Debug_Opendisk|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Release_LGU|Win32.ActiveCfg = Release_LGU|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Release_LGU|Win32.Build.0 = Release_LGU|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Release_Opendisk|Win32.ActiveCfg = Release_Opendisk|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Release_Opendisk|Win32.Build.0 = Release_Opendisk|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Release|Win32.Build.0 = Release|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(DPCodeReviewSolutionGUID) = preSolution
|
||||
DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -0,0 +1,498 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug_LGU|Win32">
|
||||
<Configuration>Debug_LGU</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug_Opendisk|Win32">
|
||||
<Configuration>Debug_Opendisk</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release_LGU|Win32">
|
||||
<Configuration>Release_LGU</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release_Opendisk|Win32">
|
||||
<Configuration>Release_Opendisk</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Template|Win32">
|
||||
<Configuration>Template</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectName>ConsoleApp</ProjectName>
|
||||
<ProjectGuid>{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}</ProjectGuid>
|
||||
<RootNamespace>ConsoleApp</RootNamespace>
|
||||
<Keyword>MFCProj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Opendisk|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseOfMfc>Dynamic</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Opendisk|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseOfMfc>Dynamic</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseOfMfc>Static</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_LGU|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseOfMfc>Static</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseOfMfc>Dynamic</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_LGU|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseOfMfc>Dynamic</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_Opendisk|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Opendisk|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_LGU|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_LGU|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../_bin/SPConsole/Debug/</OutDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_LGU|Win32'">../_bin/SPConsole/Debug_LGU/</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Debug\</IntDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_LGU|Win32'">Debug\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_LGU|Win32'">true</LinkIncremental>
|
||||
<GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</GenerateManifest>
|
||||
<GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug_LGU|Win32'">true</GenerateManifest>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../_bin/SPConsole/Release</OutDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release_LGU|Win32'">Release\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Release\</IntDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release_LGU|Win32'">Release\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release_LGU|Win32'">false</LinkIncremental>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_Opendisk|Win32'">$(Configuration)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_Opendisk|Win32'">$(Configuration)\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_Opendisk|Win32'">true</LinkIncremental>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release_Opendisk|Win32'">$(Configuration)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release_Opendisk|Win32'">$(Configuration)\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release_Opendisk|Win32'">false</LinkIncremental>
|
||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug_Opendisk|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug_Opendisk|Win32'" />
|
||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug_Opendisk|Win32'" />
|
||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug_LGU|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug_LGU|Win32'" />
|
||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug_LGU|Win32'" />
|
||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release_Opendisk|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release_Opendisk|Win32'" />
|
||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release_Opendisk|Win32'" />
|
||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release_LGU|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release_LGU|Win32'" />
|
||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release_LGU|Win32'" />
|
||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Template|Win32'" />
|
||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Template|Win32'" />
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">SP-Console</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug_LGU|Win32'">SP-Console</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">SP-Console</TargetName>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>false</MkTypLibCompatible>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../Common/PTxControl;../Common;../../../../tags/develop_component/CodeJock Software/MFC/Xtreme ToolkitPro v10.4.2/Source;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;WINVER=0x0500;_WIN32_WINNT=0x0500;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x0412</Culture>
|
||||
<AdditionalIncludeDirectories>$(IntDir);../../../../tags/develop_component/CodeJock Software/MFC/Xtreme ToolkitPro v10.4.2/Source;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>../_lib/Debug/SPCComm.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>../_bin/SPConsole/Debug/SP-Console.exe</OutputFile>
|
||||
<AdditionalLibraryDirectories>../../../../tags/develop_component/CodeJock Software/MFC/Xtreme ToolkitPro v10.4.2/lib/vc100;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_LGU|Win32'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>false</MkTypLibCompatible>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../Common/PTxControl;../Common;../../../../tags/develop_component/CodeJock Software/MFC/Xtreme ToolkitPro v10.4.2/Source;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;WINVER=0x0500;_WIN32_WINNT=0x0500;_LGU;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;_LGU;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x0412</Culture>
|
||||
<AdditionalIncludeDirectories>$(IntDir);../../../../tags/develop_component/CodeJock Software/MFC/Xtreme ToolkitPro v10.4.2/Source;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>../_lib/Debug_LGU/SPCComm.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>../_bin/SPConsole/Debug_LGU/SP-Console.exe</OutputFile>
|
||||
<AdditionalLibraryDirectories>../../../../tags/develop_component/CodeJock Software/MFC/Xtreme ToolkitPro v10.4.2/lib/vc100;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>false</MkTypLibCompatible>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../Common/PTxControl;../common;../../../../tags/develop_component/CodeJock Software/MFC/Xtreme ToolkitPro v10.4.2/Source;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;WINVER=0x0500;_WIN32_WINNT=0x0500;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x0412</Culture>
|
||||
<AdditionalIncludeDirectories>$(IntDir);../../../../tags/develop_component/CodeJock Software/MFC/Xtreme ToolkitPro v10.4.2/Source;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>../_lib/Release/SPCComm.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>../_bin/SPConsole/Release/SP-Console.exe</OutputFile>
|
||||
<AdditionalLibraryDirectories>../../../../tags/develop_component/CodeJock Software/MFC/Xtreme ToolkitPro v10.4.2/lib/vc100;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<GenerateMapFile>true</GenerateMapFile>
|
||||
<MapExports>true</MapExports>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_LGU|Win32'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>false</MkTypLibCompatible>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../Common/PTxControl;../common;../../../../tags/develop_component/CodeJock Software/MFC/Xtreme ToolkitPro v10.4.2/Source;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;WINVER=0x0500;_WIN32_WINNT=0x0500;_LGU;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;_LGU;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x0412</Culture>
|
||||
<AdditionalIncludeDirectories>$(IntDir);../../../../tags/develop_component/CodeJock Software/MFC/Xtreme ToolkitPro v10.4.2/Source;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>../_lib/Release_LGU/SPCComm.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>../_bin/SPConsole/Release_LGU/SP-Console.exe</OutputFile>
|
||||
<AdditionalLibraryDirectories>../../../../tags/develop_component/CodeJock Software/MFC/Xtreme ToolkitPro v10.4.2/lib/vc100;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<GenerateMapFile>true</GenerateMapFile>
|
||||
<MapExports>true</MapExports>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Opendisk|Win32'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>false</MkTypLibCompatible>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../Common/PTxControl;../Common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;_OPENDISK;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x0412</Culture>
|
||||
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>../_lib/Debug/SPCComm.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>../_bin/SPConsole/Debug_OD/OD-Console.exe</OutputFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_Opendisk|Win32'">
|
||||
<Midl>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MkTypLibCompatible>false</MkTypLibCompatible>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../Common/PTxControl;../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_OPENDISK;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x0412</Culture>
|
||||
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>../_lib/Release/SPCComm.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>../_bin/SPConsole/Release_OD/OD-Console.exe</OutputFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="ConsoleApp.cpp" />
|
||||
<ClCompile Include="..\Common\Crypt.cpp" />
|
||||
<ClCompile Include="CustomControlSite.cpp" />
|
||||
<ClCompile Include="..\Common\ImpIDispatch.cpp" />
|
||||
<ClCompile Include="LocalView.cpp" />
|
||||
<ClCompile Include="MainFrm.cpp" />
|
||||
<ClCompile Include="..\Common\MarkupSTL.cpp" />
|
||||
<ClCompile Include="..\Common\MFC64bitFix.cpp" />
|
||||
<ClCompile Include="Options.cpp" />
|
||||
<ClCompile Include="..\Common\RegUtil.cpp" />
|
||||
<ClCompile Include="RemoteView.cpp" />
|
||||
<ClCompile Include="RLDropTarget.cpp" />
|
||||
<ClCompile Include="RTDropTarget.cpp" />
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug_Opendisk|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug_LGU|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_Opendisk|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_LGU|Win32'">Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Common\GdStatic.cpp" />
|
||||
<ClCompile Include="HCButton.cpp" />
|
||||
<ClCompile Include="LocalComboBox.cpp" />
|
||||
<ClCompile Include="LocalListCtrl.cpp" />
|
||||
<ClCompile Include="LocalTreeCtrl.cpp" />
|
||||
<ClCompile Include="..\Common\PictureEx.cpp" />
|
||||
<ClCompile Include="RemoteComboBox.cpp" />
|
||||
<ClCompile Include="RemoteListCtrl.cpp" />
|
||||
<ClCompile Include="RemoteTreeCtrl.cpp" />
|
||||
<ClCompile Include="..\Common\TextProgressCtrl.cpp" />
|
||||
<ClCompile Include="..\Common\PTxControl\ptxshcombo.cpp" />
|
||||
<ClCompile Include="..\Common\PTxControl\ptxshlist.cpp" />
|
||||
<ClCompile Include="..\Common\PTxControl\ptxshtree.cpp" />
|
||||
<ClCompile Include="..\Common\WebBrowser2.cpp" />
|
||||
<ClCompile Include="BandwidthDlg.cpp" />
|
||||
<ClCompile Include="ConfigCommonDlg.cpp" />
|
||||
<ClCompile Include="ConfigDlg.cpp" />
|
||||
<ClCompile Include="ConfigProxyDlg.cpp" />
|
||||
<ClCompile Include="..\Common\ConfigSubDlg.cpp" />
|
||||
<ClCompile Include="ConfigUrlDlg.cpp" />
|
||||
<ClCompile Include="ConnectDlg.cpp" />
|
||||
<ClCompile Include="ConnectProxyDlg.cpp" />
|
||||
<ClCompile Include="VolumeInfo1Dlg.cpp" />
|
||||
<ClCompile Include="VolumeInfoDlg.cpp" />
|
||||
<ClCompile Include="WaitMessageDlg.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="ConsoleApp.h" />
|
||||
<ClInclude Include="..\Common\Crypt.h" />
|
||||
<ClInclude Include="CustomControlSite.h" />
|
||||
<ClInclude Include="..\Common\ImpIDispatch.h" />
|
||||
<ClInclude Include="LocalView.h" />
|
||||
<ClInclude Include="MainFrm.h" />
|
||||
<ClInclude Include="..\Common\MarkupSTL.h" />
|
||||
<ClInclude Include="..\Common\MFC64bitFix.h" />
|
||||
<ClInclude Include="Options.h" />
|
||||
<ClInclude Include="..\Common\RegUtil.h" />
|
||||
<ClInclude Include="..\..\Common\RegUtil.h" />
|
||||
<ClInclude Include="RemoteView.h" />
|
||||
<ClInclude Include="Resource.h" />
|
||||
<ClInclude Include="RLDropTarget.h" />
|
||||
<ClInclude Include="RTDropTarget.h" />
|
||||
<ClInclude Include="stdafx.h" />
|
||||
<ClInclude Include="Struct.h" />
|
||||
<ClInclude Include="..\Common\GdStatic.h" />
|
||||
<ClInclude Include="HCButton.h" />
|
||||
<ClInclude Include="LocalComboBox.h" />
|
||||
<ClInclude Include="LocalListCtrl.h" />
|
||||
<ClInclude Include="LocalTreeCtrl.h" />
|
||||
<ClInclude Include="..\Common\PictureEx.h" />
|
||||
<ClInclude Include="RemoteComboBox.h" />
|
||||
<ClInclude Include="RemoteListCtrl.h" />
|
||||
<ClInclude Include="RemoteTreeCtrl.h" />
|
||||
<ClInclude Include="..\Common\TextProgressCtrl.h" />
|
||||
<ClInclude Include="..\Common\PTxControl\PTxSCP.h" />
|
||||
<ClInclude Include="..\Common\PTxControl\ptxshcombo.h" />
|
||||
<ClInclude Include="..\Common\PTxControl\ptxshlist.h" />
|
||||
<ClInclude Include="..\Common\PTxControl\ptxshtree.h" />
|
||||
<ClInclude Include="..\Common\WebBrowser2.h" />
|
||||
<ClInclude Include="BandwidthDlg.h" />
|
||||
<ClInclude Include="ConfigCommonDlg.h" />
|
||||
<ClInclude Include="ConfigDlg.h" />
|
||||
<ClInclude Include="ConfigProxyDlg.h" />
|
||||
<ClInclude Include="..\Common\ConfigSubDlg.h" />
|
||||
<ClInclude Include="ConfigUrlDlg.h" />
|
||||
<ClInclude Include="ConnectDlg.h" />
|
||||
<ClInclude Include="ConnectProxyDlg.h" />
|
||||
<ClInclude Include="VERSION_INFO.h" />
|
||||
<ClInclude Include="VolumeInfo1Dlg.h" />
|
||||
<ClInclude Include="VolumeInfoDlg.h" />
|
||||
<ClInclude Include="WaitMessageDlg.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="res\Advert.gif" />
|
||||
<None Include="res\AnonyFolder.ico" />
|
||||
<None Include="res\bitmap1.bmp" />
|
||||
<None Include="res\btnDelete.bmp" />
|
||||
<None Include="res\btnDownload.bmp" />
|
||||
<None Include="res\btnGo.bmp" />
|
||||
<None Include="res\btnListstyle.bmp" />
|
||||
<None Include="res\btnNewFolder.bmp" />
|
||||
<None Include="res\btnToolbar1.bmp" />
|
||||
<None Include="res\btnToolbar2.bmp" />
|
||||
<None Include="res\btnUp.bmp" />
|
||||
<None Include="res\btnUpload.bmp" />
|
||||
<None Include="res\capLocal.bmp" />
|
||||
<None Include="res\capRemote.bmp" />
|
||||
<None Include="res\ConsoleApp.rc2" />
|
||||
<None Include="res\ConsoleApp_KT.ico" />
|
||||
<None Include="res\ConsoleApp_LGU.ico" />
|
||||
<None Include="res\ConsoleApp_OD.ico" />
|
||||
<None Include="res\Down.ico" />
|
||||
<None Include="res\Empty.ico" />
|
||||
<None Include="res\icon1.ico" />
|
||||
<None Include="res\Logo.bmp" />
|
||||
<None Include="res\logo1.bmp" />
|
||||
<None Include="res\logo_lgu.bmp" />
|
||||
<None Include="res\Logo_old.bmp" />
|
||||
<None Include="res\mCopy.bmp" />
|
||||
<None Include="res\mCut.bmp" />
|
||||
<None Include="res\MenubarEx24x.bmp" />
|
||||
<None Include="res\mFolder.bmp" />
|
||||
<None Include="res\mPaste.bmp" />
|
||||
<None Include="res\SiteManager.bmp" />
|
||||
<None Include="res\SortAsc.ico" />
|
||||
<None Include="res\SortDesc.ico" />
|
||||
<None Include="res\SortNone.ico" />
|
||||
<None Include="res\systemhosting_logo.bmp" />
|
||||
<None Include="res\Toolbar.bmp" />
|
||||
<None Include="res\ToolbarEx24x.bmp" />
|
||||
<None Include="res\Up.ico" />
|
||||
<None Include="res\Wait.gif" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="ConsoleApp.rc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<CustomBuildStep Include="res\ConsoleApp.manifest">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_Opendisk|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_LGU|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_Opendisk|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_LGU|Win32'">true</ExcludedFromBuild>
|
||||
</CustomBuildStep>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\CommLib\CommLib_vs100.vcxproj">
|
||||
<Project>{fd6f8a99-22b0-45fa-bab6-1cc3dd5aae2c}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Manifest Include="res\SP-Console.exe.manifest" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
<ProjectExtensions>
|
||||
<VisualStudio>
|
||||
<UserProperties RESOURCE_FILE="ConsoleApp.rc" />
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
</Project>
|
||||
@@ -0,0 +1,418 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="소스 파일">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="소스 파일\Controls">
|
||||
<UniqueIdentifier>{bd84e45c-9c39-48c4-8035-dc1b644c9db4}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="소스 파일\Controls\OCX">
|
||||
<UniqueIdentifier>{aaf61275-1660-4daa-b187-8e759137e9d6}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="소스 파일\Dialogs">
|
||||
<UniqueIdentifier>{b118b810-5815-4e2c-b410-07c31340b2ed}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="헤더 파일">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="헤더 파일\Controls">
|
||||
<UniqueIdentifier>{98ff6ff1-f7a0-4609-a6bf-05a9b76fe2ed}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="헤더 파일\Controls\OCX">
|
||||
<UniqueIdentifier>{fa5fb2aa-a3a7-459b-8793-9c4c8d84fac4}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="헤더 파일\Dialogs">
|
||||
<UniqueIdentifier>{b9d0ae21-0ec1-44d2-8962-d1f14ccdf7d5}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="리소스 파일">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="ConsoleApp.cpp">
|
||||
<Filter>소스 파일</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Common\Crypt.cpp">
|
||||
<Filter>소스 파일</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="CustomControlSite.cpp">
|
||||
<Filter>소스 파일</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Common\ImpIDispatch.cpp">
|
||||
<Filter>소스 파일</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="LocalView.cpp">
|
||||
<Filter>소스 파일</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="MainFrm.cpp">
|
||||
<Filter>소스 파일</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Common\MarkupSTL.cpp">
|
||||
<Filter>소스 파일</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Common\MFC64bitFix.cpp">
|
||||
<Filter>소스 파일</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Options.cpp">
|
||||
<Filter>소스 파일</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Common\RegUtil.cpp">
|
||||
<Filter>소스 파일</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="RemoteView.cpp">
|
||||
<Filter>소스 파일</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="RLDropTarget.cpp">
|
||||
<Filter>소스 파일</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="RTDropTarget.cpp">
|
||||
<Filter>소스 파일</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<Filter>소스 파일</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Common\GdStatic.cpp">
|
||||
<Filter>소스 파일\Controls</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="HCButton.cpp">
|
||||
<Filter>소스 파일\Controls</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="LocalComboBox.cpp">
|
||||
<Filter>소스 파일\Controls</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="LocalListCtrl.cpp">
|
||||
<Filter>소스 파일\Controls</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="LocalTreeCtrl.cpp">
|
||||
<Filter>소스 파일\Controls</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Common\PictureEx.cpp">
|
||||
<Filter>소스 파일\Controls</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="RemoteComboBox.cpp">
|
||||
<Filter>소스 파일\Controls</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="RemoteListCtrl.cpp">
|
||||
<Filter>소스 파일\Controls</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="RemoteTreeCtrl.cpp">
|
||||
<Filter>소스 파일\Controls</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Common\TextProgressCtrl.cpp">
|
||||
<Filter>소스 파일\Controls</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Common\PTxControl\ptxshcombo.cpp">
|
||||
<Filter>소스 파일\Controls\OCX</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Common\PTxControl\ptxshlist.cpp">
|
||||
<Filter>소스 파일\Controls\OCX</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Common\PTxControl\ptxshtree.cpp">
|
||||
<Filter>소스 파일\Controls\OCX</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Common\WebBrowser2.cpp">
|
||||
<Filter>소스 파일\Controls\OCX</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="BandwidthDlg.cpp">
|
||||
<Filter>소스 파일\Dialogs</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ConfigCommonDlg.cpp">
|
||||
<Filter>소스 파일\Dialogs</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ConfigDlg.cpp">
|
||||
<Filter>소스 파일\Dialogs</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ConfigProxyDlg.cpp">
|
||||
<Filter>소스 파일\Dialogs</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Common\ConfigSubDlg.cpp">
|
||||
<Filter>소스 파일\Dialogs</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ConfigUrlDlg.cpp">
|
||||
<Filter>소스 파일\Dialogs</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ConnectDlg.cpp">
|
||||
<Filter>소스 파일\Dialogs</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ConnectProxyDlg.cpp">
|
||||
<Filter>소스 파일\Dialogs</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="VolumeInfo1Dlg.cpp">
|
||||
<Filter>소스 파일\Dialogs</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="VolumeInfoDlg.cpp">
|
||||
<Filter>소스 파일\Dialogs</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="WaitMessageDlg.cpp">
|
||||
<Filter>소스 파일\Dialogs</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="ConsoleApp.h">
|
||||
<Filter>헤더 파일</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Common\Crypt.h">
|
||||
<Filter>헤더 파일</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="CustomControlSite.h">
|
||||
<Filter>헤더 파일</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Common\ImpIDispatch.h">
|
||||
<Filter>헤더 파일</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="LocalView.h">
|
||||
<Filter>헤더 파일</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="MainFrm.h">
|
||||
<Filter>헤더 파일</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Common\MarkupSTL.h">
|
||||
<Filter>헤더 파일</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Common\MFC64bitFix.h">
|
||||
<Filter>헤더 파일</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Options.h">
|
||||
<Filter>헤더 파일</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Common\RegUtil.h">
|
||||
<Filter>헤더 파일</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Common\RegUtil.h">
|
||||
<Filter>헤더 파일</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="RemoteView.h">
|
||||
<Filter>헤더 파일</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Resource.h">
|
||||
<Filter>헤더 파일</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="RLDropTarget.h">
|
||||
<Filter>헤더 파일</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="RTDropTarget.h">
|
||||
<Filter>헤더 파일</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="stdafx.h">
|
||||
<Filter>헤더 파일</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Struct.h">
|
||||
<Filter>헤더 파일</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Common\GdStatic.h">
|
||||
<Filter>헤더 파일\Controls</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="HCButton.h">
|
||||
<Filter>헤더 파일\Controls</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="LocalComboBox.h">
|
||||
<Filter>헤더 파일\Controls</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="LocalListCtrl.h">
|
||||
<Filter>헤더 파일\Controls</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="LocalTreeCtrl.h">
|
||||
<Filter>헤더 파일\Controls</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Common\PictureEx.h">
|
||||
<Filter>헤더 파일\Controls</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="RemoteComboBox.h">
|
||||
<Filter>헤더 파일\Controls</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="RemoteListCtrl.h">
|
||||
<Filter>헤더 파일\Controls</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="RemoteTreeCtrl.h">
|
||||
<Filter>헤더 파일\Controls</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Common\TextProgressCtrl.h">
|
||||
<Filter>헤더 파일\Controls</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Common\PTxControl\PTxSCP.h">
|
||||
<Filter>헤더 파일\Controls\OCX</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Common\PTxControl\ptxshcombo.h">
|
||||
<Filter>헤더 파일\Controls\OCX</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Common\PTxControl\ptxshlist.h">
|
||||
<Filter>헤더 파일\Controls\OCX</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Common\PTxControl\ptxshtree.h">
|
||||
<Filter>헤더 파일\Controls\OCX</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Common\WebBrowser2.h">
|
||||
<Filter>헤더 파일\Controls\OCX</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="BandwidthDlg.h">
|
||||
<Filter>헤더 파일\Dialogs</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ConfigCommonDlg.h">
|
||||
<Filter>헤더 파일\Dialogs</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ConfigDlg.h">
|
||||
<Filter>헤더 파일\Dialogs</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ConfigProxyDlg.h">
|
||||
<Filter>헤더 파일\Dialogs</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Common\ConfigSubDlg.h">
|
||||
<Filter>헤더 파일\Dialogs</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ConfigUrlDlg.h">
|
||||
<Filter>헤더 파일\Dialogs</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ConnectDlg.h">
|
||||
<Filter>헤더 파일\Dialogs</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ConnectProxyDlg.h">
|
||||
<Filter>헤더 파일\Dialogs</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="VolumeInfo1Dlg.h">
|
||||
<Filter>헤더 파일\Dialogs</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="VolumeInfoDlg.h">
|
||||
<Filter>헤더 파일\Dialogs</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="WaitMessageDlg.h">
|
||||
<Filter>헤더 파일\Dialogs</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="VERSION_INFO.h">
|
||||
<Filter>헤더 파일</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="res\Advert.gif">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\AnonyFolder.ico">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\bitmap1.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\btnDelete.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\btnDownload.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\btnGo.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\btnListstyle.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\btnNewFolder.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\btnToolbar1.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\btnToolbar2.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\btnUp.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\btnUpload.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\capLocal.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\capRemote.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\ConsoleApp.rc2">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\ConsoleApp_OD.ico">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\Down.ico">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\Empty.ico">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\icon1.ico">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\Logo.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\Logo_old.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\mCopy.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\mCut.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\MenubarEx24x.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\mFolder.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\mPaste.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\SiteManager.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\SortAsc.ico">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\SortDesc.ico">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\SortNone.ico">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\systemhosting_logo.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\Toolbar.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\ToolbarEx24x.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\Up.ico">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\Wait.gif">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\ConsoleApp_LGU.ico">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\logo1.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\logo_lgu.bmp">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
<None Include="res\ConsoleApp_KT.ico">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="ConsoleApp.rc">
|
||||
<Filter>리소스 파일</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<CustomBuildStep Include="res\ConsoleApp.manifest" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Manifest Include="res\SP-Console.exe.manifest" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
</Project>
|
||||
@@ -0,0 +1,127 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 9.00
|
||||
# Visual Studio 2005
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConsoleApp", "ConsoleApp_vs80.vcproj", "{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}"
|
||||
ProjectSection(WebsiteProperties) = preProject
|
||||
Debug.AspNetCompiler.Debug = "True"
|
||||
Release.AspNetCompiler.Debug = "False"
|
||||
EndProjectSection
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C} = {FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CommLib", "..\CommLib\CommLib_vs80.vcproj", "{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}"
|
||||
ProjectSection(WebsiteProperties) = preProject
|
||||
Debug.AspNetCompiler.Debug = "True"
|
||||
Release.AspNetCompiler.Debug = "False"
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConsoleTransfer", "..\ConsoleTransfer\ConsoleTransfer_vs80.vcproj", "{8CF33995-4DDD-492E-9533-F73F82AEC607}"
|
||||
ProjectSection(WebsiteProperties) = preProject
|
||||
Debug.AspNetCompiler.Debug = "True"
|
||||
Release.AspNetCompiler.Debug = "False"
|
||||
EndProjectSection
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C} = {FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConsoleUpdater", "..\ConsoleUpdater\ConsoleUpdater_vs80.vcproj", "{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}"
|
||||
ProjectSection(WebsiteProperties) = preProject
|
||||
Debug.AspNetCompiler.Debug = "True"
|
||||
Release.AspNetCompiler.Debug = "False"
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{2320E669-0FE5-4782-B8DB-DD979167C3E3}"
|
||||
ProjectSection(WebsiteProperties) = preProject
|
||||
Debug.AspNetCompiler.Debug = "True"
|
||||
Release.AspNetCompiler.Debug = "False"
|
||||
EndProjectSection
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
..\Changelog.txt = ..\Changelog.txt
|
||||
ReadMe.txt = ReadMe.txt
|
||||
..\SP-Console.ini = ..\SP-Console.ini
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug_LGU|Win32 = Debug_LGU|Win32
|
||||
Debug_Opendisk|Win32 = Debug_Opendisk|Win32
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release_LGU|Win32 = Release_LGU|Win32
|
||||
Release_Opendisk|Win32 = Release_Opendisk|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
Unicode Debug|Win32 = Unicode Debug|Win32
|
||||
Unicode Release|Win32 = Unicode Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Debug_LGU|Win32.ActiveCfg = Debug_LGU|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Debug_LGU|Win32.Build.0 = Debug_LGU|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Debug_Opendisk|Win32.ActiveCfg = Debug_Opendisk|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Debug_Opendisk|Win32.Build.0 = Debug_Opendisk|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Release_LGU|Win32.ActiveCfg = Release_LGU|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Release_LGU|Win32.Build.0 = Release_LGU|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Release_Opendisk|Win32.ActiveCfg = Release_Opendisk|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Release_Opendisk|Win32.Build.0 = Release_Opendisk|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Release|Win32.Build.0 = Release|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug_LGU|Win32.ActiveCfg = Debug|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug_LGU|Win32.Build.0 = Debug|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug_Opendisk|Win32.ActiveCfg = Debug_Opendisk|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug_Opendisk|Win32.Build.0 = Debug_Opendisk|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release_LGU|Win32.ActiveCfg = Release|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release_LGU|Win32.Build.0 = Release|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release_Opendisk|Win32.ActiveCfg = Release_Opendisk|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release_Opendisk|Win32.Build.0 = Release_Opendisk|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release|Win32.Build.0 = Release|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug_LGU|Win32.ActiveCfg = Debug_LGU|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug_LGU|Win32.Build.0 = Debug_LGU|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug_Opendisk|Win32.ActiveCfg = Debug_Opendisk|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug_Opendisk|Win32.Build.0 = Debug_Opendisk|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release_LGU|Win32.ActiveCfg = Release_LGU|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release_LGU|Win32.Build.0 = Release_LGU|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release_Opendisk|Win32.ActiveCfg = Release_Opendisk|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release_Opendisk|Win32.Build.0 = Release_Opendisk|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release|Win32.Build.0 = Release|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Debug_LGU|Win32.ActiveCfg = Debug_LGU|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Debug_LGU|Win32.Build.0 = Debug_LGU|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Debug_Opendisk|Win32.ActiveCfg = Debug_Opendisk|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Debug_Opendisk|Win32.Build.0 = Debug_Opendisk|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Release_LGU|Win32.ActiveCfg = Release_LGU|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Release_LGU|Win32.Build.0 = Release_LGU|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Release_Opendisk|Win32.ActiveCfg = Release_Opendisk|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Release_Opendisk|Win32.Build.0 = Release_Opendisk|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Release|Win32.Build.0 = Release|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(DPCodeReviewSolutionGUID) = preSolution
|
||||
DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -0,0 +1,107 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual Studio 2008
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{2320E669-0FE5-4782-B8DB-DD979167C3E3}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
..\Changelog.txt = ..\Changelog.txt
|
||||
readme.txt = readme.txt
|
||||
..\SP-Console.ini = ..\SP-Console.ini
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConsoleApp", "ConsoleApp_vs90.vcproj", "{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C} = {FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CommLib", "..\CommLib\CommLib_vs90.vcproj", "{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConsoleTransfer", "..\ConsoleTransfer\ConsoleTransfer_vs90.vcproj", "{8CF33995-4DDD-492E-9533-F73F82AEC607}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C} = {FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConsoleUpdater", "..\ConsoleUpdater\ConsoleUpdater_vs90.vcproj", "{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug_LGU|Win32 = Debug_LGU|Win32
|
||||
Debug_Opendisk|Win32 = Debug_Opendisk|Win32
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release_LGU|Win32 = Release_LGU|Win32
|
||||
Release_Opendisk|Win32 = Release_Opendisk|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
Unicode Debug|Win32 = Unicode Debug|Win32
|
||||
Unicode Release|Win32 = Unicode Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Debug_LGU|Win32.ActiveCfg = Debug_LGU|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Debug_LGU|Win32.Build.0 = Debug_LGU|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Debug_Opendisk|Win32.ActiveCfg = Debug_Opendisk|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Debug_Opendisk|Win32.Build.0 = Debug_Opendisk|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Release_LGU|Win32.ActiveCfg = Release_LGU|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Release_LGU|Win32.Build.0 = Release_LGU|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Release_Opendisk|Win32.ActiveCfg = Release_Opendisk|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Release_Opendisk|Win32.Build.0 = Release_Opendisk|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Release|Win32.Build.0 = Release|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug_LGU|Win32.ActiveCfg = Debug|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug_LGU|Win32.Build.0 = Debug|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug_Opendisk|Win32.ActiveCfg = Debug_Opendisk|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug_Opendisk|Win32.Build.0 = Debug_Opendisk|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release_LGU|Win32.ActiveCfg = Release|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release_LGU|Win32.Build.0 = Release|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release_Opendisk|Win32.ActiveCfg = Release_Opendisk|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release_Opendisk|Win32.Build.0 = Release_Opendisk|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release|Win32.Build.0 = Release|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug_LGU|Win32.ActiveCfg = Debug_LGU|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug_LGU|Win32.Build.0 = Debug_LGU|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug_Opendisk|Win32.ActiveCfg = Debug_Opendisk|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug_Opendisk|Win32.Build.0 = Debug_Opendisk|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release_LGU|Win32.ActiveCfg = Release_LGU|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release_LGU|Win32.Build.0 = Release_LGU|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release_Opendisk|Win32.ActiveCfg = Release_Opendisk|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release_Opendisk|Win32.Build.0 = Release_Opendisk|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release|Win32.Build.0 = Release|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Debug_LGU|Win32.ActiveCfg = Debug_LGU|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Debug_LGU|Win32.Build.0 = Debug_LGU|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Debug_Opendisk|Win32.ActiveCfg = Debug_Opendisk|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Debug_Opendisk|Win32.Build.0 = Debug_Opendisk|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Release_LGU|Win32.ActiveCfg = Release_LGU|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Release_LGU|Win32.Build.0 = Release_LGU|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Release_Opendisk|Win32.ActiveCfg = Release_Opendisk|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Release_Opendisk|Win32.Build.0 = Release_Opendisk|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Release|Win32.Build.0 = Release|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Unicode Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Unicode Debug|Win32.Build.0 = Debug|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Unicode Release|Win32.ActiveCfg = Release|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Unicode Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(DPCodeReviewSolutionGUID) = preSolution
|
||||
DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -0,0 +1,204 @@
|
||||
// CustomControlSite.cpp (IDispatch for Extending Dynamic HTML Object Model)
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
// NOTE: THis line is a hardcoded reference to an MFC header file
|
||||
// this path may need to be changed to refer to the location of VC5 install
|
||||
// for successful compilation.
|
||||
#undef AFX_DATA
|
||||
#define AFX_DATA AFX_DATA_IMPORT
|
||||
#undef AFX_DATA
|
||||
#define AFX_DATA AFX_DATA_EXPORT
|
||||
|
||||
#include "ConsoleApp.h"
|
||||
#include "CustomControlSite.h"
|
||||
|
||||
BEGIN_INTERFACE_MAP(CCustomControlSite, COleControlSite)
|
||||
INTERFACE_PART(CCustomControlSite, IID_IDocHostUIHandler, DocHostUIHandler)
|
||||
END_INTERFACE_MAP()
|
||||
|
||||
ULONG FAR EXPORT CCustomControlSite::XDocHostUIHandler::AddRef()
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return pThis->ExternalAddRef();
|
||||
}
|
||||
|
||||
ULONG FAR EXPORT CCustomControlSite::XDocHostUIHandler::Release()
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return pThis->ExternalRelease();
|
||||
}
|
||||
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::QueryInterface(REFIID riid, void **ppvObj)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
HRESULT hr = (HRESULT)pThis->ExternalQueryInterface(&riid, ppvObj);
|
||||
return hr;
|
||||
}
|
||||
|
||||
// * CImpIDocHostUIHandler::GetHostInfo
|
||||
// *
|
||||
// * Purpose: Called at initialization
|
||||
// *
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::GetHostInfo( DOCHOSTUIINFO* pInfo )
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
pInfo->dwFlags = DOCHOSTUIFLAG_NO3DBORDER | DOCHOSTUIFLAG_SCROLL_NO;
|
||||
pInfo->dwDoubleClick = DOCHOSTUIDBLCLK_DEFAULT;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
// * CImpIDocHostUIHandler::ShowUI
|
||||
// *
|
||||
// * Purpose: Called when MSHTML.DLL shows its UI
|
||||
// *
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::ShowUI(
|
||||
DWORD dwID,
|
||||
IOleInPlaceActiveObject * /*pActiveObject*/,
|
||||
IOleCommandTarget * pCommandTarget,
|
||||
IOleInPlaceFrame * /*pFrame*/,
|
||||
IOleInPlaceUIWindow * /*pDoc*/)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
// We've already got our own UI in place so just return S_OK
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
// * CImpIDocHostUIHandler::HideUI
|
||||
// *
|
||||
// * Purpose: Called when MSHTML.DLL hides its UI
|
||||
// *
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::HideUI(void)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
// * CImpIDocHostUIHandler::UpdateUI
|
||||
// *
|
||||
// * Purpose: Called when MSHTML.DLL updates its UI
|
||||
// *
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::UpdateUI(void)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
// MFC is pretty good about updating it's UI in it's Idle loop so I don't do anything here
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
// * CImpIDocHostUIHandler::EnableModeless
|
||||
// *
|
||||
// * Purpose: Called from MSHTML.DLL's IOleInPlaceActiveObject::EnableModeless
|
||||
// *
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::EnableModeless(BOOL /*fEnable*/)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
// * CImpIDocHostUIHandler::OnDocWindowActivate
|
||||
// *
|
||||
// * Purpose: Called from MSHTML.DLL's IOleInPlaceActiveObject::OnDocWindowActivate
|
||||
// *
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::OnDocWindowActivate(BOOL /*fActivate*/)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
// * CImpIDocHostUIHandler::OnFrameWindowActivate
|
||||
// *
|
||||
// * Purpose: Called from MSHTML.DLL's IOleInPlaceActiveObject::OnFrameWindowActivate
|
||||
// *
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::OnFrameWindowActivate(BOOL /*fActivate*/)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
// * CImpIDocHostUIHandler::ResizeBorder
|
||||
// *
|
||||
// * Purpose: Called from MSHTML.DLL's IOleInPlaceActiveObject::ResizeBorder
|
||||
// *
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::ResizeBorder(
|
||||
LPCRECT /*prcBorder*/,
|
||||
IOleInPlaceUIWindow* /*pUIWindow*/,
|
||||
BOOL /*fRameWindow*/)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
// * CImpIDocHostUIHandler::ShowContextMenu
|
||||
// *
|
||||
// * Purpose: Called when MSHTML.DLL would normally display its context menu
|
||||
// *
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::ShowContextMenu(
|
||||
DWORD /*dwID*/,
|
||||
POINT* /*pptPosition*/,
|
||||
IUnknown* /*pCommandTarget*/,
|
||||
IDispatch* /*pDispatchObjectHit*/)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return S_OK; // We've shown our own context menu. MSHTML.DLL will no longer try to show its own.
|
||||
}
|
||||
|
||||
// * CImpIDocHostUIHandler::TranslateAccelerator
|
||||
// *
|
||||
// * Purpose: Called from MSHTML.DLL's TranslateAccelerator routines
|
||||
// *
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::TranslateAccelerator(
|
||||
LPMSG lpMsg,
|
||||
/* [in] */ const GUID __RPC_FAR *pguidCmdGroup,
|
||||
/* [in] */ DWORD nCmdID)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return S_FALSE;
|
||||
}
|
||||
|
||||
// * CImpIDocHostUIHandler::GetOptionKeyPath
|
||||
// *
|
||||
// * Purpose: Called by MSHTML.DLL to find where the host wishes to store
|
||||
// * its options in the registry
|
||||
// *
|
||||
HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::GetOptionKeyPath(BSTR* pbstrKey, DWORD)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
STDMETHODIMP CCustomControlSite::XDocHostUIHandler::GetDropTarget(
|
||||
/* [in] */ IDropTarget __RPC_FAR *pDropTarget,
|
||||
/* [out] */ IDropTarget __RPC_FAR *__RPC_FAR *ppDropTarget)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
STDMETHODIMP CCustomControlSite::XDocHostUIHandler::GetExternal(
|
||||
/* [out] */ IDispatch __RPC_FAR *__RPC_FAR *ppDispatch)
|
||||
{
|
||||
// return the IDispatch we have for extending the object Model
|
||||
IDispatch* pDisp = (IDispatch*)theApp.m_pimpldisp;
|
||||
pDisp->AddRef();
|
||||
*ppDispatch = pDisp;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP CCustomControlSite::XDocHostUIHandler::TranslateUrl(
|
||||
/* [in] */ DWORD dwTranslate,
|
||||
/* [in] */ OLECHAR __RPC_FAR *pchURLIn,
|
||||
/* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppchURLOut)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
STDMETHODIMP CCustomControlSite::XDocHostUIHandler::FilterDataObject(
|
||||
/* [in] */ IDataObject __RPC_FAR *pDO,
|
||||
/* [out] */ IDataObject __RPC_FAR *__RPC_FAR *ppDORet)
|
||||
{
|
||||
METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
// CustomControlSite.h
|
||||
|
||||
#ifndef __CUSTOMSITEH__
|
||||
#define __CUSTOMSITEH__
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "ImpIDispatch.h"
|
||||
#include <afxocc.h>
|
||||
#include <mshtmhst.h>
|
||||
|
||||
class CCustomControlSite:public COleControlSite
|
||||
{
|
||||
public:
|
||||
CCustomControlSite(COleControlContainer *pCnt):COleControlSite(pCnt){}
|
||||
|
||||
protected:
|
||||
DECLARE_INTERFACE_MAP();
|
||||
|
||||
BEGIN_INTERFACE_PART(DocHostUIHandler, IDocHostUIHandler)
|
||||
STDMETHOD(ShowContextMenu)(
|
||||
/* [in] */ DWORD dwID,
|
||||
/* [in] */ POINT __RPC_FAR *ppt,
|
||||
/* [in] */ IUnknown __RPC_FAR *pcmdtReserved,
|
||||
/* [in] */ IDispatch __RPC_FAR *pdispReserved);
|
||||
STDMETHOD(GetHostInfo)(
|
||||
/* [out][in] */ DOCHOSTUIINFO __RPC_FAR *pInfo);
|
||||
STDMETHOD(ShowUI)(
|
||||
/* [in] */ DWORD dwID,
|
||||
/* [in] */ IOleInPlaceActiveObject __RPC_FAR *pActiveObject,
|
||||
/* [in] */ IOleCommandTarget __RPC_FAR *pCommandTarget,
|
||||
/* [in] */ IOleInPlaceFrame __RPC_FAR *pFrame,
|
||||
/* [in] */ IOleInPlaceUIWindow __RPC_FAR *pDoc);
|
||||
STDMETHOD(HideUI)(void);
|
||||
STDMETHOD(UpdateUI)(void);
|
||||
STDMETHOD(EnableModeless)(/* [in] */ BOOL fEnable);
|
||||
STDMETHOD(OnDocWindowActivate)(/* [in] */ BOOL fEnable);
|
||||
STDMETHOD(OnFrameWindowActivate)(/* [in] */ BOOL fEnable);
|
||||
STDMETHOD(ResizeBorder)(
|
||||
/* [in] */ LPCRECT prcBorder,
|
||||
/* [in] */ IOleInPlaceUIWindow __RPC_FAR *pUIWindow,
|
||||
/* [in] */ BOOL fRameWindow);
|
||||
STDMETHOD(TranslateAccelerator)(
|
||||
/* [in] */ LPMSG lpMsg,
|
||||
/* [in] */ const GUID __RPC_FAR *pguidCmdGroup,
|
||||
/* [in] */ DWORD nCmdID);
|
||||
STDMETHOD(GetOptionKeyPath)(
|
||||
/* [out] */ LPOLESTR __RPC_FAR *pchKey,
|
||||
/* [in] */ DWORD dw);
|
||||
STDMETHOD(GetDropTarget)(
|
||||
/* [in] */ IDropTarget __RPC_FAR *pDropTarget,
|
||||
/* [out] */ IDropTarget __RPC_FAR *__RPC_FAR *ppDropTarget);
|
||||
STDMETHOD(GetExternal)(
|
||||
/* [out] */ IDispatch __RPC_FAR *__RPC_FAR *ppDispatch);
|
||||
STDMETHOD(TranslateUrl)(
|
||||
/* [in] */ DWORD dwTranslate,
|
||||
/* [in] */ OLECHAR __RPC_FAR *pchURLIn,
|
||||
/* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppchURLOut);
|
||||
STDMETHOD(FilterDataObject)(
|
||||
/* [in] */ IDataObject __RPC_FAR *pDO,
|
||||
/* [out] */ IDataObject __RPC_FAR *__RPC_FAR *ppDORet);
|
||||
END_INTERFACE_PART(DocHostUIHandler)
|
||||
};
|
||||
|
||||
class CCustomOccManager :public COccManager
|
||||
{
|
||||
public:
|
||||
CCustomOccManager(){}
|
||||
COleControlSite* CreateSite(COleControlContainer* pCtrlCont)
|
||||
{
|
||||
CCustomControlSite *pSite = new CCustomControlSite(pCtrlCont);
|
||||
return pSite;
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,51 @@
|
||||
// HCButton.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "HCButton.h"
|
||||
|
||||
|
||||
// CHCButton
|
||||
|
||||
IMPLEMENT_DYNAMIC(CHCButton, CBitmapButton)
|
||||
CHCButton::CHCButton()
|
||||
{
|
||||
}
|
||||
|
||||
CHCButton::~CHCButton()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CHCButton, CBitmapButton)
|
||||
ON_WM_MOUSEMOVE()
|
||||
ON_WM_SETCURSOR()
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CHCButton 메시지 처리기입니다.
|
||||
void CHCButton::OnMouseMove(UINT nFlags, CPoint point)
|
||||
{
|
||||
//::SetCursor(AfxGetApp()->LoadCursor(IDC_HAND));
|
||||
HCURSOR hCursor;
|
||||
hCursor = AfxGetApp()->LoadStandardCursor(IDC_HAND);
|
||||
|
||||
::SetCursor(hCursor);
|
||||
|
||||
CBitmapButton::OnMouseMove(nFlags, point);
|
||||
}
|
||||
|
||||
|
||||
BOOL CHCButton::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
|
||||
{
|
||||
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
|
||||
|
||||
HCURSOR hCursor;
|
||||
hCursor = AfxGetApp()->LoadStandardCursor(IDC_HAND);
|
||||
|
||||
::SetCursor(hCursor);
|
||||
|
||||
return TRUE;
|
||||
return CBitmapButton::OnSetCursor(pWnd, nHitTest, message);
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
// CHCButton
|
||||
|
||||
class CHCButton : public CBitmapButton
|
||||
{
|
||||
DECLARE_DYNAMIC(CHCButton)
|
||||
|
||||
public:
|
||||
CHCButton();
|
||||
virtual ~CHCButton();
|
||||
|
||||
protected:
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
|
||||
afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
// LocalComboBox.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "LocalComboBox.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CLocalComboBox
|
||||
|
||||
CLocalComboBox::CLocalComboBox()
|
||||
{
|
||||
}
|
||||
|
||||
CLocalComboBox::~CLocalComboBox()
|
||||
{
|
||||
}
|
||||
|
||||
#ifdef _USE_XTREME_TOOLKITPRO
|
||||
BEGIN_MESSAGE_MAP(CLocalComboBox, CXTComboBoxEx)
|
||||
#else // _USE_XTREME_TOOLKITPRO
|
||||
BEGIN_MESSAGE_MAP(CLocalComboBox, CComboBox)
|
||||
#endif // _USE_XTREME_TOOLKITPRO
|
||||
//{{AFX_MSG_MAP(CLocalComboBox)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CLocalComboBox message handlers
|
||||
@@ -0,0 +1,47 @@
|
||||
// LocalComboBox.h : header file
|
||||
//
|
||||
|
||||
#pragma once
|
||||
#ifdef _USE_XTREME_TOOLKITPRO
|
||||
#else // _USE_XTREME_TOOLKITPRO
|
||||
#include "ptxshcombo.h"
|
||||
#endif // _USE_XTREME_TOOLKITPRO
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CLocalComboBox window
|
||||
#ifdef _USE_XTREME_TOOLKITPRO
|
||||
class CLocalComboBox : public CXTComboBoxEx
|
||||
#else // _USE_XTREME_TOOLKITPRO
|
||||
class CLocalComboBox : public CPTxShCombo
|
||||
#endif // _USE_XTREME_TOOLKITPRO
|
||||
{
|
||||
// Construction
|
||||
public:
|
||||
CLocalComboBox();
|
||||
|
||||
// Attributes
|
||||
public:
|
||||
|
||||
// Operations
|
||||
public:
|
||||
|
||||
// Overrides
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CLocalComboBox)
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
public:
|
||||
virtual ~CLocalComboBox();
|
||||
|
||||
protected:
|
||||
|
||||
// Generated message map functions
|
||||
protected:
|
||||
//{{AFX_MSG(CLocalComboBox)
|
||||
//}}AFX_MSG
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
};
|
||||
@@ -0,0 +1,323 @@
|
||||
// LocalListCtrl.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "LocalListCtrl.h"
|
||||
|
||||
#include "MainFrm.h"
|
||||
#include "LocalView.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
BOOL DeleteDirectory(CString sDirectory);
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CLocalListCtrl
|
||||
|
||||
CLocalListCtrl::CLocalListCtrl()
|
||||
{
|
||||
}
|
||||
|
||||
CLocalListCtrl::~CLocalListCtrl()
|
||||
{
|
||||
}
|
||||
|
||||
#ifdef _USE_XTREME_TOOLKITPRO
|
||||
BEGIN_MESSAGE_MAP(CLocalListCtrl, CXTShellListCtrl)
|
||||
#else // _USE_XTREME_TOOLKITPRO
|
||||
BEGIN_MESSAGE_MAP(CLocalListCtrl, CListCtrl)
|
||||
#endif // _USE_XTREME_TOOLKITPRO
|
||||
//{{AFX_MSG_MAP(CLocalListCtrl)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CLocalListCtrl message handlers
|
||||
|
||||
BOOL CLocalListCtrl::PreTranslateMessage(MSG* pMsg)
|
||||
{
|
||||
CMainFrame *pmf = (CMainFrame *)AfxGetMainWnd();
|
||||
|
||||
switch (pMsg->message)
|
||||
{
|
||||
case WM_SETFOCUS:
|
||||
case WM_LBUTTONDOWN:
|
||||
case WM_RBUTTONDOWN:
|
||||
pmf->SetFocus(this);
|
||||
break;
|
||||
case WM_KEYDOWN:
|
||||
if (GetKeyState(VK_CONTROL) & 128) {
|
||||
if (pMsg->wParam == VK_D) {
|
||||
DeleteSelectedItem();
|
||||
return TRUE;
|
||||
}
|
||||
else if (pMsg->wParam == VK_V) {
|
||||
if (PasteClipboard())
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return CListCtrl::PreTranslateMessage(pMsg);
|
||||
}
|
||||
|
||||
void CLocalListCtrl::DeleteSelectedItem()
|
||||
{
|
||||
if (AfxMessageBox("선택된 파일을 삭제하시겠습니까?", MB_YESNO) != IDYES)
|
||||
return;
|
||||
|
||||
#ifndef _USE_XTREME_TOOLKITPRO
|
||||
IPTxShListItems *pitems = (IPTxShListItems *)get_Items();
|
||||
|
||||
long nTotalCount;
|
||||
|
||||
pitems->get_Count(&nTotalCount);
|
||||
|
||||
VARIANT_BOOL bFileSystem;
|
||||
|
||||
IPTxShTreeNode *pnode = (IPTxShTreeNode*)((CLocalView*)GetParent())->m_tree.get_SelectedNode();
|
||||
pnode->get_IsFileSystem(&bFileSystem);
|
||||
if (bFileSystem) {
|
||||
IPTxShListItem *pitem;
|
||||
for (int i = 0; i < nTotalCount; i++) {
|
||||
pitems->get_Item(i, &pitem);
|
||||
|
||||
VARIANT_BOOL bSelected;
|
||||
pitem->get_Selected(&bSelected);
|
||||
if (!bSelected)
|
||||
continue;
|
||||
|
||||
BSTR bstr;
|
||||
pitem->get_PathName(&bstr);
|
||||
CString sPath(bstr);
|
||||
::SysFreeString(bstr);
|
||||
|
||||
if (sPath == "")
|
||||
continue;
|
||||
|
||||
DWORD dwAttr = GetFileAttributes(sPath);
|
||||
if (dwAttr == INVALID_FILE_ATTRIBUTES)
|
||||
continue;
|
||||
|
||||
if (dwAttr & FILE_ATTRIBUTE_DIRECTORY)
|
||||
DeleteDirectory(sPath);
|
||||
else
|
||||
DeleteFile(sPath);
|
||||
}
|
||||
|
||||
Refresh();
|
||||
}
|
||||
#endif // !_USE_XTREME_TOOLKITPRO
|
||||
}
|
||||
|
||||
BOOL CLocalListCtrl::PasteClipboard(CString sFolder)
|
||||
{
|
||||
CMainFrame* pmf = (CMainFrame*)AfxGetMainWnd();
|
||||
|
||||
CLocalTreeCtrl* ptree = &((CLocalView*)GetParent())->m_tree;
|
||||
|
||||
#ifndef _USE_XTREME_TOOLKITPRO
|
||||
VARIANT_BOOL bFileSystem;
|
||||
|
||||
IPTxShTreeNode *pnode = (IPTxShTreeNode*)ptree->get_SelectedNode();
|
||||
pnode->get_IsFileSystem(&bFileSystem);
|
||||
if (!bFileSystem)
|
||||
return FALSE;
|
||||
|
||||
BSTR bstr;
|
||||
pnode->get_PathName(&bstr);
|
||||
CString sPath(bstr);
|
||||
::SysFreeString(bstr);
|
||||
|
||||
COleDataObject odo;
|
||||
|
||||
if (odo.AttachClipboard() && odo.IsDataAvailable(CF_HDROP))
|
||||
return ((CLocalView*)GetParent())->CopyClipboard(odo, sPath);
|
||||
|
||||
if (pmf->m_cbs == CBS_NONE)
|
||||
return FALSE;
|
||||
|
||||
if (pmf->m_saDragSource.GetCount() == 0)
|
||||
return FALSE;
|
||||
|
||||
pmf->m_sDragTarget = sFolder == "" ? sPath : sFolder;
|
||||
#endif // _USE_XTREME_TOOLKITPRO
|
||||
return pmf->Download(false);
|
||||
}
|
||||
|
||||
#ifdef _USE_XTREME_TOOLKITPRO
|
||||
#define ISZIPFILE(dw) (BOOL)(dw & SFGAO_FOLDER) && (dw & SFGAO_STREAM)
|
||||
|
||||
BOOL CLocalListCtrl::InitListViewItems(XT_TVITEMDATA* lptvid, LPSHELLFOLDER lpsf)
|
||||
{
|
||||
CShellMalloc lpMalloc;
|
||||
|
||||
if (!lpMalloc)
|
||||
return FALSE;
|
||||
|
||||
LPENUMIDLIST lpe = NULL;
|
||||
|
||||
if (FAILED(lpsf->EnumObjects(::GetParent(m_pListCtrl->m_hWnd), m_uFlags, &lpe)))
|
||||
return FALSE;
|
||||
|
||||
if (lpe == NULL)
|
||||
return FALSE;
|
||||
|
||||
int iCtr = 0;
|
||||
ULONG ulFetched = 0;
|
||||
LPITEMIDLIST lpi = NULL;
|
||||
|
||||
while (lpe->Next(1, &lpi, &ulFetched) == S_OK)
|
||||
{
|
||||
// Now get the friendly name that we'll put in the treeview...
|
||||
CString szFileName, szFullFilePath;
|
||||
GetName(lpsf, lpi, SHGDN_NORMAL, szFileName);
|
||||
GetName(lpsf, lpi, SHGDN_FORPARSING, szFullFilePath);
|
||||
|
||||
// Note that since we are interested in the display attributes as well as
|
||||
// the other attributes, we need to set ulAttrs to SFGAO_DISPLAYATTRMASK
|
||||
// before calling GetAttributesOf();
|
||||
ULONG ulAttrs = SFGAO_FOLDER | SFGAO_STREAM | SFGAO_FILESYSANCESTOR | SFGAO_DISPLAYATTRMASK | SFGAO_REMOVABLE | SFGAO_COMPRESSED | SFGAO_ENCRYPTED;
|
||||
UINT uFlags = SHGFI_PIDL | SHGFI_SYSICONINDEX | SHGFI_SMALLICON;
|
||||
lpsf->GetAttributesOf(1, (const struct _ITEMIDLIST **)&lpi, &ulAttrs);
|
||||
|
||||
BOOL bIncludeFile = !IsItemFiltered(szFullFilePath, ulAttrs);
|
||||
|
||||
if (bIncludeFile)
|
||||
{
|
||||
// allocate memory for ITEMDATA struct
|
||||
XT_LVITEMDATA* lplvid = (XT_LVITEMDATA*)lpMalloc.Alloc(sizeof(XT_LVITEMDATA));
|
||||
if (lplvid == NULL)
|
||||
{
|
||||
if (lpe)
|
||||
{
|
||||
lpe->Release();
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
lplvid->ulAttribs = ulAttrs;
|
||||
LPITEMIDLIST lpifqThisItem = ConcatPidls(lpMalloc, lptvid->lpifq, lpi);
|
||||
|
||||
LV_ITEM lvi;
|
||||
lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM;
|
||||
lvi.iItem = iCtr++;
|
||||
lvi.iSubItem = 0;
|
||||
lvi.pszText = (LPTSTR)(LPCTSTR)szFileName;
|
||||
lvi.cchTextMax = 0;
|
||||
lvi.iImage = GetItemIcon(lpifqThisItem, uFlags);
|
||||
|
||||
lplvid->lpsfParent = lpsf;
|
||||
lpsf->AddRef();
|
||||
|
||||
// Make a copy of the ITEMIDLIST
|
||||
lplvid->lpi = DuplicateItem(lpMalloc, lpi);
|
||||
lvi.lParam = (LPARAM)lplvid;
|
||||
|
||||
// Add the item to the listview
|
||||
int iIndex = m_pListCtrl->InsertItem(&lvi);
|
||||
SetAttributes(iIndex, ulAttrs);
|
||||
if (iIndex >= 0)
|
||||
{
|
||||
TCHAR szItemPath[_MAX_PATH];
|
||||
::SHGetPathFromIDList(lpifqThisItem, szItemPath);
|
||||
|
||||
//if (((ulAttrs & SFGAO_FILESYSTEM) == SFGAO_FILESYSTEM) &&
|
||||
// ((ulAttrs & SFGAO_FOLDER) == 0))
|
||||
if (!(ulAttrs & SFGAO_FOLDER) || // folder
|
||||
((ulAttrs & SFGAO_FOLDER) && (ulAttrs & SFGAO_STREAM))) // zip file
|
||||
{
|
||||
WIN32_FIND_DATA fdata;
|
||||
HANDLE handle = ::FindFirstFile(szItemPath, &fdata);
|
||||
|
||||
if (handle != INVALID_HANDLE_VALUE)
|
||||
{
|
||||
{
|
||||
LONGLONG fsize = fdata.nFileSizeHigh*((LONGLONG)ULONG_MAX + 1) + fdata.nFileSizeLow;
|
||||
|
||||
TCHAR szBuffer[16];
|
||||
CString strSize;
|
||||
strSize.Format(_T("%s KB"), InsertCommas((fsize + 1024)/1024, szBuffer, 15));
|
||||
|
||||
m_pListCtrl->SetItemText(iIndex, 1, strSize);
|
||||
}
|
||||
|
||||
FILETIME ltime;
|
||||
::FileTimeToLocalFileTime(&fdata.ftLastWriteTime, <ime);
|
||||
|
||||
SYSTEMTIME time;
|
||||
::FileTimeToSystemTime(<ime, &time);
|
||||
|
||||
if ((time.wYear >= 1970 && time.wYear <= 2038) &&
|
||||
(time.wMonth >= 1 && time.wMonth <= 12))
|
||||
{
|
||||
CTime cTime;
|
||||
cTime = CTime(
|
||||
time.wYear,
|
||||
time.wMonth,
|
||||
time.wDay,
|
||||
time.wHour,
|
||||
time.wMinute,
|
||||
time.wSecond);
|
||||
|
||||
m_pListCtrl->SetItemText(iIndex, 3, cTime.Format(_T("%m/%d/%y %I:%M %p")));
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pListCtrl->SetItemText(iIndex, 3, _T("")); // Invalid date
|
||||
}
|
||||
|
||||
::FindClose(handle);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pListCtrl->SetItemText(iIndex, 2, _T("0 bytes"));
|
||||
}
|
||||
|
||||
SHFILEINFO sfi;
|
||||
::SHGetFileInfo((TCHAR*)lpifqThisItem, 0, &sfi,
|
||||
sizeof(SHFILEINFO), SHGFI_PIDL | SHGFI_TYPENAME);
|
||||
|
||||
m_pListCtrl->SetItemText(iIndex, 2, sfi.szTypeName);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (lpifqThisItem)
|
||||
{
|
||||
lpMalloc.Free(lpifqThisItem);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
if (lpifqThisItem)
|
||||
{
|
||||
lpMalloc.Free(lpifqThisItem);
|
||||
}
|
||||
}
|
||||
|
||||
// Free the pidl that the shell gave us.
|
||||
if (lpi)
|
||||
{
|
||||
lpMalloc.Free(lpi);
|
||||
lpi = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (lpe)
|
||||
{
|
||||
lpe->Release();
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
#endif // _USE_XTREME_TOOLKITPRO
|
||||
@@ -0,0 +1,57 @@
|
||||
// LocalListCtrl.h : header file
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifdef _USE_XTREME_TOOLKITPRO
|
||||
#else // _USE_XTREME_TOOLKITPRO
|
||||
#include "ptxshlist.h"
|
||||
#endif // _USE_XTREME_TOOLKITPRO
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CLocalListCtrl window
|
||||
#ifdef _USE_XTREME_TOOLKITPRO
|
||||
class CLocalListCtrl : public CXTShellListCtrl
|
||||
#else // _USE_XTREME_TOOLKITPRO
|
||||
class CLocalListCtrl : public CPTxShList
|
||||
#endif // _USE_XTREME_TOOLKITPRO
|
||||
{
|
||||
// Construction
|
||||
public:
|
||||
CLocalListCtrl();
|
||||
|
||||
// Attributes
|
||||
public:
|
||||
|
||||
// Operations
|
||||
protected:
|
||||
void DeleteSelectedItem();
|
||||
|
||||
public:
|
||||
BOOL PasteClipboard(CString sFolder = "");
|
||||
|
||||
// Overrides
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CLocalListCtrl)
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
public:
|
||||
virtual ~CLocalListCtrl();
|
||||
|
||||
protected:
|
||||
virtual BOOL PreTranslateMessage(MSG* pMsg);
|
||||
|
||||
#ifdef _USE_XTREME_TOOLKITPRO
|
||||
virtual BOOL InitListViewItems(XT_TVITEMDATA* lptvid, LPSHELLFOLDER lpsf);
|
||||
#endif // _USE_XTREME_TOOLKITPRO
|
||||
|
||||
protected:
|
||||
//{{AFX_MSG(CLocalListCtrl)
|
||||
//}}AFX_MSG
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
|
||||
public:
|
||||
};
|
||||
@@ -0,0 +1,250 @@
|
||||
// LocalTreeCtrl.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "LocalTreeCtrl.h"
|
||||
|
||||
#include "MainFrm.h"
|
||||
#include "LocalView.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
BOOL DeleteDirectory(CString sDirectory);
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CLocalTreeCtrl
|
||||
|
||||
CLocalTreeCtrl::CLocalTreeCtrl()
|
||||
{
|
||||
}
|
||||
|
||||
CLocalTreeCtrl::~CLocalTreeCtrl()
|
||||
{
|
||||
}
|
||||
|
||||
#ifdef _USE_XTREME_TOOLKITPRO
|
||||
BEGIN_MESSAGE_MAP(CLocalTreeCtrl, CXTShellTreeCtrl)
|
||||
#else // _USE_XTREME_TOOLKITPRO
|
||||
BEGIN_MESSAGE_MAP(CLocalTreeCtrl, CTreeCtrl)
|
||||
#endif // _USE_XTREME_TOOLKITPRO
|
||||
//{{AFX_MSG_MAP(CLocalTreeCtrl)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CLocalTreeCtrl message handlers
|
||||
|
||||
BOOL CLocalTreeCtrl::PreTranslateMessage(MSG* pMsg)
|
||||
{
|
||||
CMainFrame *pmf = (CMainFrame *)AfxGetMainWnd();
|
||||
|
||||
switch (pMsg->message)
|
||||
{
|
||||
case WM_SETFOCUS:
|
||||
case WM_LBUTTONDOWN:
|
||||
case WM_RBUTTONDOWN:
|
||||
pmf->SetFocus(this);
|
||||
break;
|
||||
case WM_KEYDOWN:
|
||||
if (GetKeyState(VK_CONTROL) & 128) {
|
||||
if (pMsg->wParam == VK_D) {
|
||||
DeleteSelectedItem();
|
||||
return TRUE;
|
||||
}
|
||||
else if (pMsg->wParam == VK_V) {
|
||||
if (PasteClipboard())
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return CTreeCtrl::PreTranslateMessage(pMsg);
|
||||
}
|
||||
|
||||
void CLocalTreeCtrl::DeleteSelectedItem()
|
||||
{
|
||||
#ifndef _USE_XTREME_TOOLKITPRO
|
||||
IPTxShTreeNode* pnode = (IPTxShTreeNode*)get_SelectedNode();
|
||||
if (((CLocalView*)GetParent())->m_pnodeRoot == pnode)
|
||||
return;
|
||||
|
||||
if (AfxMessageBox("선택된 폴더를 삭제하시겠습니까?", MB_YESNO) != IDYES)
|
||||
return;
|
||||
|
||||
VARIANT_BOOL bFileSystem;
|
||||
|
||||
pnode->get_IsFileSystem(&bFileSystem);
|
||||
if (bFileSystem) {
|
||||
BSTR bstr;
|
||||
pnode->get_PathName(&bstr);
|
||||
CString sPath(bstr);
|
||||
::SysFreeString(bstr);
|
||||
|
||||
if (sPath == "")
|
||||
return;
|
||||
|
||||
if (!DeleteDirectory(sPath))
|
||||
return;
|
||||
|
||||
Refresh();
|
||||
}
|
||||
#endif // !_USE_XTREME_TOOLKITPRO
|
||||
}
|
||||
|
||||
BOOL CLocalTreeCtrl::PasteClipboard()
|
||||
{
|
||||
CMainFrame* pmf = (CMainFrame*)AfxGetMainWnd();
|
||||
|
||||
#ifndef _USE_XTREME_TOOLKITPRO
|
||||
VARIANT_BOOL bFileSystem;
|
||||
|
||||
IPTxShTreeNode *pnode = (IPTxShTreeNode*)get_SelectedNode();
|
||||
pnode->get_IsFileSystem(&bFileSystem);
|
||||
if (!bFileSystem)
|
||||
return FALSE;
|
||||
|
||||
BSTR bstr;
|
||||
pnode->get_PathName(&bstr);
|
||||
CString sPath(bstr);
|
||||
::SysFreeString(bstr);
|
||||
|
||||
COleDataObject odo;
|
||||
|
||||
if (odo.AttachClipboard() && odo.IsDataAvailable(CF_HDROP))
|
||||
return ((CLocalView*)GetParent())->CopyClipboard(odo, sPath);
|
||||
|
||||
if (pmf->m_cbs == CBS_NONE)
|
||||
return FALSE;
|
||||
|
||||
if (pmf->m_saDragSource.GetCount() == 0)
|
||||
return FALSE;
|
||||
|
||||
pmf->m_sDragTarget = sPath;
|
||||
#endif // !_USE_XTREME_TOOLKITPRO
|
||||
return pmf->Download(false);
|
||||
}
|
||||
#ifdef _USE_XTREME_TOOLKITPRO
|
||||
BOOL CLocalTreeCtrl::InitTreeViewItems(LPSHELLFOLDER lpsf, LPITEMIDLIST lpifq, HTREEITEM hParent)
|
||||
{
|
||||
CWaitCursor wait; // show wait cursor.
|
||||
|
||||
// Allocate a shell memory object.
|
||||
CShellMalloc lpMalloc;
|
||||
|
||||
if (!lpMalloc)
|
||||
return FALSE;
|
||||
|
||||
// Get the IEnumIDList object for the given folder.
|
||||
LPENUMIDLIST lpe = NULL;
|
||||
if (FAILED(lpsf->EnumObjects(::GetParent(m_pTreeCtrl->m_hWnd), m_uFlags, &lpe)))
|
||||
return FALSE;
|
||||
|
||||
if (lpe == NULL)
|
||||
return FALSE;
|
||||
|
||||
ULONG ulFetched = 0;
|
||||
HTREEITEM hPrev = NULL;
|
||||
LPITEMIDLIST lpi = NULL;
|
||||
|
||||
// Enumerate through the list of folder and non-folder objects.
|
||||
while (lpe->Next(1, &lpi, &ulFetched) == S_OK)
|
||||
{
|
||||
// Create a fully qualified path to the current item
|
||||
// the SH* shell api's take a fully qualified path pidl,
|
||||
// (see GetIcon above where I call SHGetFileInfo) whereas the
|
||||
// interface methods take a relative path pidl.
|
||||
ULONG ulAttrs = SFGAO_HASSUBFOLDER | SFGAO_FOLDER | SFGAO_DISPLAYATTRMASK | SFGAO_REMOVABLE | SFGAO_COMPRESSED | SFGAO_ENCRYPTED;
|
||||
|
||||
// Determine what type of object we have.
|
||||
lpsf->GetAttributesOf(1, (const struct _ITEMIDLIST **)&lpi, &ulAttrs);
|
||||
|
||||
// We need this next if statement so that we don't add things like
|
||||
// the MSN to our tree. MSN is not a folder, but according to the
|
||||
// shell it has subfolders.
|
||||
if ((ulAttrs & SFGAO_FOLDER) || m_bShowFiles)
|
||||
{
|
||||
TV_ITEM tvi;
|
||||
tvi.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM;
|
||||
|
||||
if ((ulAttrs & SFGAO_HASSUBFOLDER) || (m_bShowFiles && (ulAttrs & SFGAO_FOLDER)))
|
||||
{
|
||||
//This item has sub-folders, so let's put the + in the TreeView.
|
||||
//The first time the user clicks on the item, we'll populate the
|
||||
//sub-folders.
|
||||
tvi.cChildren = 1;
|
||||
tvi.mask |= TVIF_CHILDREN;
|
||||
}
|
||||
|
||||
// Allocate memory for ITEMDATA struct
|
||||
CString szBuff;
|
||||
XT_TVITEMDATA* lptvid = (XT_TVITEMDATA*)lpMalloc.Alloc(sizeof(XT_TVITEMDATA));
|
||||
if (lptvid == NULL || GetName(lpsf, lpi, SHGDN_NORMAL, szBuff) == FALSE)
|
||||
{
|
||||
if (lptvid)
|
||||
{
|
||||
lpMalloc.Free(lptvid);
|
||||
}
|
||||
if (lpe)
|
||||
{
|
||||
lpe->Release();
|
||||
}
|
||||
if (lpi)
|
||||
{
|
||||
lpMalloc.Free(lpi);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
// Now, make a copy of the ITEMIDLIST and store the parent folders SF.
|
||||
lptvid->lpi = DuplicateItem(lpMalloc, lpi);
|
||||
lptvid->lpsfParent = lpsf;
|
||||
lptvid->lpifq = ConcatPidls(lpMalloc, lpifq, lpi);
|
||||
lpsf->AddRef();
|
||||
|
||||
GetNormalAndSelectedIcons(lptvid->lpifq, &tvi);
|
||||
|
||||
tvi.lParam = (LPARAM)lptvid;
|
||||
tvi.pszText = (LPTSTR)(LPCTSTR)szBuff;
|
||||
tvi.cchTextMax = 0;
|
||||
|
||||
// Populate the TreeVeiw Insert Struct
|
||||
// The item is the one filled above.
|
||||
// Insert it after the last item inserted at this level.
|
||||
// And indicate this is a root entry.
|
||||
TV_INSERTSTRUCT tvins;
|
||||
tvins.item = tvi;
|
||||
tvins.hInsertAfter = hPrev;
|
||||
tvins.hParent = hParent;
|
||||
|
||||
// Add the item to the tree
|
||||
hPrev = m_pTreeCtrl->InsertItem(&tvins);
|
||||
SetAttributes(hPrev, ulAttrs);
|
||||
}
|
||||
|
||||
// Free the pidl that the shell gave us.
|
||||
if (lpi)
|
||||
{
|
||||
lpMalloc.Free(lpi);
|
||||
lpi = 0;
|
||||
}
|
||||
}
|
||||
if (lpi)
|
||||
{
|
||||
lpMalloc.Free(lpi);
|
||||
}
|
||||
|
||||
if (lpe)
|
||||
{
|
||||
lpe->Release();
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
#endif // _USE_XTREME_TOOLKITPRO
|
||||
@@ -0,0 +1,54 @@
|
||||
// LocalTreeCtrl.h : header file
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifdef _USE_XTREME_TOOLKITPRO
|
||||
#else // _USE_XTREME_TOOLKITPRO
|
||||
#include "ptxshtree.h"
|
||||
#endif // _USE_XTREME_TOOLKITPRO
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CLocalTreeCtrl window
|
||||
#ifdef _USE_XTREME_TOOLKITPRO
|
||||
class CLocalTreeCtrl : public CXTShellTreeCtrl
|
||||
#else
|
||||
class CLocalTreeCtrl : public CPTxShTree
|
||||
#endif // USE_XTREME_TOOLKITPRO
|
||||
{
|
||||
// Construction
|
||||
public:
|
||||
CLocalTreeCtrl();
|
||||
|
||||
// Attributes
|
||||
public:
|
||||
|
||||
// Operations
|
||||
protected:
|
||||
void DeleteSelectedItem();
|
||||
|
||||
public:
|
||||
BOOL PasteClipboard();
|
||||
|
||||
// Overrides
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CLocalTreeCtrl)
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
public:
|
||||
virtual ~CLocalTreeCtrl();
|
||||
|
||||
protected:
|
||||
virtual BOOL PreTranslateMessage(MSG* pMsg);
|
||||
#ifdef _USE_XTREME_TOOLKITPRO
|
||||
virtual BOOL InitTreeViewItems(LPSHELLFOLDER lpsf, LPITEMIDLIST lpifq, HTREEITEM hParent);
|
||||
#endif // _USE_XTREME_TOOLKITPRO
|
||||
|
||||
protected:
|
||||
//{{AFX_MSG(CLocalTreeCtrl)
|
||||
//}}AFX_MSG
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
};
|
||||
@@ -0,0 +1,176 @@
|
||||
#pragma once
|
||||
|
||||
#include "LocalComboBox.h"
|
||||
#include "LocalTreeCtrl.h"
|
||||
#include "LocalListCtrl.h"
|
||||
|
||||
#ifndef _USE_XTREME_TOOLKITPRO
|
||||
#include "PTxSCP.h"
|
||||
#endif // !_USE_XTREME_TOOLKITPRO
|
||||
#include "WebBrowser2.h"
|
||||
#include "PictureEx.h"
|
||||
|
||||
#include "TextProgressCtrl.h"
|
||||
#include "HCButton.h"
|
||||
|
||||
|
||||
// CLocalView 폼 뷰입니다.
|
||||
|
||||
class CLocalView : public CView
|
||||
{
|
||||
protected:
|
||||
CLocalView(); // 동적 만들기에 사용되는 protected 생성자입니다.
|
||||
DECLARE_DYNCREATE(CLocalView)
|
||||
|
||||
public:
|
||||
virtual ~CLocalView();
|
||||
#ifdef _DEBUG
|
||||
virtual void AssertValid() const;
|
||||
virtual void Dump(CDumpContext& dc) const;
|
||||
#endif
|
||||
|
||||
protected:
|
||||
int m_cxSplitter;
|
||||
BOOL m_bDragSplitter;
|
||||
|
||||
UINT m_nTimer;
|
||||
|
||||
long m_nUploadMenuId;
|
||||
long m_nPasteMenuId;
|
||||
|
||||
CString m_sSelectedPath;
|
||||
|
||||
CWnd* m_pwndPrevFocused;
|
||||
#ifndef _USE_XTREME_TOOLKITPRO
|
||||
IPTxShListItem* m_pitemPrev;
|
||||
#endif // !_USE_XTREME_TOOLKITPRO
|
||||
VARIANT_BOOL m_bPrevItemSelected;
|
||||
|
||||
BOOL m_bIgnoreEvent;
|
||||
|
||||
public:
|
||||
CXTCaption m_capToolBar;
|
||||
CPictureEx m_stcAdvert;
|
||||
CHCButton m_btnToolBar;
|
||||
CXTButton m_btnUpload;
|
||||
CXTButton m_btnDownload;
|
||||
CXTButton m_btnNewFolder;
|
||||
CXTButton m_btnDelete;
|
||||
|
||||
CBitmapButton m_capTitleIcon;
|
||||
CXTCaption m_capTitle;
|
||||
CLocalTreeCtrl m_tree;
|
||||
CStatic m_capAddr;
|
||||
CLocalComboBox m_cboAddr;
|
||||
CXTButton m_btnGoAddr;
|
||||
CXTButton m_btnUpAddr;
|
||||
CXTButton m_btnListStyle;
|
||||
CLocalListCtrl m_list;
|
||||
|
||||
CXTCaption m_capStatus;
|
||||
CTextProgressCtrl m_prgStatusSpace;
|
||||
CStatic m_stcStatusSpace;
|
||||
CStatic m_stcStatusObject;
|
||||
CStatic m_stcStatusMsg;
|
||||
CStatic m_stcSeparator1;
|
||||
CStatic m_stcSeparator2;
|
||||
|
||||
long m_nSelectedCount;
|
||||
__int64 m_nSelectedBytes;
|
||||
long m_nSelectedFiles;
|
||||
long m_nSelectedSecialObj;
|
||||
long m_nTotalCount;
|
||||
__int64 m_nTotalBytes;
|
||||
|
||||
#ifndef _USE_XTREME_TOOLKITPRO
|
||||
IPTxShTreeNode* m_pnodeRoot;
|
||||
#endif // !_USE_XTREME_TOOLKITPRO
|
||||
|
||||
bool m_bUpdating;
|
||||
|
||||
protected:
|
||||
void RedrawControl(int cx, int cy);
|
||||
|
||||
BOOL SetPath(CString sFolder);
|
||||
|
||||
void InvertTracker(int x);
|
||||
|
||||
#ifndef _USE_XTREME_TOOLKITPRO
|
||||
DECLARE_EVENTSINK_MAP()
|
||||
void OnMouseDownLocalCombo(short aButton, short aShift, float ax, float ay);
|
||||
void OnAfterSelChangeLocalTree(LPDISPATCH aSelectedNode);
|
||||
void OnBeforeShellMenuPopupLocalTree(LPDISPATCH aMenu, LPDISPATCH aSelectedNode, long aNextCustomMenuId, BOOL* aCancelMenu);
|
||||
void OnAfterShellMenuSelectionLocalTree(LPDISPATCH aSelectedNode, long aSelectedMenuId, BOOL* aCancelDefaultBehaviour);
|
||||
void OnOleDragOverLocalTree(LPDISPATCH AData, long* aEffect, short* aButton, short* aShift, float ax, float ay, short aState);
|
||||
void OnOleDragDropLocalTree(LPDISPATCH AData, long* aEffect, short* aButton, short* aShift, float ax, float ay);
|
||||
void OnMouseDownLocalTree(short aButton, short aShift, float ax, float ay);
|
||||
void OnFolderChangedLocalList();
|
||||
void OnAfterFillLocalList();
|
||||
void OnBeforeSelectionChangeLocalList(LPDISPATCH aItem, BOOL* aCancel);
|
||||
void OnItemContextMenuLocalList(LPDISPATCH aItem, float ax, float ay, BOOL* aCancelDefaultMenu);
|
||||
void OnBeforeShellMenuPopupLocalList(LPDISPATCH aMenu, LPDISPATCH aSelectedItems, long aNextCustomMenuId, BOOL* aCancelMenu);
|
||||
void OnAfterShellMenuSelectionLocalList(LPDISPATCH aSelectedItems, long aSelectedMenuItemId, BOOL* aCancelDefaultBehaviour);
|
||||
void OnOleDragOverLocalList(LPDISPATCH AData, long* aEffect, short* aButton, short* aShift, float ax, float ay, short aState);
|
||||
void OnOleDragDropLocalList(LPDISPATCH AData, long* aEffect, short* aButton, short* aShift, float ax, float ay);
|
||||
void OnMouseUpLocalList(short aButton, short aShift, float ax, float ay);
|
||||
#endif // !_USE_XTREME_TOOLKITPRO
|
||||
|
||||
public:
|
||||
void RedrawFocus();
|
||||
void RedrawControlEx();
|
||||
void ApplyListStyle();
|
||||
|
||||
BOOL GetSelectedObject(CStringArray &saObject);
|
||||
|
||||
CString GetSelectedPath();
|
||||
BOOL IsSelected();
|
||||
BOOL IsSpecialObjectSelected();
|
||||
|
||||
void RefreshItem();
|
||||
|
||||
void StartDrag();
|
||||
void EndDrag();
|
||||
|
||||
BOOL CopyClipboard(COleDataObject& odo, CString sTargetPath, BOOL bErase = FALSE);
|
||||
|
||||
void DeleteFile();
|
||||
|
||||
protected:
|
||||
virtual void OnDraw(CDC* pDC); // 이 뷰를 그리기 위해 재정의되었습니다.
|
||||
virtual BOOL PreTranslateMessage(MSG* pMsg);
|
||||
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
|
||||
|
||||
public:
|
||||
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
|
||||
afx_msg void OnSize(UINT nType, int cx, int cy);
|
||||
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
|
||||
afx_msg void OnLocalAdvert();
|
||||
afx_msg void OnLocalBtnToolbar();
|
||||
afx_msg void OnLocalBtnUpload();
|
||||
afx_msg void OnLocalBtnDownload();
|
||||
afx_msg void OnLocalBtnNewFolder();
|
||||
afx_msg void OnLocalBtnDelete();
|
||||
afx_msg void OnLocalTitle();
|
||||
// afx_msg void OnLocalBtnGoAddr();
|
||||
afx_msg void OnLocalBtnUpAddr();
|
||||
afx_msg void OnLocalBtnListStyle();
|
||||
|
||||
afx_msg void OnTimer(UINT nIDEvent);
|
||||
afx_msg void OnListNewfolder();
|
||||
afx_msg void OnListRefresh();
|
||||
afx_msg void OnListType0();
|
||||
afx_msg void OnListType1();
|
||||
afx_msg void OnListType2();
|
||||
afx_msg void OnListType3();
|
||||
afx_msg void OnListType4();
|
||||
afx_msg void OnListSort1();
|
||||
afx_msg void OnListSort2();
|
||||
afx_msg void OnListSort3();
|
||||
afx_msg void OnListSort4();
|
||||
afx_msg void OnListPaste();
|
||||
afx_msg void OnListAll();
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,239 @@
|
||||
// MainFrm.h : CMainFrame 클래스의 인터페이스
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
#define WMU_UPDATE_CONTROL_STATUS (WM_USER + 1)
|
||||
|
||||
enum CLIPBOARD_STATE {
|
||||
CBS_NONE = 0,
|
||||
CBS_CUT,
|
||||
CBS_COPY,
|
||||
};
|
||||
|
||||
typedef struct{
|
||||
CString strName;
|
||||
int nCountFolder;
|
||||
int nCountFile;
|
||||
__int64 nSize;
|
||||
}RFOLDERINFO_STRUCT,*LPRFOLDERINFO_STRUCT;
|
||||
|
||||
typedef struct {
|
||||
int nClass;
|
||||
bool bCached;
|
||||
CString sName;
|
||||
CStringArray saAttr;
|
||||
CPtrArray paObject;
|
||||
} RTREEITEM_STRUCT, *PRTREEITEM_STRUCT;
|
||||
|
||||
typedef struct {
|
||||
bool bFolder;
|
||||
CString sName;
|
||||
__int64 nSize;
|
||||
int iIcon;
|
||||
CStringArray saAttr;
|
||||
} RLISTITEM_STRUCT, *PRLISTITEM_STRUCT;
|
||||
|
||||
enum TREENODE_CLASS {
|
||||
TNS_ROOT = 0,
|
||||
TNS_VOLUME,
|
||||
TNS_FOLDER,
|
||||
};
|
||||
|
||||
|
||||
enum FOCUS_LOCATION {
|
||||
FL_LOCAL,
|
||||
FL_REMOTE
|
||||
};
|
||||
|
||||
|
||||
class CMainFrame : public CXTPFrameWnd
|
||||
{
|
||||
public:
|
||||
CMainFrame();
|
||||
|
||||
protected:
|
||||
DECLARE_DYNAMIC(CMainFrame)
|
||||
|
||||
public:
|
||||
void ShowLoginDialog();
|
||||
|
||||
void Connect();
|
||||
void Disconnect();
|
||||
|
||||
bool ContNextOnError(LPCSTR pszErrMSg);
|
||||
int ConfirmExists(LPCSTR pszName, BOOL bMove = TRUE);
|
||||
|
||||
bool MakeRemoteFolder(HTREEITEM hti, CString& sFolder);
|
||||
bool Move1RemoteObject(HTREEITEM hti, CString& sSrcPath, CString& sDstPath);
|
||||
bool Delete1RemoteObject(HTREEITEM hti, CString& sPath);
|
||||
bool Upload(bool bUseSelected = true);
|
||||
bool Download(bool bUseSelected = true);
|
||||
void CopyRemoteObject(HTREEITEM hti, CStringArray& saSrcPath, CString& sDstPath, CStringArray& saSucceed);
|
||||
void MoveRemoteObject(HTREEITEM hti, CStringArray& saSrcPath, CString& sDstPath, CStringArray& saSucceed);
|
||||
void DeleteRemoteObject(HTREEITEM hti, CStringArray& saPath, CStringArray& saSucceed);
|
||||
void SaveUrl();
|
||||
void UpdateVolumeInfo(HTREEITEM hti);
|
||||
void GetFolderInfo(HTREEITEM hti,LPRFOLDERINFO_STRUCT pfolderinfo);
|
||||
|
||||
void BeginWaitMessage(CCmdTarget *pct = NULL);
|
||||
void EndWaitMessage(CCmdTarget *pct = NULL);
|
||||
|
||||
void SetFocus(CWnd* pwnd);
|
||||
|
||||
CString GetProxyHost();
|
||||
int GetProxyPort();
|
||||
|
||||
private:
|
||||
BOOL RestorePlacement();
|
||||
|
||||
void RemoveDragSource(HTREEITEM hti, LPCTSTR pszPath);
|
||||
|
||||
void SaveFileUrl(CString sURI, CStdioFile& file, CString sStag, CString sEtag);
|
||||
|
||||
// 특성
|
||||
public:
|
||||
CFont m_font;
|
||||
|
||||
class CRemoteView* m_pRemoteView;
|
||||
class CLocalView* m_pLocalView;
|
||||
|
||||
// 프레임 상태...
|
||||
BOOL m_bShowTopToolBar;
|
||||
BOOL m_bShowMidToolBar;
|
||||
BOOL m_bShowRemoteTree;
|
||||
BOOL m_bShowLocalTree;
|
||||
int m_nRemoteListType;
|
||||
int m_nLocalListType;
|
||||
BOOL m_bShowRemoteStatus;
|
||||
BOOL m_bShowLocalStatus;
|
||||
|
||||
FOCUS_LOCATION m_fl;
|
||||
CWnd* m_pwndRemote;
|
||||
CWnd* m_pwndLocal;
|
||||
|
||||
CLIPBOARD_STATE m_cbs;
|
||||
bool m_bDragFromRemote;
|
||||
CStringArray m_saDragSource;
|
||||
CString m_sDragTarget;
|
||||
HTREEITEM m_htiDragTarget;
|
||||
|
||||
int m_iComputerIcon;
|
||||
int m_iNetworkIcon;
|
||||
int m_iDriveIcon;
|
||||
int m_iFolderIcon;
|
||||
int m_iAnonyAuthIcon;
|
||||
|
||||
CBitmap m_bmFolder;
|
||||
CBitmap m_bmCopy;
|
||||
CBitmap m_bmCut;
|
||||
CBitmap m_bmPaste;
|
||||
|
||||
CString m_sUserId;
|
||||
CString m_sPassword;
|
||||
|
||||
bool m_bSizing;
|
||||
|
||||
CMapPtrToPtr m_mapHcl;
|
||||
|
||||
private:
|
||||
CXTSplitterWnd m_splitter;
|
||||
|
||||
bool m_bInitialzed;
|
||||
|
||||
// 재정의
|
||||
public:
|
||||
virtual BOOL PreTranslateMessage(MSG* pMsg);
|
||||
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
|
||||
virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
|
||||
|
||||
// 구현
|
||||
public:
|
||||
virtual ~CMainFrame();
|
||||
#ifdef _DEBUG
|
||||
virtual void AssertValid() const;
|
||||
virtual void Dump(CDumpContext& dc) const;
|
||||
#endif
|
||||
|
||||
// 메시지 맵 함수를 생성했습니다.
|
||||
public:
|
||||
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
|
||||
afx_msg void OnClose();
|
||||
afx_msg void OnSize(UINT nType, int cx, int cy);
|
||||
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
|
||||
afx_msg void OnFileReconnect();
|
||||
afx_msg void OnUpdateFileReconnect(CCmdUI *pCmdUI);
|
||||
afx_msg void OnFileDisconnect();
|
||||
afx_msg void OnUpdateFileDisconnect(CCmdUI *pCmdUI);
|
||||
afx_msg void OnFileUpload();
|
||||
afx_msg void OnUpdateFileUpload(CCmdUI *pCmdUI);
|
||||
afx_msg void OnFileDownload();
|
||||
afx_msg void OnUpdateFileDownload(CCmdUI *pCmdUI);
|
||||
afx_msg void OnViewRefresh();
|
||||
afx_msg void OnViewLtree();
|
||||
afx_msg void OnUpdateViewLtree(CCmdUI *pCmdUI);
|
||||
afx_msg void OnViewRtree();
|
||||
afx_msg void OnUpdateViewRtree(CCmdUI *pCmdUI);
|
||||
afx_msg void OnViewLstatus();
|
||||
afx_msg void OnUpdateViewLstatus(CCmdUI *pCmdUI);
|
||||
afx_msg void OnViewRstatus();
|
||||
afx_msg void OnUpdateViewRstatus(CCmdUI *pCmdUI);
|
||||
afx_msg void OnViewMidToolbar();
|
||||
afx_msg void OnUpdateViewMidToolbar(CCmdUI *pCmdUI);
|
||||
afx_msg void OnViewRlistType1();
|
||||
afx_msg void OnUpdateViewRlistType1(CCmdUI *pCmdUI);
|
||||
afx_msg void OnViewRlistType2();
|
||||
afx_msg void OnUpdateViewRlistType2(CCmdUI *pCmdUI);
|
||||
afx_msg void OnViewRlistType3();
|
||||
afx_msg void OnUpdateViewRlistType3(CCmdUI *pCmdUI);
|
||||
afx_msg void OnViewRlistType4();
|
||||
afx_msg void OnUpdateViewRlistType4(CCmdUI *pCmdUI);
|
||||
afx_msg void OnViewLlistType0();
|
||||
afx_msg void OnUpdateViewLlistType0(CCmdUI *pCmdUI);
|
||||
afx_msg void OnViewLlistType1();
|
||||
afx_msg void OnUpdateViewLlistType1(CCmdUI *pCmdUI);
|
||||
afx_msg void OnViewLlistType2();
|
||||
afx_msg void OnUpdateViewLlistType2(CCmdUI *pCmdUI);
|
||||
afx_msg void OnViewLlistType3();
|
||||
afx_msg void OnUpdateViewLlistType3(CCmdUI *pCmdUI);
|
||||
afx_msg void OnViewLlistType4();
|
||||
afx_msg void OnUpdateViewLlistType4(CCmdUI *pCmdUI);
|
||||
afx_msg void OnCfgOverwriteAsk();
|
||||
afx_msg void OnUpdateCfgOverwriteAsk(CCmdUI *pCmdUI);
|
||||
afx_msg void OnCfgOverwrite1();
|
||||
afx_msg void OnUpdateCfgOverwrite1(CCmdUI *pCmdUI);
|
||||
afx_msg void OnCfgOverwrite2();
|
||||
afx_msg void OnUpdateCfgOverwrite2(CCmdUI *pCmdUI);
|
||||
afx_msg void OnCfgOverwrite3();
|
||||
afx_msg void OnUpdateCfgOverwrite3(CCmdUI *pCmdUI);
|
||||
afx_msg void OnCfgOverwrite4();
|
||||
afx_msg void OnUpdateCfgOverwrite4(CCmdUI *pCmdUI);
|
||||
afx_msg void OnCfgConfig();
|
||||
|
||||
afx_msg LRESULT OnTransferDlgClose(WPARAM, LPARAM);
|
||||
afx_msg LRESULT OnUpdateControlStatus(WPARAM wParam, LPARAM lParam);
|
||||
|
||||
int OnCreateControl(LPCREATECONTROLSTRUCT lpCreateControl);
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
#define MIN_REMOTE_HEIGHT 100
|
||||
#define MIN_TREE_WIDTH 90
|
||||
#define MIN_LIST_WIDTH 150
|
||||
|
||||
#define HIGHLIGHT_SIZE 1
|
||||
#define TOOLBAR_HEIGHT 42
|
||||
#define TOOLBAR_BTN_HEIGHT 6
|
||||
#define TOOLBAR_BTN_WIDTH 75
|
||||
#define CAPTION_HEIGHT 22
|
||||
#define ADDRESS_WIDTH 35
|
||||
#define SPLITTER_SIZE 5
|
||||
#define ADDRESS_BTN_WIDTH 23
|
||||
#define HEADER_HEIGHT (HIGHLIGHT_SIZE + CAPTION_HEIGHT)
|
||||
#define STATUS_HEIGHT 19
|
||||
#define STATUS_TEXT_HEIGHT 12
|
||||
|
||||
#define TIMER_ID_UPDATESTATUS 1
|
||||
#define TIMER_ID_CHANGEFOLDER 2
|
||||
@@ -0,0 +1,248 @@
|
||||
// Options.cpp: Implementierungsdatei
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "afxmt.h"
|
||||
#include "ConsoleApp.h"
|
||||
|
||||
#include "Options.h"
|
||||
#include "MarkupSTL.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
bool COptions::m_bInitialized = false;
|
||||
CString COptions::m_sConfigFile = "";
|
||||
CCriticalSection COptions::m_csSync;
|
||||
CMarkupSTL COptions::m_markup;
|
||||
|
||||
COptions::OPTIONCACHE_STRUCT COptions::m_aoc[OPTIONS_NUM];
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Dialogfeld COptions
|
||||
|
||||
typedef struct
|
||||
{
|
||||
TCHAR szName[35];
|
||||
int type;
|
||||
} OPTION_STRUCT;
|
||||
|
||||
static OPTION_STRUCT g_aopt[OPTIONS_NUM] = {
|
||||
_T("Windows Position"), 0, _T("Splitter Size"), 0,
|
||||
_T("Remote Tree Size"), 1, _T("Local Tree Size"), 1,
|
||||
_T("Show Remote Tree"), 1, _T("Show Local Tree"), 1,
|
||||
_T("Remote List Style"), 1, _T("Local List Style"), 1,
|
||||
_T("Show Remote Status"), 1, _T("Show Local Status"), 1,
|
||||
_T("Remote Column Widths"), 0, _T("Local Column Widths"), 0,
|
||||
_T("Remote Column Sort"), 1, _T("Local Column Sort"), 1,
|
||||
_T("Show Top Toolbar"), 1, _T("Show Mid Toolbar"), 1,
|
||||
_T("User ID"), 0, _T("Password"), 0,
|
||||
_T("Auto Connect"), 1, _T("Save Password"), 1,
|
||||
_T("File Exists Action"), 1,
|
||||
_T("After Execution"), 1,
|
||||
_T("Search Sub Url"), 1, _T("Url Tag Type"), 1,
|
||||
_T("Url Start Tag"), 0, _T("Url End Tag"), 0,
|
||||
_T("Proxy Host"), 0, _T("Proxy Port"), 0,
|
||||
_T("Use IE Proxy"), 1, _T("Write Policy"), 1
|
||||
};
|
||||
|
||||
|
||||
void COptions::SetOption(int nOptionID,int nValue)
|
||||
{
|
||||
ASSERT(g_aopt[(OPTION_TYPE)nOptionID].type == OT_NUMBER);
|
||||
|
||||
CSingleLock lock(&m_csSync, TRUE);
|
||||
|
||||
m_aoc[nOptionID].bCached = true;
|
||||
m_aoc[nOptionID].type = OT_NUMBER;
|
||||
m_aoc[nOptionID].nValue = nValue;
|
||||
|
||||
m_markup.ResetPos();
|
||||
if (!m_markup.FindChildElem(_T("Settings")))
|
||||
m_markup.AddChildElem(_T("Settings"));
|
||||
|
||||
CString sValue;
|
||||
sValue.Format(_T("%d"), nValue);
|
||||
|
||||
m_markup.IntoElem();
|
||||
BOOL bRet = m_markup.FindChildElem();
|
||||
while (bRet) {
|
||||
CString sName = m_markup.GetChildAttrib( _T("name"));
|
||||
|
||||
if (_tcscmp(sName, g_aopt[nOptionID].szName) == 0) {
|
||||
m_markup.SetChildAttrib(_T("name"), g_aopt[nOptionID].szName);
|
||||
m_markup.SetChildAttrib(_T("type"), _T("numeric"));
|
||||
m_markup.SetChildData(sValue);
|
||||
break;
|
||||
}
|
||||
|
||||
bRet = m_markup.FindChildElem();
|
||||
}
|
||||
|
||||
if (!bRet) {
|
||||
m_markup.InsertChildElem(_T("Item"), sValue);
|
||||
m_markup.SetChildAttrib(_T("name"), g_aopt[nOptionID].szName);
|
||||
m_markup.SetChildAttrib(_T("type"), _T("numeric"));
|
||||
}
|
||||
|
||||
m_markup.Save(m_sConfigFile);
|
||||
}
|
||||
|
||||
void COptions::SetOption(int nOptionID, CString sValue)
|
||||
{
|
||||
ASSERT((OPTION_TYPE)g_aopt[nOptionID].type == OT_STRING);
|
||||
|
||||
CSingleLock lock(&m_csSync, TRUE);
|
||||
|
||||
m_aoc[nOptionID].bCached = true;
|
||||
m_aoc[nOptionID].type = OT_STRING;
|
||||
m_aoc[nOptionID].sValue = sValue;
|
||||
|
||||
m_markup.ResetPos();
|
||||
if (!m_markup.FindChildElem(_T("Settings")))
|
||||
m_markup.AddChildElem(_T("Settings"));
|
||||
|
||||
m_markup.IntoElem();
|
||||
|
||||
CString sTag;
|
||||
sTag = m_markup.GetTagName();
|
||||
|
||||
BOOL bRet = m_markup.FindChildElem();
|
||||
while (bRet) {
|
||||
CString sName = m_markup.GetChildAttrib(_T("name"));
|
||||
if (_tcscmp(sName, g_aopt[nOptionID].szName) == 0) {
|
||||
m_markup.SetChildAttrib(_T("name"), g_aopt[nOptionID].szName);
|
||||
m_markup.SetChildAttrib(_T("type"), _T("string"));
|
||||
m_markup.SetChildData(sValue);
|
||||
break;
|
||||
}
|
||||
|
||||
bRet = m_markup.FindChildElem();
|
||||
}
|
||||
|
||||
if (!bRet) {
|
||||
m_markup.InsertChildElem(_T("Item"), sValue);
|
||||
m_markup.SetChildAttrib(_T("name"), g_aopt[nOptionID].szName);
|
||||
m_markup.SetChildAttrib(_T("type"), _T("string"));
|
||||
}
|
||||
|
||||
m_markup.Save(m_sConfigFile);
|
||||
}
|
||||
|
||||
int COptions::GetOptionVal(int nOptionID)
|
||||
{
|
||||
ASSERT((OPTION_TYPE)g_aopt[nOptionID].type == OT_NUMBER);
|
||||
|
||||
CSingleLock lock(&m_csSync, TRUE);
|
||||
|
||||
int nResult = m_aoc[nOptionID].nValue;
|
||||
if (!m_aoc[nOptionID].bCached) {
|
||||
switch (nOptionID) {
|
||||
case OPTION_SHOWTOPTOOLBAR:
|
||||
case OPTION_SHOWMIDTOOLBAR:
|
||||
nResult = 1;
|
||||
break;
|
||||
case OPTION_SHOWLOCALTREE:
|
||||
case OPTION_SHOWREMOTETREE:
|
||||
nResult = 1;
|
||||
break;
|
||||
case OPTION_SHOWLOCALSTATUS:
|
||||
case OPTION_SHOWREMOTESTATUS:
|
||||
nResult = 1;
|
||||
break;
|
||||
case OPTION_LOCALTREESIZE:
|
||||
case OPTION_REMOTETREESIZE:
|
||||
nResult = 300;
|
||||
break;
|
||||
case OPTION_LOCALLISTSTYLE:
|
||||
case OPTION_REMOTELISTSTYLE:
|
||||
nResult = 4;
|
||||
break;
|
||||
case OPTION_USEIEPROXY:
|
||||
case OPTION_SEARCHSUBURL:
|
||||
nResult = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return nResult;
|
||||
}
|
||||
|
||||
CString COptions::GetOption(int nOptionID)
|
||||
{
|
||||
ASSERT((OPTION_TYPE)g_aopt[nOptionID].type == OT_STRING);
|
||||
|
||||
CSingleLock lock(&m_csSync, TRUE);
|
||||
|
||||
CString sResult = m_aoc[nOptionID].sValue;
|
||||
if (!m_aoc[nOptionID].bCached) {
|
||||
// if (nOptionID == OPTION_URLDIVIDER)
|
||||
// sResult = _T("|");
|
||||
}
|
||||
|
||||
return sResult;
|
||||
}
|
||||
|
||||
bool COptions::Init(LPCTSTR pszConfigFile)
|
||||
{
|
||||
CSingleLock lock(&m_csSync, TRUE);
|
||||
|
||||
if (m_bInitialized)
|
||||
return true;
|
||||
|
||||
m_sConfigFile = pszConfigFile;
|
||||
|
||||
m_bInitialized = true;
|
||||
|
||||
for (int i = 0; i < OPTIONS_NUM; i++)
|
||||
m_aoc[i].bCached = false;
|
||||
|
||||
CFileStatus64 fs;
|
||||
if (!GetStatus64(m_sConfigFile, fs) || fs.m_size <= 45) {
|
||||
m_markup.AddElem(_T(APP_TITLE));
|
||||
m_markup.Save(m_sConfigFile);
|
||||
}
|
||||
else if (fs.m_attribute & FILE_ATTRIBUTE_DIRECTORY)
|
||||
return false;
|
||||
|
||||
if (!m_markup.Load(m_sConfigFile))
|
||||
return false;
|
||||
|
||||
if (!m_markup.FindElem(_T(APP_TITLE)))
|
||||
return false;
|
||||
|
||||
if (!m_markup.FindChildElem(_T("Settings")))
|
||||
m_markup.AddChildElem(_T("Settings"));
|
||||
|
||||
CString sTag;
|
||||
|
||||
m_markup.IntoElem();
|
||||
sTag = m_markup.GetTagName();
|
||||
while (m_markup.FindChildElem()) {
|
||||
CString sValue = m_markup.GetChildData();
|
||||
CString sName = m_markup.GetChildAttrib(_T("name"));
|
||||
CString sType = m_markup.GetChildAttrib(_T("type"));
|
||||
|
||||
for (int i = 0;i < OPTIONS_NUM; i++) {
|
||||
if (_tcscmp(sName, g_aopt[i].szName) == 0) {
|
||||
m_aoc[i].bCached = true;
|
||||
if (sType == "numeric") {
|
||||
m_aoc[i].type = OT_NUMBER;
|
||||
m_aoc[i].nValue = _ttoi(sValue);
|
||||
}
|
||||
else {
|
||||
if (sType != "string")
|
||||
::AfxTrace( _T("Unknown option type '%s' for item '%s', assuming string\n"), sType, sName);
|
||||
m_aoc[i].type = OT_STRING;
|
||||
m_aoc[i].sValue = sValue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
// Options.h
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "MarkupSTL.h"
|
||||
|
||||
#define OPTIONS_NUM 30
|
||||
|
||||
class COptions
|
||||
{
|
||||
public:
|
||||
static bool Init(LPCTSTR pszConfigFile);
|
||||
|
||||
static void SetOption(int OptionID,CString sValue);
|
||||
static void SetOption(int OptionID,int nValue);
|
||||
|
||||
static CString GetOption(int nOptionID);
|
||||
static int GetOptionVal(int nOptionID);
|
||||
|
||||
static class CCriticalSection m_csSync;
|
||||
|
||||
protected:
|
||||
static CString m_sConfigFile;
|
||||
|
||||
enum OPTION_TYPE {
|
||||
OT_STRING = 0,
|
||||
OT_NUMBER,
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
bool bCached;
|
||||
OPTION_TYPE type;
|
||||
CString sValue;
|
||||
int nValue;
|
||||
} OPTIONCACHE_STRUCT;
|
||||
|
||||
static bool m_bInitialized;
|
||||
static CMarkupSTL m_markup;
|
||||
|
||||
static OPTIONCACHE_STRUCT m_aoc[OPTIONS_NUM];
|
||||
};
|
||||
|
||||
enum OPTIONS {
|
||||
OPTION_WINDOWSPOS = 0,
|
||||
OPTION_SPLITTERSIZE,
|
||||
OPTION_REMOTETREESIZE,
|
||||
OPTION_LOCALTREESIZE,
|
||||
OPTION_SHOWREMOTETREE,
|
||||
OPTION_SHOWLOCALTREE,
|
||||
OPTION_REMOTELISTSTYLE,
|
||||
OPTION_LOCALLISTSTYLE,
|
||||
OPTION_SHOWREMOTESTATUS,
|
||||
OPTION_SHOWLOCALSTATUS, // 10
|
||||
OPTION_REMOTECOLUMNWIDTHS,
|
||||
OPTION_LOCALCOLUMNWIDTHS,
|
||||
OPTION_REMOTECOLUMNSORT,
|
||||
OPTION_LOCALCOLUMNSORT,
|
||||
OPTION_SHOWTOPTOOLBAR,
|
||||
OPTION_SHOWMIDTOOLBAR,
|
||||
OPTION_USERID,
|
||||
OPTION_PASSWORD,
|
||||
OPTION_AUTOCONNECT,
|
||||
OPTION_SAVEPASSWORD, // 20
|
||||
OPTION_FILEEXISTSACTION,
|
||||
OPTION_AFTEREXEC,
|
||||
OPTION_SEARCHSUBURL,
|
||||
OPTION_URLTAGTYPE,
|
||||
OPTION_URLSTAG,
|
||||
OPTION_URLETAG,
|
||||
OPTION_PROXYHOST,
|
||||
OPTION_PROXYPORT,
|
||||
OPTION_USEIEPROXY,
|
||||
OPTION_WRITEPOLICY,
|
||||
};
|
||||
@@ -0,0 +1,290 @@
|
||||
// RLDropTarget.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "RLDropTarget.h"
|
||||
#include "MainFrm.h"
|
||||
#include "RemoteView.h"
|
||||
#include "RemoteTreeCtrl.h"
|
||||
#include "RemoteListCtrl.h"
|
||||
|
||||
|
||||
bool IsPathItself(CString sSrcPath, CString sDstPath);
|
||||
|
||||
// CRLDropTarget
|
||||
#ifndef _AFXDLL
|
||||
// 2014.07.25 Support statically linked to MFC
|
||||
IMPLEMENT_DYNAMIC(CRLDropTarget, CObject)
|
||||
#else
|
||||
IMPLEMENT_DYNAMIC(CRLDropTarget, COleDropTarget)
|
||||
#endif //
|
||||
CRLDropTarget::CRLDropTarget()
|
||||
{
|
||||
}
|
||||
|
||||
CRLDropTarget::~CRLDropTarget()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CRLDropTarget, COleDropTarget)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CRLDropTarget 메시지 처리기입니다.
|
||||
DROPEFFECT CRLDropTarget::OnDragEnter(CWnd* pwnd, COleDataObject* podo, DWORD dwKeyState, CPoint point)
|
||||
{
|
||||
m_hwndFocused = GetFocus();
|
||||
|
||||
((CRemoteView*)pwnd->GetParent())->m_bUpdating = TRUE;
|
||||
|
||||
m_iPrevItem = -1;
|
||||
|
||||
CMainFrame* pmf = (CMainFrame*)AfxGetMainWnd();
|
||||
|
||||
if (!pmf->m_bDragFromRemote) {
|
||||
if (!podo->IsDataAvailable(CF_HDROP))
|
||||
return DROPEFFECT_NONE;
|
||||
|
||||
pmf->m_saDragSource.RemoveAll();
|
||||
if (!GetDragFileInfo(podo))
|
||||
return DROPEFFECT_NONE;
|
||||
}
|
||||
|
||||
m_dePrev = DROPEFFECT_NONE;
|
||||
|
||||
return OnDragOver(pwnd, podo, dwKeyState, point);
|
||||
}
|
||||
|
||||
DROPEFFECT CRLDropTarget::OnDragOver(CWnd* pwnd, COleDataObject* podo, DWORD dwKeyState, CPoint point)
|
||||
{
|
||||
DROPEFFECT de = DROPEFFECT_NONE;
|
||||
|
||||
if (((CMainFrame*)AfxGetMainWnd())->m_saDragSource.GetCount() == 0)
|
||||
return de;
|
||||
|
||||
CRemoteListCtrl* plist = (CRemoteListCtrl*)pwnd;
|
||||
|
||||
plist->SetFocus();
|
||||
|
||||
if (m_iPrevItem >= 0)
|
||||
plist->SetItemState(m_iPrevItem, m_dwPrevItemState, LVIS_SELECTED);
|
||||
|
||||
CMainFrame* pmf = (CMainFrame*)AfxGetMainWnd();
|
||||
|
||||
int iItem = plist->HitTest(point);
|
||||
if (iItem < 0) {
|
||||
m_iPrevItem = -1;
|
||||
|
||||
CRemoteTreeCtrl* ptree = ((CRemoteView*)pwnd->GetParent())->GetTreeCtrl();
|
||||
|
||||
HTREEITEM htiSelected = ptree->GetSelectedItem();
|
||||
|
||||
if (!pmf->m_bDragFromRemote) {
|
||||
if (htiSelected != ptree->GetRootItem())
|
||||
de = DROPEFFECT_COPY;
|
||||
}
|
||||
else {
|
||||
CString sSourcePath = pmf->m_saDragSource.GetAt(0);
|
||||
CString sTargetPath = ptree->GetPath(htiSelected);
|
||||
|
||||
sSourcePath = sSourcePath.Left(sSourcePath.ReverseFind('/'));
|
||||
|
||||
if (ptree->GetVolumeItem(htiSelected) == pmf->m_htiDragTarget
|
||||
&& sSourcePath != sTargetPath.Left(sSourcePath.GetLength()))
|
||||
// 2014.07.25 dadamin copy 제거
|
||||
#ifdef _USE_COPY_
|
||||
de = dwKeyState & MK_CONTROL ? DROPEFFECT_COPY : DROPEFFECT_MOVE;
|
||||
#else // !_USE_COPY_
|
||||
de = dwKeyState & MK_CONTROL ? DROPEFFECT_NONE : DROPEFFECT_MOVE;
|
||||
#endif // _USE_COPY_
|
||||
}
|
||||
}
|
||||
else {
|
||||
m_dwPrevItemState = plist->GetItemState(iItem, LVIS_SELECTED);
|
||||
plist->SetItemState(iItem, LVIS_SELECTED, LVIS_SELECTED);
|
||||
|
||||
PRLISTITEM_STRUCT prli = (PRLISTITEM_STRUCT)plist->GetItemData(iItem);
|
||||
|
||||
m_iPrevItem = iItem;
|
||||
|
||||
if (prli->bFolder) {
|
||||
if (!pmf->m_bDragFromRemote)
|
||||
de = DROPEFFECT_COPY;
|
||||
else {
|
||||
CRemoteTreeCtrl* ptree = ((CRemoteView*)pwnd->GetParent())->GetTreeCtrl();
|
||||
|
||||
HTREEITEM htiSelected = ptree->GetSelectedItem();
|
||||
|
||||
if (htiSelected == ptree->GetRootItem()) {
|
||||
CString sPath = ((CRemoteListCtrl*)pwnd)->GetItemText(iItem, 0);
|
||||
HTREEITEM hti = ptree->GetChildItem(ptree->GetRootItem());
|
||||
while (hti) {
|
||||
if (sPath == ptree->GetItemText(hti)) {
|
||||
if (ptree->GetVolumeItem(hti) == pmf->m_htiDragTarget)
|
||||
// 2014.07.25 dadmain copy 제거
|
||||
#ifdef _USE_COPY_
|
||||
de = dwKeyState & MK_CONTROL ? DROPEFFECT_COPY : DROPEFFECT_MOVE;
|
||||
#else // !_USE_COPY_
|
||||
de = dwKeyState & MK_CONTROL ? DROPEFFECT_NONE : DROPEFFECT_MOVE;
|
||||
#endif // _USE_COPY_
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
hti = ptree->GetNextSiblingItem(hti);
|
||||
}
|
||||
}
|
||||
else {
|
||||
CString sTargetPath = ptree->GetPath(htiSelected) + "/" + plist->GetItemText(iItem, 0);
|
||||
|
||||
BOOL bAvail = TRUE;
|
||||
if (ptree->GetVolumeItem(htiSelected) != pmf->m_htiDragTarget)
|
||||
bAvail = FALSE;
|
||||
else {
|
||||
for (int i = 0; i < pmf->m_saDragSource.GetCount(); i++) {
|
||||
if (IsPathItself(pmf->m_saDragSource[i], sTargetPath)) {
|
||||
bAvail = FALSE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (bAvail)
|
||||
// 2014.07.25 dadamin copy 제거
|
||||
#ifdef _USE_COPY_
|
||||
de = dwKeyState & MK_CONTROL ? DROPEFFECT_COPY : DROPEFFECT_MOVE;
|
||||
#else // !_USE_COPY_
|
||||
de = dwKeyState & MK_CONTROL ? DROPEFFECT_NONE : DROPEFFECT_MOVE;
|
||||
#endif //_USE_COPY_
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_dePrev = de;
|
||||
|
||||
return de;
|
||||
}
|
||||
|
||||
void CRLDropTarget::OnDragLeave(CWnd* pwnd)
|
||||
{
|
||||
((CRemoteView*)pwnd->GetParent())->m_bUpdating = FALSE;
|
||||
|
||||
if (m_iPrevItem >= 0) {
|
||||
CRemoteListCtrl* plist = (CRemoteListCtrl*)pwnd;
|
||||
|
||||
plist->SetItemState(m_iPrevItem, m_dwPrevItemState, LVIS_SELECTED);
|
||||
}
|
||||
|
||||
if (m_hwndFocused)
|
||||
CWnd::FromHandle(m_hwndFocused)->SetFocus();
|
||||
}
|
||||
|
||||
BOOL CRLDropTarget::OnDrop(CWnd* pwnd, COleDataObject* podo, DROPEFFECT de, CPoint point)
|
||||
{
|
||||
CString sPath = m_iPrevItem >= 0 ? "/" + ((CRemoteListCtrl*)pwnd)->GetItemText(m_iPrevItem, 0) : "";
|
||||
|
||||
if (m_dePrev != DROPEFFECT_NONE) {
|
||||
CMainFrame* pmf = (CMainFrame*)AfxGetMainWnd();
|
||||
CRemoteTreeCtrl* ptree = ((CRemoteView*)pwnd->GetParent())->GetTreeCtrl();
|
||||
|
||||
HTREEITEM hti = NULL;
|
||||
|
||||
if (!pmf->m_bDragFromRemote) {
|
||||
// 리스트에 표시된 아이템이 볼륨이면...
|
||||
if (ptree->GetSelectedItem() == ptree->GetRootItem()) {
|
||||
hti = ptree->GetChildItem(ptree->GetRootItem());
|
||||
while (hti) {
|
||||
if (sPath.Mid(1) == ptree->GetItemText(hti)) {
|
||||
sPath = "";
|
||||
break;
|
||||
}
|
||||
|
||||
hti = ptree->GetNextSiblingItem(hti);
|
||||
}
|
||||
}
|
||||
else {
|
||||
hti = ptree->GetSelectedItem();
|
||||
}
|
||||
|
||||
pmf->m_sDragTarget = ptree->GetPath(hti) + sPath;
|
||||
pmf->m_htiDragTarget = ptree->GetVolumeItem(hti);
|
||||
|
||||
pmf->Upload(false);
|
||||
}
|
||||
else {
|
||||
HTREEITEM htiTarget = ptree->GetSelectedItem();
|
||||
if (htiTarget == ptree->GetRootItem())
|
||||
sPath = "";
|
||||
|
||||
pmf->m_sDragTarget = ptree->GetPath(htiTarget) + sPath;
|
||||
|
||||
pmf->BeginWaitMessage();
|
||||
|
||||
CStringArray saSucceed;
|
||||
if (de == DROPEFFECT_COPY)
|
||||
pmf->CopyRemoteObject(pmf->m_htiDragTarget, pmf->m_saDragSource, pmf->m_sDragTarget, saSucceed);
|
||||
else
|
||||
pmf->MoveRemoteObject(pmf->m_htiDragTarget, pmf->m_saDragSource, pmf->m_sDragTarget, saSucceed);
|
||||
|
||||
CRemoteView* pview = (CRemoteView*)ptree->GetParent();
|
||||
for (int i = 0; i < saSucceed.GetCount(); i++) {
|
||||
HTREEITEM hti = ptree->GetItem(pmf->m_htiDragTarget, saSucceed[i]);
|
||||
if (!hti)
|
||||
continue;
|
||||
|
||||
CString sName = saSucceed[i].Mid(saSucceed[i].ReverseFind('/') + 1);
|
||||
if (!ptree->IsExistsChild(htiTarget, sName))
|
||||
pview->AppendObject(htiTarget, true, sName, 0, "");
|
||||
if (de == DROPEFFECT_MOVE)
|
||||
ptree->DeleteItem(hti);
|
||||
}
|
||||
|
||||
pmf->EndWaitMessage();
|
||||
|
||||
if (saSucceed.GetCount() > 0)
|
||||
pmf->m_pRemoteView->RefreshItem();
|
||||
}
|
||||
}
|
||||
|
||||
OnDragLeave(pwnd);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL CRLDropTarget::GetDragFileInfo(COleDataObject* podo)
|
||||
{
|
||||
STGMEDIUM sm;
|
||||
FORMATETC fe = {CF_HDROP, (DVTARGETDEVICE FAR*)NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
|
||||
|
||||
if (!podo->GetData(CF_HDROP, &sm, &fe))
|
||||
return FALSE;
|
||||
|
||||
HDROP hdrop = (HDROP)sm.hGlobal;
|
||||
|
||||
int nDragCount = ::DragQueryFile(hdrop, 0xFFFFFFFF, NULL, 0);
|
||||
if (nDragCount == 0)
|
||||
return FALSE;
|
||||
|
||||
CMainFrame* pmf = (CMainFrame*)AfxGetMainWnd();
|
||||
|
||||
char szFile[MAX_PATH];
|
||||
for (int i = 0; i < nDragCount; i++) {
|
||||
::DragQueryFile(hdrop, i, szFile, sizeof(szFile));
|
||||
|
||||
CString sFile(szFile);
|
||||
if (sFile.Find('\\') < 0) {
|
||||
pmf->m_saDragSource.RemoveAll();
|
||||
break;
|
||||
}
|
||||
|
||||
pmf->m_saDragSource.Add(sFile);
|
||||
}
|
||||
|
||||
if (pmf->m_saDragSource.GetCount() == 0)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
// CRLDropTarget ¸í·É ´ë»óÀÔ´Ï´Ù.
|
||||
|
||||
class CRLDropTarget : public COleDropTarget
|
||||
{
|
||||
DECLARE_DYNAMIC(CRLDropTarget)
|
||||
|
||||
public:
|
||||
CRLDropTarget();
|
||||
virtual ~CRLDropTarget();
|
||||
|
||||
// Override
|
||||
protected:
|
||||
virtual DROPEFFECT OnDragEnter(CWnd*, COleDataObject*, DWORD, CPoint);
|
||||
virtual DROPEFFECT OnDragOver(CWnd*, COleDataObject*, DWORD, CPoint);
|
||||
virtual void OnDragLeave(CWnd*);
|
||||
virtual BOOL OnDrop(CWnd*, COleDataObject*, DROPEFFECT, CPoint);
|
||||
|
||||
protected:
|
||||
BOOL GetDragFileInfo(COleDataObject* podo);
|
||||
|
||||
protected:
|
||||
DROPEFFECT m_dePrev;
|
||||
|
||||
int m_iPrevItem;
|
||||
DWORD m_dwPrevItemState;
|
||||
|
||||
HWND m_hwndFocused;
|
||||
|
||||
protected:
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
@@ -0,0 +1,207 @@
|
||||
// RTDropTarget.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "RTDropTarget.h"
|
||||
#include "MainFrm.h"
|
||||
#include "RemoteView.h"
|
||||
#include "RemoteTreeCtrl.h"
|
||||
|
||||
|
||||
bool IsPathItself(CString sSrcPath, CString sDstPath);
|
||||
|
||||
// CRTDropTarget
|
||||
|
||||
#ifndef _AFXDLL
|
||||
// 2014.07.25 Support statically linked to MFC
|
||||
IMPLEMENT_DYNAMIC(CRTDropTarget, CObject)
|
||||
#else
|
||||
IMPLEMENT_DYNAMIC(CRTDropTarget, COleDropTarget)
|
||||
#endif
|
||||
CRTDropTarget::CRTDropTarget()
|
||||
{
|
||||
}
|
||||
|
||||
CRTDropTarget::~CRTDropTarget()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CRTDropTarget, COleDropTarget)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CRTDropTarget 메시지 처리기입니다.
|
||||
DROPEFFECT CRTDropTarget::OnDragEnter(CWnd* pwnd, COleDataObject* podo, DWORD dwKeyState, CPoint point)
|
||||
{
|
||||
m_hwndFocused = GetFocus();
|
||||
|
||||
CMainFrame* pmf = (CMainFrame*)AfxGetMainWnd();
|
||||
|
||||
if (!pmf->m_bDragFromRemote) {
|
||||
if (!podo->IsDataAvailable(CF_HDROP))
|
||||
return DROPEFFECT_NONE;
|
||||
|
||||
((CMainFrame*)AfxGetMainWnd())->m_saDragSource.RemoveAll();
|
||||
if (!GetDragFileInfo(podo))
|
||||
return DROPEFFECT_NONE;
|
||||
}
|
||||
|
||||
CRemoteTreeCtrl* ptree = (CRemoteTreeCtrl*)pwnd;
|
||||
|
||||
ptree->SetFocus();
|
||||
|
||||
m_htiSelected = m_htiPrev = ptree->GetSelectedItem();
|
||||
|
||||
m_dePrev = DROPEFFECT_NONE;
|
||||
|
||||
return OnDragOver(pwnd, podo, dwKeyState, point);
|
||||
}
|
||||
|
||||
DROPEFFECT CRTDropTarget::OnDragOver(CWnd* pwnd, COleDataObject* podo, DWORD dwKeyState, CPoint point)
|
||||
{
|
||||
DROPEFFECT de = DROPEFFECT_NONE;
|
||||
|
||||
if (((CMainFrame*)AfxGetMainWnd())->m_saDragSource.GetCount() == 0)
|
||||
return de;
|
||||
|
||||
CRemoteTreeCtrl* ptree = (CRemoteTreeCtrl*)pwnd;
|
||||
|
||||
HTREEITEM hti = ptree->HitTest(point);
|
||||
if (!hti)
|
||||
return de;
|
||||
|
||||
ptree->SetItemState(m_htiPrev, NULL, TVIS_SELECTED);
|
||||
ptree->SetItemState(m_htiPrev = hti, TVIS_SELECTED, TVIS_SELECTED);
|
||||
|
||||
CMainFrame* pmf = (CMainFrame*)AfxGetMainWnd();
|
||||
|
||||
if (hti != ptree->GetRootItem()) {
|
||||
if (!pmf->m_bDragFromRemote)
|
||||
de = DROPEFFECT_COPY;
|
||||
else {
|
||||
CString sTargetPath = ptree->GetPath(hti);
|
||||
|
||||
BOOL bAvail = TRUE;
|
||||
if (ptree->GetVolumeItem(hti) != pmf->m_htiDragTarget)
|
||||
bAvail = FALSE;
|
||||
else {
|
||||
for (int i = 0; i < pmf->m_saDragSource.GetCount(); i++) {
|
||||
if (IsPathItself(pmf->m_saDragSource[i], sTargetPath)) {
|
||||
bAvail = FALSE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (bAvail)
|
||||
// 2014.07.25 dadamin copy 제거
|
||||
#ifdef _USE_COPY_
|
||||
de = dwKeyState & MK_CONTROL ? DROPEFFECT_COPY : DROPEFFECT_MOVE;
|
||||
#else // !_USE_COPY_
|
||||
de = dwKeyState & MK_CONTROL ? DROPEFFECT_NONE : DROPEFFECT_MOVE;
|
||||
#endif // _USE_COPY_
|
||||
}
|
||||
}
|
||||
|
||||
m_dePrev = de;
|
||||
|
||||
return de;
|
||||
}
|
||||
|
||||
void CRTDropTarget::OnDragLeave(CWnd* pwnd)
|
||||
{
|
||||
CRemoteTreeCtrl* ptree = (CRemoteTreeCtrl*)pwnd;
|
||||
|
||||
ptree->SetItemState(m_htiPrev, NULL, TVIS_SELECTED);
|
||||
ptree->SetItemState(m_htiSelected, TVIS_SELECTED, TVIS_SELECTED);
|
||||
|
||||
if (m_hwndFocused)
|
||||
CWnd::FromHandle(m_hwndFocused)->SetFocus();
|
||||
}
|
||||
|
||||
BOOL CRTDropTarget::OnDrop(CWnd* pwnd, COleDataObject* podo, DROPEFFECT de, CPoint point)
|
||||
{
|
||||
HTREEITEM htiTarget = m_htiPrev;
|
||||
|
||||
if (m_dePrev != DROPEFFECT_NONE) {
|
||||
CRemoteTreeCtrl* ptree = (CRemoteTreeCtrl*)pwnd;
|
||||
CMainFrame* pmf = (CMainFrame*)AfxGetMainWnd();
|
||||
|
||||
if (!pmf->m_bDragFromRemote) {
|
||||
pmf->m_sDragTarget = ptree->GetPath(htiTarget);
|
||||
pmf->m_htiDragTarget = ptree->GetVolumeItem(htiTarget);
|
||||
|
||||
pmf->Upload(false);
|
||||
}
|
||||
else {
|
||||
pmf->m_sDragTarget = ptree->GetPath(htiTarget);
|
||||
|
||||
pmf->BeginWaitMessage();
|
||||
|
||||
CStringArray saSucceed;
|
||||
if (de == DROPEFFECT_COPY)
|
||||
pmf->CopyRemoteObject(pmf->m_htiDragTarget, pmf->m_saDragSource, pmf->m_sDragTarget, saSucceed);
|
||||
else
|
||||
pmf->MoveRemoteObject(pmf->m_htiDragTarget, pmf->m_saDragSource, pmf->m_sDragTarget, saSucceed);
|
||||
|
||||
CRemoteView* pview = (CRemoteView*)ptree->GetParent();
|
||||
for (int i = 0; i < saSucceed.GetCount(); i++) {
|
||||
HTREEITEM hti = ptree->GetItem(pmf->m_htiDragTarget, saSucceed[i]);
|
||||
if (!hti)
|
||||
continue;
|
||||
|
||||
CString sName = saSucceed[i].Mid(saSucceed[i].ReverseFind('/') + 1);
|
||||
if (!ptree->IsExistsChild(htiTarget, sName))
|
||||
pview->AppendObject(htiTarget, true, sName, 0, "");
|
||||
if (de == DROPEFFECT_MOVE)
|
||||
ptree->DeleteItem(hti);
|
||||
}
|
||||
|
||||
pmf->EndWaitMessage();
|
||||
|
||||
if (saSucceed.GetCount() > 0)
|
||||
pmf->m_pRemoteView->RefreshItem();
|
||||
}
|
||||
}
|
||||
|
||||
OnDragLeave(pwnd);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL CRTDropTarget::GetDragFileInfo(COleDataObject* podo)
|
||||
{
|
||||
STGMEDIUM sm;
|
||||
FORMATETC fe = {CF_HDROP, (DVTARGETDEVICE FAR*)NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
|
||||
|
||||
if (!podo->GetData(CF_HDROP, &sm, &fe))
|
||||
return FALSE;
|
||||
|
||||
HDROP hdrop = (HDROP)sm.hGlobal;
|
||||
|
||||
int nDragCount = ::DragQueryFile(hdrop, 0xFFFFFFFF, NULL, 0);
|
||||
if (nDragCount == 0)
|
||||
return FALSE;
|
||||
|
||||
CMainFrame* pmf = (CMainFrame*)AfxGetMainWnd();
|
||||
|
||||
char szFile[MAX_PATH];
|
||||
for (int i = 0; i < nDragCount; i++) {
|
||||
::DragQueryFile(hdrop, i, szFile, sizeof(szFile));
|
||||
|
||||
CString sFile(szFile);
|
||||
if (sFile.Find('\\') < 0) {
|
||||
pmf->m_saDragSource.RemoveAll();
|
||||
break;
|
||||
}
|
||||
|
||||
pmf->m_saDragSource.Add(sFile);
|
||||
}
|
||||
|
||||
if (pmf->m_saDragSource.GetCount() == 0)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
// Remote Tree DropTarget
|
||||
|
||||
#pragma once
|
||||
|
||||
// CRTDropTarget ¸í·É ´ë»óÀÔ´Ï´Ù.
|
||||
|
||||
class CRTDropTarget : public COleDropTarget
|
||||
{
|
||||
DECLARE_DYNAMIC(CRTDropTarget)
|
||||
|
||||
public:
|
||||
CRTDropTarget();
|
||||
virtual ~CRTDropTarget();
|
||||
|
||||
// Override
|
||||
protected:
|
||||
virtual DROPEFFECT OnDragEnter(CWnd*, COleDataObject*, DWORD, CPoint);
|
||||
virtual DROPEFFECT OnDragOver(CWnd*, COleDataObject*, DWORD, CPoint);
|
||||
virtual void OnDragLeave(CWnd*);
|
||||
virtual BOOL OnDrop(CWnd*, COleDataObject*, DROPEFFECT, CPoint);
|
||||
|
||||
protected:
|
||||
BOOL GetDragFileInfo(COleDataObject* podo);
|
||||
|
||||
protected:
|
||||
DROPEFFECT m_dePrev;
|
||||
|
||||
HTREEITEM m_htiSelected;
|
||||
HTREEITEM m_htiPrev;
|
||||
|
||||
HWND m_hwndFocused;
|
||||
|
||||
protected:
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
@@ -0,0 +1,281 @@
|
||||
// RemoteComboBox.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "RemoteComboBox.h"
|
||||
#include "MainFrm.h"
|
||||
#include "RemoteView.h"
|
||||
#include "RemoteTreeCtrl.h"
|
||||
#include ".\remotecombobox.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CRemoteComboBox
|
||||
|
||||
CRemoteComboBox::CRemoteComboBox()
|
||||
{
|
||||
m_iSPos = m_iEPos = -1;
|
||||
}
|
||||
|
||||
CRemoteComboBox::~CRemoteComboBox()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CRemoteComboBox, CComboBoxEx)
|
||||
//{{AFX_MSG_MAP(CRemoteComboBox)
|
||||
//}}AFX_MSG_MAP
|
||||
ON_WM_CREATE()
|
||||
ON_CONTROL_REFLECT(CBN_SELCHANGE, OnSelchange)
|
||||
// ON_NOTIFY_REFLECT(CBEN_ENDEDIT, OnCbenEndedit)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CRemoteComboBox message handlers
|
||||
int CRemoteComboBox::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
||||
{
|
||||
// if (CComboBox::OnCreate(lpCreateStruct) == -1)
|
||||
// return -1;
|
||||
|
||||
SHFILEINFO shfi;
|
||||
HIMAGELIST hil = (HIMAGELIST)SHGetFileInfo("C:\\", 0, &shfi, sizeof(shfi), SHGFI_ICON | SHGFI_SYSICONINDEX | SHGFI_SMALLICON);
|
||||
|
||||
SetImageList(CImageList::FromHandle(hil));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CRemoteComboBox::OnSelchange()
|
||||
{
|
||||
CRemoteTreeCtrl *ptree = ((CRemoteView*)GetParent())->GetTreeCtrl();
|
||||
|
||||
ptree->SelectItem((HTREEITEM)GetItemData(GetCurSel()));
|
||||
}
|
||||
|
||||
void CRemoteComboBox::Init()
|
||||
{
|
||||
Clear();
|
||||
|
||||
CRemoteTreeCtrl *ptree = ((CRemoteView*)GetParent())->GetTreeCtrl();
|
||||
|
||||
COMBOBOXEXITEM cbei;
|
||||
cbei.mask = CBEIF_TEXT | CBEIF_IMAGE | CBEIF_SELECTEDIMAGE | CBEIF_INDENT;
|
||||
|
||||
int nImage, nSelectedImage;
|
||||
CString sText;
|
||||
|
||||
// 루트 삽입
|
||||
HTREEITEM hti = ptree->GetRootItem();
|
||||
ptree->GetItemImage(hti, nImage, nSelectedImage);
|
||||
sText = ptree->GetItemText(hti);
|
||||
|
||||
cbei.iItem = GetCount();
|
||||
cbei.iIndent = 0;
|
||||
cbei.iImage = nImage;
|
||||
cbei.iSelectedImage = nSelectedImage;
|
||||
cbei.pszText = (LPSTR)(LPCTSTR)sText;
|
||||
InsertItem(&cbei);
|
||||
SetItemData((int)cbei.iItem, (DWORD_PTR)hti);
|
||||
|
||||
// 볼륨 삽입
|
||||
hti = ptree->GetChildItem(hti);
|
||||
while (hti) {
|
||||
ptree->GetItemImage(hti, nImage, nSelectedImage);
|
||||
sText = ptree->GetItemText(hti);
|
||||
|
||||
cbei.iItem = GetCount();
|
||||
cbei.iIndent = 1;
|
||||
cbei.iImage = nImage;
|
||||
cbei.iSelectedImage = nSelectedImage;
|
||||
cbei.pszText = (LPSTR)(LPCTSTR)sText;
|
||||
InsertItem(&cbei);
|
||||
SetItemData((int)cbei.iItem, (DWORD_PTR)hti);
|
||||
|
||||
hti = ptree->GetNextSiblingItem(hti);
|
||||
}
|
||||
|
||||
SetCurSel(0);
|
||||
}
|
||||
|
||||
void CRemoteComboBox::Add(HTREEITEM hti)
|
||||
{
|
||||
COMBOBOXEXITEM cbei;
|
||||
if (m_iSPos >= 0 && m_iEPos >= 0) {
|
||||
for (int i = m_iEPos; i >= m_iSPos; i--)
|
||||
DeleteItem(i);
|
||||
}
|
||||
|
||||
m_iSPos = m_iEPos = -1;
|
||||
|
||||
CRemoteTreeCtrl *ptree = ((CRemoteView*)GetParent())->GetTreeCtrl();
|
||||
PRTREEITEM_STRUCT prti = (PRTREEITEM_STRUCT)ptree->GetItemData(hti);
|
||||
if (prti->nClass != TNS_FOLDER) {
|
||||
for (int i = 0; i < GetCount(); i++) {
|
||||
if ((HTREEITEM)GetItemData(i) == hti) {
|
||||
SetCurSel(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
HTREEITEM htiParent = ptree->GetVolumeItem(hti);
|
||||
|
||||
int nImage, nSelectedImage;
|
||||
CString sText;
|
||||
|
||||
cbei.mask = CBEIF_TEXT | CBEIF_IMAGE | CBEIF_SELECTEDIMAGE | CBEIF_INDENT;
|
||||
|
||||
for (int i = 1; i < GetCount(); i++) {
|
||||
if ((HTREEITEM)GetItemData(i) != htiParent)
|
||||
continue;
|
||||
|
||||
m_iSPos = m_iEPos = i + 1;
|
||||
int iIndent = 2;
|
||||
while (htiParent != hti) {
|
||||
HTREEITEM htiChild, htiTemp = hti;
|
||||
while (htiParent != htiTemp) {
|
||||
htiChild = htiTemp;
|
||||
htiTemp = ptree->GetParentItem(htiChild);
|
||||
}
|
||||
|
||||
ptree->GetItemImage(htiChild, nImage, nSelectedImage);
|
||||
sText = ptree->GetItemText(htiChild);
|
||||
|
||||
cbei.iItem = m_iEPos++;
|
||||
cbei.iIndent = iIndent++;
|
||||
cbei.iImage = nImage;
|
||||
cbei.iSelectedImage = nSelectedImage;
|
||||
cbei.pszText = (LPSTR)(LPCTSTR)sText;
|
||||
InsertItem(&cbei);
|
||||
SetItemData((int)cbei.iItem, (DWORD_PTR)htiChild);
|
||||
|
||||
htiParent = htiChild;
|
||||
}
|
||||
|
||||
m_iEPos--;
|
||||
SetCurSel(m_iEPos);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
BOOL CRemoteComboBox::PreTranslateMessage(MSG* pMsg)
|
||||
{
|
||||
if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN)
|
||||
{
|
||||
if (SetDirectPath() == FALSE)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return CComboBoxEx::PreTranslateMessage(pMsg);
|
||||
}
|
||||
|
||||
BOOL CRemoteComboBox::SetDirectPath(void)
|
||||
{
|
||||
CString strTemp;
|
||||
CString strPath;
|
||||
CString token;
|
||||
int ipos=0;
|
||||
UINT ncount;
|
||||
HTREEITEM item=NULL;
|
||||
HCOMMLIB hcl;
|
||||
|
||||
|
||||
CRemoteTreeCtrl *ptree = ((CRemoteView*)GetParent())->GetTreeCtrl();
|
||||
CMainFrame* pmf = (CMainFrame*)AfxGetMainWnd();
|
||||
|
||||
CRemoteView *pView = (CRemoteView*)GetParent();
|
||||
CRemoteListCtrl *pList = pView->GetListCtrl();
|
||||
|
||||
|
||||
GetWindowText(strPath);
|
||||
|
||||
strTemp = strPath;
|
||||
|
||||
if (ptree->GetSelectedItem() == ptree->GetRootItem())
|
||||
{
|
||||
if (pmf->m_mapHcl.GetCount() == 2)
|
||||
item = ptree->GetChildItem(ptree->GetRootItem());
|
||||
else
|
||||
{
|
||||
MessageBox("서비스 볼륨을 먼저 선택해 주세요.");
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
item = ptree->GetVolumeItem(ptree->GetSelectedItem()); // 볼륨노드
|
||||
}
|
||||
|
||||
if (item == NULL)
|
||||
{
|
||||
MessageBox("존재하지 않는 볼륨입니다.");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
pmf->m_mapHcl.Lookup(item,(void*&)hcl);
|
||||
|
||||
PCLFILE_STRUCT pclf = cl_get_file_list(hcl,strTemp.Mid(ipos),0,&ncount);
|
||||
|
||||
if( pclf == NULL)
|
||||
{
|
||||
MessageBox("존재하지 않는 경로 입니다.");
|
||||
return FALSE;
|
||||
}
|
||||
if(pclf->attr != CLFILEATTR_FOLDER)
|
||||
{// 파일이다.
|
||||
strTemp = strTemp.Left(strTemp.ReverseFind('/'));
|
||||
}
|
||||
|
||||
token = strTemp.Tokenize("/",ipos); // 첫번째 경로
|
||||
|
||||
while (token != "")
|
||||
{
|
||||
HTREEITEM titem = ptree->GetItem(item,token);
|
||||
if( titem == NULL)
|
||||
pView->AppendObject(item,true,token,0,"");
|
||||
item = ptree->GetItem(item,token);
|
||||
token= strTemp.Tokenize("/",ipos);
|
||||
};
|
||||
|
||||
ptree->SelectItem(item);
|
||||
|
||||
/*
|
||||
if(pclf->attr != CLFILEATTR_FOLDER)
|
||||
{
|
||||
CString strName;
|
||||
strName = strPath.Mid(strPath.ReverseFind('/')+1);
|
||||
|
||||
for (;;)
|
||||
{
|
||||
MSG msg;
|
||||
|
||||
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
|
||||
{
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
|
||||
ncount = pList->GetItemCount();
|
||||
if(ncount > 1)
|
||||
break;
|
||||
}
|
||||
|
||||
for (int i = 0; i < ncount; i++)
|
||||
{
|
||||
if (pList->GetItemText(i,0) == strName)
|
||||
{
|
||||
pList->SetItemState(i, LVIS_SELECTED, LVIS_SELECTED);
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
// RemoteComboBox.h : header file
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CShellTreeCtrl window
|
||||
|
||||
class CRemoteComboBox : public CComboBoxEx
|
||||
{
|
||||
// Construction
|
||||
public:
|
||||
CRemoteComboBox();
|
||||
|
||||
// Attributes
|
||||
protected:
|
||||
|
||||
public:
|
||||
|
||||
// Operations
|
||||
protected:
|
||||
int m_iSPos, m_iEPos;
|
||||
|
||||
public:
|
||||
void Init();
|
||||
void Add(HTREEITEM hti);
|
||||
|
||||
// Overrides
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CRemoteComboBox)
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
public:
|
||||
virtual ~CRemoteComboBox();
|
||||
|
||||
protected:
|
||||
|
||||
// Generated message map functions
|
||||
protected:
|
||||
//{{AFX_MSG(CRemoteComboBox)
|
||||
//}}AFX_MSG
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
|
||||
afx_msg void OnSelchange();
|
||||
// afx_msg void OnCbenEndedit(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
virtual BOOL PreTranslateMessage(MSG* pMsg);
|
||||
BOOL SetDirectPath(void);
|
||||
};
|
||||
@@ -0,0 +1,793 @@
|
||||
// RemoteListCtrl.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "RemoteListCtrl.h"
|
||||
|
||||
#include "MainFrm.h"
|
||||
#include "RemoteView.h"
|
||||
#include "LocalView.h"
|
||||
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
|
||||
int KrCompare(LPCTSTR pszText1, LPCTSTR pszText2);
|
||||
bool IsPathItself(CString sSrcPath, CString sDstPath);
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CRemoteListCtrl
|
||||
|
||||
CRemoteListCtrl::CRemoteListCtrl()
|
||||
{
|
||||
m_nStyle = 4;
|
||||
|
||||
m_nSortColumn = 0;
|
||||
m_nSortDirect = -1;
|
||||
}
|
||||
|
||||
CRemoteListCtrl::~CRemoteListCtrl()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CRemoteListCtrl, CListCtrl)
|
||||
//{{AFX_MSG_MAP(CRemoteListCtrl)
|
||||
//}}AFX_MSG_MAP
|
||||
ON_WM_CREATE()
|
||||
ON_WM_ERASEBKGND()
|
||||
ON_WM_LBUTTONDBLCLK()
|
||||
ON_WM_CONTEXTMENU()
|
||||
ON_NOTIFY_REFLECT(LVN_BEGINDRAG, OnBegindrag)
|
||||
ON_NOTIFY_REFLECT(LVN_COLUMNCLICK, OnColumnclick)
|
||||
ON_COMMAND(ID_LIST_NEWFOLDER, OnListNewfolder)
|
||||
ON_COMMAND(ID_LIST_REFRESH, OnListRefresh)
|
||||
ON_COMMAND(ID_LIST_TYPE1, OnListType1)
|
||||
ON_COMMAND(ID_LIST_TYPE2, OnListType2)
|
||||
ON_COMMAND(ID_LIST_TYPE3, OnListType3)
|
||||
ON_COMMAND(ID_LIST_TYPE4, OnListType4)
|
||||
ON_COMMAND(ID_LIST_SORT1, OnListSort1)
|
||||
ON_COMMAND(ID_LIST_SORT2, OnListSort2)
|
||||
ON_COMMAND(ID_LIST_SORT3, OnListSort3)
|
||||
ON_COMMAND(ID_LIST_SORT4, OnListSort4)
|
||||
ON_COMMAND(ID_LIST_PASTE, OnListPaste)
|
||||
ON_COMMAND(ID_LIST_ALL, OnListAll)
|
||||
ON_COMMAND(ID_LISTFILE_DOWNLOAD, OnListfileDownload)
|
||||
ON_COMMAND(ID_LISTFILE_SAVEURL, OnListfileSaveUrl)
|
||||
ON_COMMAND(ID_LISTFILE_CUT, OnListfileCut)
|
||||
ON_COMMAND(ID_LISTFILE_COPY, OnListfileCopy)
|
||||
ON_COMMAND(ID_LISTFILE_PASTE, OnListfilePaste)
|
||||
ON_COMMAND(ID_LISTFILE_DELETE, OnListfileDelete)
|
||||
ON_COMMAND(ID_LISTFILE_RENAME, OnListfileRename)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CRemoteListCtrl message handlers
|
||||
|
||||
BOOL CRemoteListCtrl::PreTranslateMessage(MSG* pMsg)
|
||||
{
|
||||
CMainFrame *pmf = (CMainFrame *)AfxGetMainWnd();
|
||||
|
||||
switch (pMsg->message) {
|
||||
case WM_SETFOCUS:
|
||||
case WM_LBUTTONDOWN:
|
||||
case WM_RBUTTONDOWN:
|
||||
pmf->SetFocus(this);
|
||||
break;
|
||||
case WM_KEYDOWN:
|
||||
CEdit *edit = GetEditControl();
|
||||
if (edit) {
|
||||
if (pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE) {
|
||||
edit->SendMessage(WM_KEYDOWN, pMsg->wParam, pMsg->lParam);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if (pMsg->wParam == VK_F2) {
|
||||
for (int i = 0; i < GetItemCount(); i++) {
|
||||
if (LVIS_FOCUSED & GetItemState(i, LVIF_TEXT)) {
|
||||
EditLabel(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
else if (pMsg->wParam == VK_DELETE) {
|
||||
((CRemoteView*)GetParent())->DeleteListItem();
|
||||
return TRUE;
|
||||
}
|
||||
else if (GetKeyState(VK_CONTROL) & 128) {
|
||||
if (pMsg->wParam == VK_A) {
|
||||
CMainFrame *pmf = (CMainFrame *)AfxGetMainWnd();
|
||||
|
||||
pmf->m_pRemoteView->m_bUpdating = TRUE;
|
||||
for (int i = 0; i < GetItemCount(); i++)
|
||||
SetItemState(i, LVIS_SELECTED, LVIS_SELECTED);
|
||||
pmf->m_pRemoteView->m_bUpdating = FALSE;
|
||||
|
||||
pmf->m_pRemoteView->ShowStatusObject(TRUE, FALSE, TRUE);
|
||||
return TRUE;
|
||||
}
|
||||
else if (pMsg->wParam == VK_C) {
|
||||
// 2014.07.25 dadamin copy 기능 제거
|
||||
#ifdef _USE_COPY_
|
||||
SetClipboard(CBS_COPY);
|
||||
#else
|
||||
AfxMessageBox(IDS_COPY_NOT_ALLOWD, MB_ICONERROR);
|
||||
#endif // _USE_COPY_
|
||||
return TRUE;
|
||||
}
|
||||
else if (pMsg->wParam == VK_X) {
|
||||
SetClipboard(CBS_CUT);
|
||||
return TRUE;
|
||||
}
|
||||
else if (pMsg->wParam == VK_V) {
|
||||
PasteClipboard();
|
||||
return TRUE;
|
||||
}
|
||||
else if (pMsg->wParam == VK_D) {
|
||||
OnListfileDelete();
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return CListCtrl::PreTranslateMessage(pMsg);
|
||||
}
|
||||
|
||||
int CRemoteListCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
||||
{
|
||||
// if (CListCtrl::OnCreate(lpCreateStruct) == -1)
|
||||
// return -1;
|
||||
|
||||
m_dropTarget.Register(this);
|
||||
|
||||
int anWidths[7]={270, 110, 110, 150, 54, 90, 90};
|
||||
|
||||
CString sWidths = COptions::GetOption(OPTION_REMOTECOLUMNWIDTHS);
|
||||
if (sWidths != "")
|
||||
{
|
||||
int pos=-1;
|
||||
int i;
|
||||
for (i=0; i<6; i++)
|
||||
{
|
||||
int oldpos = pos + 1;
|
||||
pos = sWidths.Find(_T(" "), oldpos);
|
||||
if (pos == -1)
|
||||
break;
|
||||
sWidths.SetAt(pos, 0);
|
||||
int size = _ttoi(sWidths.Mid(oldpos));
|
||||
if (size > 0)
|
||||
anWidths[i] = size;
|
||||
}
|
||||
if (i == 6)
|
||||
{
|
||||
int size = _ttoi(sWidths.Mid(pos+1));
|
||||
if (size > 0)
|
||||
anWidths[i] = size;
|
||||
}
|
||||
}
|
||||
|
||||
m_asHeader[0] = "이름";
|
||||
m_asHeader[1] = "크기";
|
||||
m_asHeader[2] = "종류";
|
||||
m_asHeader[3] = "수정일자";
|
||||
|
||||
m_anHeaderAlign[0] = LVCFMT_LEFT;
|
||||
m_anHeaderAlign[1] = LVCFMT_RIGHT;
|
||||
m_anHeaderAlign[2] = LVCFMT_LEFT;
|
||||
m_anHeaderAlign[3] = LVCFMT_LEFT;
|
||||
|
||||
for (int i = 0; i < 4; i++)
|
||||
InsertColumn(i, m_asHeader[i], m_anHeaderAlign[i], anWidths[i]);
|
||||
|
||||
m_ilSort.Create(9, 9, ILC_MASK, 3, 3);
|
||||
HICON hicon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_SORT_NONE));
|
||||
m_ilSort.Add(hicon);
|
||||
hicon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_SORT_ASC));
|
||||
m_ilSort.Add(hicon);
|
||||
hicon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_SORT_DESC));
|
||||
m_ilSort.Add(hicon);
|
||||
m_ilSort.SetBkColor(CLR_NONE);
|
||||
|
||||
SetListStyle(m_nStyle);
|
||||
|
||||
SetExtendedStyle(LVS_EX_INFOTIP);
|
||||
SetCallbackMask(GetCallbackMask() | LVIS_OVERLAYMASK);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL CRemoteListCtrl::OnEraseBkgnd(CDC* pDC)
|
||||
{
|
||||
// return TRUE;
|
||||
return CListCtrl::OnEraseBkgnd(pDC);
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::OnLButtonDblClk(UINT nFlags, CPoint point)
|
||||
{
|
||||
int iItem = HitTest(point);
|
||||
if (iItem < 0)
|
||||
return;
|
||||
|
||||
if (((PRLISTITEM_STRUCT)GetItemData(iItem))->bFolder) {
|
||||
CRemoteView* pview = (CRemoteView*)GetParent();
|
||||
|
||||
CString sName = GetItemText(iItem, 0);
|
||||
|
||||
HTREEITEM hti = pview->m_tree.GetSelectedItem();
|
||||
hti = pview->m_tree.GetChildItem(hti);
|
||||
while (hti) {
|
||||
if (sName == pview->m_tree.GetItemText(hti)) {
|
||||
pview->m_tree.SelectItem(hti);
|
||||
return;
|
||||
}
|
||||
|
||||
hti = pview->m_tree.GetNextSiblingItem(hti);
|
||||
}
|
||||
}
|
||||
|
||||
// CListCtrl::OnLButtonDblClk(nFlags, point);
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::OnContextMenu(CWnd* pWnd, CPoint point)
|
||||
{
|
||||
CRemoteTreeCtrl* ptree = ((CRemoteView*)GetParent())->GetTreeCtrl();
|
||||
if (!ptree->GetRootItem())
|
||||
return;
|
||||
|
||||
CPoint ptHit = point;
|
||||
|
||||
ScreenToClient(&ptHit);
|
||||
|
||||
CMainFrame *pmf = (CMainFrame *)AfxGetMainWnd();
|
||||
|
||||
HTREEITEM htiRoot = pmf->m_pRemoteView->m_tree.GetRootItem();
|
||||
HTREEITEM htiSelected = pmf->m_pRemoteView->m_tree.GetSelectedItem();
|
||||
HTREEITEM htiParent = pmf->m_pRemoteView->m_tree.GetParentItem(htiSelected);
|
||||
|
||||
CMenu menu, *pmenu;
|
||||
if ((m_iSelectedItem = HitTest(ptHit)) >= 0) {
|
||||
menu.LoadMenu(IDR_POP_RLISTFILE);
|
||||
pmenu = menu.GetSubMenu(0);
|
||||
ASSERT(pmenu != NULL);
|
||||
|
||||
if (htiSelected == htiRoot)
|
||||
return;
|
||||
|
||||
pmenu->SetMenuItemBitmaps(ID_LISTFILE_CUT, MF_BYCOMMAND, &pmf->m_bmCut, &pmf->m_bmCut);
|
||||
// 2014.07.25 dadamin copy 기능 제거
|
||||
#ifdef _USE_COPY_
|
||||
pmenu->SetMenuItemBitmaps(ID_LISTFILE_COPY, MF_BYCOMMAND, &pmf->m_bmCopy, &pmf->m_bmCopy);
|
||||
#endif // _USE_COPY_
|
||||
pmenu->SetMenuItemBitmaps(ID_LISTFILE_PASTE, MF_BYCOMMAND, &pmf->m_bmPaste, &pmf->m_bmPaste);
|
||||
|
||||
// dadamin add
|
||||
if(pmf->m_pLocalView->GetSelectedPath().IsEmpty())
|
||||
{
|
||||
pmenu->EnableMenuItem(ID_LISTFILE_DOWNLOAD, MF_GRAYED);
|
||||
}
|
||||
// dadamin add
|
||||
|
||||
if (((PRLISTITEM_STRUCT)GetItemData(m_iSelectedItem))->bFolder) {
|
||||
COleDataObject odo;
|
||||
|
||||
if (!(odo.AttachClipboard() && odo.IsDataAvailable(CF_HDROP))
|
||||
&& !(pmf->m_cbs != CBS_NONE && pmf->m_saDragSource.GetCount() > 0))
|
||||
pmenu->EnableMenuItem(ID_LISTFILE_PASTE, MF_GRAYED);
|
||||
}
|
||||
else
|
||||
pmenu->DeleteMenu(ID_LISTFILE_PASTE, MF_BYCOMMAND);
|
||||
|
||||
if (((PRTREEITEM_STRUCT)ptree->GetItemData(htiSelected))->nClass == TNS_FOLDER) {
|
||||
HTREEITEM hti = ptree->GetParentItem(htiSelected);
|
||||
while (((PRTREEITEM_STRUCT)ptree->GetItemData(hti))->nClass == TNS_FOLDER) {
|
||||
htiSelected = hti;
|
||||
hti = ptree->GetParentItem(hti);
|
||||
}
|
||||
|
||||
if (((PRTREEITEM_STRUCT)ptree->GetItemData(htiSelected))->saAttr[1] != "1")
|
||||
pmenu->EnableMenuItem(ID_LISTFILE_SAVEURL, MF_GRAYED);
|
||||
}
|
||||
else
|
||||
pmenu->EnableMenuItem(ID_LISTFILE_SAVEURL, MF_GRAYED);
|
||||
}
|
||||
else {
|
||||
menu.LoadMenu(IDR_POP_RLIST);
|
||||
pmenu = menu.GetSubMenu(0);
|
||||
ASSERT(pmenu != NULL);
|
||||
|
||||
pmenu->SetMenuItemBitmaps(ID_LIST_NEWFOLDER, MF_BYCOMMAND, &pmf->m_bmFolder, &pmf->m_bmFolder);
|
||||
pmenu->SetMenuItemBitmaps(ID_LIST_PASTE, MF_BYCOMMAND, &pmf->m_bmPaste, &pmf->m_bmPaste);
|
||||
|
||||
switch (pmf->m_nRemoteListType) {
|
||||
case 1:
|
||||
pmenu->CheckMenuItem(ID_LIST_TYPE1, MF_CHECKED);
|
||||
break;
|
||||
case 2:
|
||||
pmenu->CheckMenuItem(ID_LIST_TYPE2, MF_CHECKED);
|
||||
break;
|
||||
case 3:
|
||||
pmenu->CheckMenuItem(ID_LIST_TYPE3, MF_CHECKED);
|
||||
break;
|
||||
case 4:
|
||||
pmenu->CheckMenuItem(ID_LIST_TYPE4, MF_CHECKED);
|
||||
break;
|
||||
}
|
||||
|
||||
switch (m_nSortColumn) {
|
||||
case 0:
|
||||
pmenu->CheckMenuItem(ID_LIST_SORT1, MF_CHECKED);
|
||||
break;
|
||||
case 1:
|
||||
pmenu->CheckMenuItem(ID_LIST_SORT2, MF_CHECKED);
|
||||
break;
|
||||
case 2:
|
||||
pmenu->CheckMenuItem(ID_LIST_SORT3, MF_CHECKED);
|
||||
break;
|
||||
case 3:
|
||||
pmenu->CheckMenuItem(ID_LIST_SORT4, MF_CHECKED);
|
||||
break;
|
||||
}
|
||||
|
||||
if (htiSelected == htiRoot) {
|
||||
pmenu->EnableMenuItem(ID_LIST_NEWFOLDER, MF_GRAYED);
|
||||
pmenu->EnableMenuItem(ID_LIST_ALL, MF_GRAYED);
|
||||
pmenu->EnableMenuItem(ID_LIST_PASTE, MF_GRAYED);
|
||||
}
|
||||
else {
|
||||
COleDataObject odo;
|
||||
|
||||
if (!(odo.AttachClipboard() && odo.IsDataAvailable(CF_HDROP))
|
||||
&& !(pmf->m_cbs != CBS_NONE && pmf->m_saDragSource.GetCount() > 0))
|
||||
pmenu->EnableMenuItem(ID_LIST_PASTE, MF_GRAYED);
|
||||
}
|
||||
}
|
||||
|
||||
pmenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::OnBegindrag(NMHDR *pNMHDR, LRESULT *pResult)
|
||||
{
|
||||
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
|
||||
|
||||
CRemoteTreeCtrl* ptree = ((CRemoteView*)GetParent())->GetTreeCtrl();
|
||||
|
||||
POSITION pos = GetFirstSelectedItemPosition();
|
||||
if (ptree->GetSelectedItem() == ptree->GetRootItem() || !pos)
|
||||
return;
|
||||
|
||||
CString sPath = ptree->GetPath(ptree->GetSelectedItem()) + "/";
|
||||
|
||||
CMainFrame* pmf = (CMainFrame*)AfxGetMainWnd();
|
||||
pmf->m_bDragFromRemote = TRUE;
|
||||
pmf->m_htiDragTarget = ptree->GetVolumeItem(ptree->GetSelectedItem());
|
||||
pmf->m_saDragSource.RemoveAll();
|
||||
while (pos)
|
||||
{
|
||||
int iItem = GetNextSelectedItem(pos);
|
||||
pmf->m_saDragSource.Add(sPath + GetItemText(iItem, 0));
|
||||
}
|
||||
|
||||
pmf->m_pLocalView->StartDrag();
|
||||
|
||||
COleDataSource ods;
|
||||
|
||||
DROPEFFECT de = ods.DoDragDrop(DROPEFFECT_COPY |DROPEFFECT_MOVE, NULL);
|
||||
|
||||
pmf->m_pLocalView->EndDrag();
|
||||
|
||||
pmf->m_bDragFromRemote = FALSE;
|
||||
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
|
||||
|
||||
Sort(pNMListView->iSubItem);
|
||||
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::OnListNewfolder()
|
||||
{
|
||||
SetFocus();
|
||||
|
||||
CMainFrame *pmf = (CMainFrame *)AfxGetMainWnd();
|
||||
|
||||
pmf->m_pRemoteView->MakeNewFolder();
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::OnListRefresh()
|
||||
{
|
||||
CMainFrame *pmf = (CMainFrame *)AfxGetMainWnd();
|
||||
|
||||
pmf->m_pRemoteView->RefreshItem();
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::OnListType1()
|
||||
{
|
||||
CMainFrame *pmf = (CMainFrame *)AfxGetMainWnd();
|
||||
|
||||
pmf->OnViewRlistType1();
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::OnListType2()
|
||||
{
|
||||
CMainFrame *pmf = (CMainFrame *)AfxGetMainWnd();
|
||||
|
||||
pmf->OnViewRlistType2();
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::OnListType3()
|
||||
{
|
||||
CMainFrame *pmf = (CMainFrame *)AfxGetMainWnd();
|
||||
|
||||
pmf->OnViewRlistType3();
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::OnListType4()
|
||||
{
|
||||
CMainFrame *pmf = (CMainFrame *)AfxGetMainWnd();
|
||||
|
||||
pmf->OnViewRlistType4();
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::OnListSort1()
|
||||
{
|
||||
Sort(0);
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::OnListSort2()
|
||||
{
|
||||
Sort(1);
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::OnListSort3()
|
||||
{
|
||||
Sort(2);
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::OnListSort4()
|
||||
{
|
||||
Sort(3);
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::OnListPaste()
|
||||
{
|
||||
PasteClipboard();
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::OnListAll()
|
||||
{
|
||||
CMainFrame *pmf = (CMainFrame *)AfxGetMainWnd();
|
||||
|
||||
pmf->m_pRemoteView->m_bUpdating = TRUE;
|
||||
for (int i = 0; i < GetItemCount(); i++)
|
||||
SetItemState(i, LVIS_SELECTED, LVIS_SELECTED);
|
||||
pmf->m_pRemoteView->m_bUpdating = FALSE;
|
||||
pmf->m_pRemoteView->ShowStatusObject(TRUE, FALSE, TRUE);
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::OnListfileDownload()
|
||||
{
|
||||
CMainFrame *pmf = (CMainFrame *)AfxGetMainWnd();
|
||||
|
||||
pmf->Download();
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::OnListfileSaveUrl()
|
||||
{
|
||||
/*
|
||||
if (((CRemoteView*)GetParent())->m_nSelectedFiles == 0) {
|
||||
AfxMessageBox("URL로 저장할 파일을 선택하십시오. URL 저장은 파일만 가능합니다.");
|
||||
return;
|
||||
}
|
||||
*/
|
||||
|
||||
((CMainFrame*)AfxGetMainWnd())->SaveUrl();
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::OnListfileCut()
|
||||
{
|
||||
SetClipboard(CBS_CUT);
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::OnListfileCopy()
|
||||
{
|
||||
//2014.07.25 dadamin copy 기능 제거
|
||||
#ifdef _USE_COPY_
|
||||
SetClipboard(CBS_COPY);
|
||||
#endif // _USE_COPY_
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::OnListfilePaste()
|
||||
{
|
||||
//TODO...
|
||||
PasteClipboard(GetItemText(m_iSelectedItem, 0));
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::OnListfileDelete()
|
||||
{
|
||||
CMainFrame *pmf = (CMainFrame *)AfxGetMainWnd();
|
||||
|
||||
pmf->m_pRemoteView->DeleteListItem();
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::OnListfileRename()
|
||||
{
|
||||
EditLabel(m_iSelectedItem);
|
||||
}
|
||||
|
||||
BOOL CRemoteListCtrl::SetItemText(int nItem, int nSubItem, LPCTSTR lpszText)
|
||||
{
|
||||
if (nSubItem == 0) {
|
||||
PRLISTITEM_STRUCT prli = (PRLISTITEM_STRUCT)GetItemData(nItem);
|
||||
if (prli) {
|
||||
CString sText = lpszText;
|
||||
|
||||
prli->sName = sText;
|
||||
prli->saAttr[0] = sText.MakeUpper();
|
||||
}
|
||||
}
|
||||
|
||||
return CListCtrl::SetItemText(nItem, nSubItem, lpszText);
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::SetListStyle(int nStyle)
|
||||
{
|
||||
UINT nSHOption = SHGFI_ICON | SHGFI_SYSICONINDEX;
|
||||
int nLVOption;
|
||||
|
||||
if (nStyle == 1) {
|
||||
m_nStyle = LVS_ICON;
|
||||
nSHOption |= SHGFI_LARGEICON;
|
||||
nLVOption = LVSIL_NORMAL;
|
||||
}
|
||||
else if (nStyle == 2) {
|
||||
m_nStyle = LVS_SMALLICON;
|
||||
nSHOption |= SHGFI_SMALLICON;
|
||||
nLVOption = LVSIL_SMALL;
|
||||
}
|
||||
else if (nStyle == 3) {
|
||||
m_nStyle = LVS_LIST;
|
||||
nSHOption |= SHGFI_SMALLICON;
|
||||
nLVOption = LVSIL_SMALL;
|
||||
}
|
||||
else if (nStyle == 4) {
|
||||
m_nStyle = LVS_REPORT;
|
||||
nSHOption |= SHGFI_SMALLICON;
|
||||
nLVOption = LVSIL_SMALL;
|
||||
}
|
||||
|
||||
int nRemove = ~m_nStyle & (LVS_REPORT | LVS_ICON | LVS_SMALLICON | LVS_LIST);
|
||||
ModifyStyle(nRemove, m_nStyle, SWP_NOZORDER);
|
||||
|
||||
SHFILEINFO shfi;
|
||||
HIMAGELIST hil = (HIMAGELIST)SHGetFileInfo("", 0, &shfi, sizeof(shfi), nSHOption);
|
||||
SetImageList(CImageList::FromHandle(hil), nLVOption);
|
||||
|
||||
Arrange(LVA_DEFAULT);
|
||||
|
||||
Sort();
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::SetClipboard(CLIPBOARD_STATE cbs)
|
||||
{
|
||||
if (OpenClipboard()) {
|
||||
EmptyClipboard();
|
||||
CloseClipboard();
|
||||
}
|
||||
|
||||
POSITION pos = GetFirstSelectedItemPosition();
|
||||
if (!pos)
|
||||
return;
|
||||
|
||||
CRemoteTreeCtrl* ptree = ((CRemoteView*)GetParent())->GetTreeCtrl();
|
||||
|
||||
HTREEITEM hti = ptree->GetSelectedItem();
|
||||
if (hti == ptree->GetRootItem())
|
||||
return;
|
||||
|
||||
CString sPath = ptree->GetPath(hti);
|
||||
|
||||
CMainFrame *pmf = (CMainFrame *)AfxGetMainWnd();
|
||||
|
||||
pmf->m_cbs = cbs;
|
||||
pmf->m_htiDragTarget = ptree->GetVolumeItem(hti);
|
||||
pmf->m_saDragSource.RemoveAll();
|
||||
while (pos) {
|
||||
int iItem = GetNextSelectedItem(pos);
|
||||
pmf->m_saDragSource.Add(sPath + "/" + GetItemText(iItem, 0));
|
||||
}
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::PasteClipboard(CString sFolder)
|
||||
{
|
||||
if (sFolder != "")
|
||||
sFolder = "/" + sFolder;
|
||||
|
||||
CRemoteTreeCtrl* ptree = ((CRemoteView*)GetParent())->GetTreeCtrl();
|
||||
|
||||
HTREEITEM htiTarget = ptree->GetSelectedItem();
|
||||
if (htiTarget == ptree->GetRootItem())
|
||||
return;
|
||||
|
||||
COleDataObject odo;
|
||||
|
||||
if (odo.AttachClipboard() && odo.IsDataAvailable(CF_HDROP)) {
|
||||
STGMEDIUM sm;
|
||||
FORMATETC fe = {CF_HDROP, (DVTARGETDEVICE FAR*)NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
|
||||
|
||||
if (!odo.GetData(CF_HDROP, &sm, &fe))
|
||||
return;
|
||||
|
||||
HDROP hdrop = (HDROP)sm.hGlobal;
|
||||
|
||||
int nDragCount = ::DragQueryFile(hdrop, 0xFFFFFFFF, NULL, 0);
|
||||
if (nDragCount == 0)
|
||||
return;
|
||||
|
||||
CMainFrame* pmf = (CMainFrame*)AfxGetMainWnd();
|
||||
|
||||
pmf->m_saDragSource.RemoveAll();
|
||||
|
||||
char szFile[MAX_PATH];
|
||||
for (int i = 0; i < nDragCount; i++) {
|
||||
::DragQueryFile(hdrop, i, szFile, sizeof(szFile));
|
||||
|
||||
CString sFile(szFile);
|
||||
if (sFile.Find('\\') < 0) {
|
||||
AfxMessageBox("시스템 파일은 업로드 할 수 없습니다.");
|
||||
pmf->m_saDragSource.RemoveAll();
|
||||
break;
|
||||
}
|
||||
|
||||
pmf->m_saDragSource.Add(sFile);
|
||||
}
|
||||
|
||||
if (pmf->m_saDragSource.GetCount() == 0)
|
||||
return;
|
||||
|
||||
pmf->m_sDragTarget = ptree->GetPath(htiTarget) + sFolder;
|
||||
pmf->m_htiDragTarget = ptree->GetVolumeItem(htiTarget);
|
||||
|
||||
pmf->Upload(false);
|
||||
}
|
||||
else {
|
||||
CMainFrame* pmf = (CMainFrame*)AfxGetMainWnd();
|
||||
|
||||
if (pmf->m_cbs == CBS_NONE)
|
||||
return;
|
||||
|
||||
if (pmf->m_saDragSource.GetCount() == 0)
|
||||
return;
|
||||
|
||||
if (ptree->GetVolumeItem(htiTarget) != pmf->m_htiDragTarget) {
|
||||
AfxMessageBox("서로 다른 서비스사이에는 파일을 복사 또는 이동 할 수 없습니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
pmf->m_sDragTarget = ptree->GetPath(htiTarget) + sFolder;
|
||||
for (int i = 0; i < pmf->m_saDragSource.GetCount(); i++) {
|
||||
if (IsPathItself(pmf->m_saDragSource[i], pmf->m_sDragTarget)) {
|
||||
AfxMessageBox("자기 자신의 하위 폴더로 복사 또는 이동 할 수 없습니다.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
pmf->BeginWaitMessage();
|
||||
|
||||
CStringArray saSucceed;
|
||||
if (pmf->m_cbs == CBS_COPY)
|
||||
pmf->CopyRemoteObject(pmf->m_htiDragTarget, pmf->m_saDragSource, pmf->m_sDragTarget, saSucceed);
|
||||
else
|
||||
pmf->MoveRemoteObject(pmf->m_htiDragTarget, pmf->m_saDragSource, pmf->m_sDragTarget, saSucceed);
|
||||
|
||||
CRemoteView* pview = (CRemoteView*)GetParent();
|
||||
for (int i = 0; i < saSucceed.GetCount(); i++) {
|
||||
HTREEITEM hti = ptree->GetItem(pmf->m_htiDragTarget, saSucceed[i]);
|
||||
if (!hti)
|
||||
continue;
|
||||
|
||||
CString sName = saSucceed[i].Mid(saSucceed[i].ReverseFind('/') + 1);
|
||||
if (!ptree->IsExistsChild(htiTarget, sName))
|
||||
pview->AppendObject(htiTarget, true, sName, 0, "");
|
||||
if (pmf->m_cbs == CBS_CUT)
|
||||
ptree->DeleteItem(hti);
|
||||
}
|
||||
|
||||
pmf->EndWaitMessage();
|
||||
|
||||
if (saSucceed.GetCount() == 0)
|
||||
return;
|
||||
|
||||
pmf->m_pRemoteView->RefreshItem();
|
||||
}
|
||||
}
|
||||
|
||||
void CRemoteListCtrl::Sort(int nColumn)
|
||||
{
|
||||
HDITEM *phdi = new HDITEM;
|
||||
|
||||
if (nColumn >= 0) {
|
||||
if (m_nSortColumn != nColumn) {
|
||||
phdi->pszText = m_asHeader[m_nSortColumn].GetBuffer(0);
|
||||
phdi->cchTextMax = 0;
|
||||
phdi->mask = HDI_TEXT | HDI_IMAGE | HDI_FORMAT;
|
||||
phdi->fmt = m_anHeaderAlign[m_nSortColumn] | HDF_IMAGE | HDF_STRING | HDF_BITMAP_ON_RIGHT;
|
||||
phdi->iImage = 0;
|
||||
GetHeaderCtrl()->SetItem(m_nSortColumn, phdi);
|
||||
}
|
||||
else
|
||||
m_nSortDirect = -m_nSortDirect;
|
||||
|
||||
m_nSortColumn = nColumn;
|
||||
}
|
||||
|
||||
GetHeaderCtrl()->SetImageList(&m_ilSort);
|
||||
|
||||
phdi->pszText = m_asHeader[m_nSortColumn].GetBuffer(0);
|
||||
phdi->cchTextMax = 0;
|
||||
phdi->mask = HDI_TEXT | HDI_IMAGE | HDI_FORMAT;
|
||||
phdi->fmt = m_anHeaderAlign[m_nSortColumn] | HDF_IMAGE | HDF_STRING | HDF_BITMAP_ON_RIGHT;
|
||||
phdi->iImage = (m_nSortDirect > 0 ? 1 : 2);
|
||||
GetHeaderCtrl()->SetItem(m_nSortColumn, phdi);
|
||||
|
||||
delete phdi;
|
||||
|
||||
SortItems(SortProc, (LPARAM)this);
|
||||
}
|
||||
|
||||
int CRemoteListCtrl::SortProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
|
||||
{
|
||||
PRLISTITEM_STRUCT prli1 = (PRLISTITEM_STRUCT)lParam1;
|
||||
PRLISTITEM_STRUCT prli2 = (PRLISTITEM_STRUCT)lParam2;
|
||||
|
||||
CRemoteListCtrl *plist = (CRemoteListCtrl*)lParamSort;
|
||||
|
||||
CString sText1 = (prli1->bFolder ? "0" : "1");
|
||||
CString sText2 = (prli2->bFolder ? "0" : "1");
|
||||
switch (plist->m_nSortColumn) {
|
||||
case 0:// 파일명
|
||||
sText1 += prli1->saAttr[0];
|
||||
sText2 += prli2->saAttr[0];
|
||||
break;
|
||||
case 1: // 사이즈 정렬
|
||||
if (!prli1->bFolder && prli2->bFolder)
|
||||
return -1 * (-plist->m_nSortDirect);
|
||||
if (prli1->bFolder)
|
||||
return 1 * (-plist->m_nSortDirect);
|
||||
if (prli1->bFolder && prli2->bFolder)
|
||||
return 0;
|
||||
|
||||
if (prli1->nSize > prli2->nSize)
|
||||
return 1 * (-plist->m_nSortDirect);
|
||||
if (prli1->nSize < prli2->nSize)
|
||||
return -1 * (-plist->m_nSortDirect);
|
||||
if (prli1->nSize == prli2->nSize)
|
||||
return 0;
|
||||
break;
|
||||
case 2: // 종류
|
||||
sText1 += prli1->saAttr[2];
|
||||
sText2 += prli2->saAttr[2];
|
||||
break;
|
||||
case 3: // 날짜
|
||||
sText1 += prli1->saAttr[plist->m_nSortColumn];
|
||||
sText2 += prli2->saAttr[plist->m_nSortColumn];
|
||||
break;
|
||||
default:
|
||||
sText1 += prli1->saAttr[plist->m_nSortColumn] + prli1->saAttr[0];
|
||||
sText2 += prli2->saAttr[plist->m_nSortColumn] + prli2->saAttr[0];
|
||||
break;
|
||||
}
|
||||
|
||||
return (KrCompare(sText1, sText2) * (-plist->m_nSortDirect));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
// RemoteListCtrl.h : header file
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "MainFrm.h"
|
||||
#include "RLDropTarget.h"
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CShellListCtrl window
|
||||
|
||||
class CRemoteListCtrl : public CListCtrl
|
||||
{
|
||||
// Construction
|
||||
public:
|
||||
CRemoteListCtrl();
|
||||
|
||||
// Attributes
|
||||
protected:
|
||||
CRLDropTarget m_dropTarget;
|
||||
|
||||
int m_nStyle;
|
||||
|
||||
CImageList m_ilSort;
|
||||
int m_nSortColumn;
|
||||
int m_nSortDirect;
|
||||
|
||||
CString m_asHeader[4];
|
||||
int m_anHeaderAlign[4];
|
||||
|
||||
int m_iSelectedItem;
|
||||
|
||||
public:
|
||||
|
||||
// Operations
|
||||
protected:
|
||||
static int CALLBACK SortProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
|
||||
|
||||
BOOL SetSysImageList();
|
||||
|
||||
void SetClipboard(CLIPBOARD_STATE cbs);
|
||||
void PasteClipboard(CString sFolder = "");
|
||||
|
||||
public:
|
||||
BOOL SetItemText(int nItem, int nSubItem, LPCTSTR lpszText);
|
||||
|
||||
void SetListStyle(int nStyle);
|
||||
|
||||
void Sort(int nColumn = -1);
|
||||
|
||||
// Overrides
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CRemoteListCtrl)
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
public:
|
||||
virtual ~CRemoteListCtrl();
|
||||
|
||||
protected:
|
||||
virtual BOOL PreTranslateMessage(MSG* pMsg);
|
||||
|
||||
protected:
|
||||
//{{AFX_MSG(CRemoteListCtrl)
|
||||
//}}AFX_MSG
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
|
||||
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
|
||||
afx_msg void OnLButtonDblClk(UINT /*nFlags*/, CPoint /*point*/);
|
||||
afx_msg void OnContextMenu(CWnd* /*pWnd*/, CPoint /*point*/);
|
||||
afx_msg void OnBegindrag(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
afx_msg void OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult);
|
||||
afx_msg void OnListNewfolder();
|
||||
afx_msg void OnListRefresh();
|
||||
afx_msg void OnListType1();
|
||||
afx_msg void OnListType2();
|
||||
afx_msg void OnListType3();
|
||||
afx_msg void OnListType4();
|
||||
afx_msg void OnListSort1();
|
||||
afx_msg void OnListSort2();
|
||||
afx_msg void OnListSort3();
|
||||
afx_msg void OnListSort4();
|
||||
afx_msg void OnListPaste();
|
||||
afx_msg void OnListAll();
|
||||
afx_msg void OnListfileDownload();
|
||||
afx_msg void OnListfileSaveUrl();
|
||||
afx_msg void OnListfileCut();
|
||||
afx_msg void OnListfileCopy();
|
||||
afx_msg void OnListfilePaste();
|
||||
afx_msg void OnListfileDelete();
|
||||
afx_msg void OnListfileRename();
|
||||
};
|
||||
@@ -0,0 +1,792 @@
|
||||
// RemoteTreeCtrl.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "RemoteTreeCtrl.h"
|
||||
|
||||
#include "MainFrm.h"
|
||||
#include "LocalView.h"
|
||||
#include "RemoteView.h"
|
||||
|
||||
#include "BandwidthDlg.h"
|
||||
#include "VolumeInfoDlg.h"
|
||||
#include ".\remotetreectrl.h"
|
||||
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
|
||||
CString NumericFormat(__int64 nNumeric);
|
||||
CString BYTE2KMBYTE(__int64 nBytes, int nFlag, bool bShowDecimalPoint);
|
||||
bool IsPathItself(CString sSrcPath, CString sDstPath);
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CRemoteTreeCtrl
|
||||
|
||||
CRemoteTreeCtrl::CRemoteTreeCtrl()
|
||||
{
|
||||
}
|
||||
|
||||
CRemoteTreeCtrl::~CRemoteTreeCtrl()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CRemoteTreeCtrl, CTreeCtrl)
|
||||
//{{AFX_MSG_MAP(CRemoteTreeCtrl)
|
||||
//}}AFX_MSG_MAP
|
||||
ON_WM_CREATE()
|
||||
ON_NOTIFY_REFLECT(NM_RCLICK, OnNMRclick)
|
||||
ON_NOTIFY_REFLECT(TVN_BEGINDRAG, OnBegindrag)
|
||||
// ON_WM_CONTEXTMENU()
|
||||
ON_COMMAND(ID_TREE_CUT, OnTreeCut)
|
||||
ON_COMMAND(ID_TREE_COPY, OnTreeCopy)
|
||||
ON_COMMAND(ID_TREE_PASTE, OnTreePaste)
|
||||
ON_COMMAND(ID_TREE_DELETE, OnTreeDelete)
|
||||
ON_COMMAND(ID_TREE_RENAME, OnTreeRename)
|
||||
ON_COMMAND(ID_TREE_SETANONY, OnTreeSetAnony)
|
||||
ON_COMMAND(ID_TREE_UNSETANONY, OnTreeUnsetAnony)
|
||||
ON_COMMAND(ID_TREE_SETBANDWIDTH, OnTreeSetBandwidth)
|
||||
ON_COMMAND(ID_TREE_INFO, OnTreeInfo)
|
||||
// ON_NOTIFY_REFLECT(TVN_ENDLABELEDIT, OnTvnEndlabeledit)
|
||||
// ON_NOTIFY_REFLECT(TVN_BEGINLABELEDIT, OnTvnBeginlabeledit)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CRemoteTreeCtrl message handlers
|
||||
BOOL CRemoteTreeCtrl::PreTranslateMessage(MSG* pMsg)
|
||||
{
|
||||
CMainFrame *pmf = (CMainFrame *)AfxGetMainWnd();
|
||||
|
||||
switch (pMsg->message)
|
||||
{
|
||||
case WM_SETFOCUS:
|
||||
case WM_LBUTTONDOWN:
|
||||
case WM_RBUTTONDOWN:
|
||||
pmf->SetFocus(this);
|
||||
break;
|
||||
case WM_KEYDOWN:
|
||||
CEdit *edit = GetEditControl();
|
||||
if (edit) {
|
||||
if (pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE) {
|
||||
edit->SendMessage(WM_KEYDOWN, pMsg->wParam, pMsg->lParam);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else if (pMsg->wParam == VK_F2) {
|
||||
HTREEITEM hti = GetSelectedItem();
|
||||
if (!hti)
|
||||
return TRUE;
|
||||
if (!GetParentItem(hti))
|
||||
return TRUE;
|
||||
EditLabel(hti);
|
||||
return TRUE;
|
||||
}
|
||||
else if (pMsg->wParam == VK_DELETE) {
|
||||
((CRemoteView*)GetParent())->DeleteTreeItem(GetSelectedItem());
|
||||
return TRUE;
|
||||
}
|
||||
else if (GetKeyState(VK_CONTROL) & 128) {
|
||||
if (pMsg->wParam == VK_C) {
|
||||
//2014.07.25 dadamin copy 기능 제거
|
||||
#ifdef _USE_COPY_
|
||||
SetClipboard(GetSelectedItem(), CBS_COPY);
|
||||
#else
|
||||
AfxMessageBox(IDS_COPY_NOT_ALLOWD, MB_ICONERROR);
|
||||
#endif // _USE_COPY_
|
||||
return TRUE;
|
||||
}
|
||||
else if (pMsg->wParam == VK_X) {
|
||||
SetClipboard(GetSelectedItem(), CBS_CUT);
|
||||
return TRUE;
|
||||
}
|
||||
else if (pMsg->wParam == VK_V) {
|
||||
PasteClipboard(GetSelectedItem());
|
||||
return TRUE;
|
||||
}
|
||||
else if (pMsg->wParam == VK_D) {
|
||||
HTREEITEM hti = GetSelectedItem();
|
||||
if (!hti || hti == GetRootItem() || GetParentItem(hti) == GetRootItem())
|
||||
return TRUE;
|
||||
|
||||
m_htiSelected = hti;
|
||||
OnTreeDelete();
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return CTreeCtrl::PreTranslateMessage(pMsg);
|
||||
}
|
||||
|
||||
int CRemoteTreeCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
||||
{
|
||||
// if (CTreeCtrl::OnCreate(lpCreateStruct) == -1)
|
||||
// return -1;
|
||||
|
||||
m_dropTarget.Register(this);
|
||||
|
||||
SHFILEINFO shfi;
|
||||
HIMAGELIST hil = (HIMAGELIST)SHGetFileInfo("", 0, &shfi, sizeof(shfi), SHGFI_ICON | SHGFI_SYSICONINDEX | SHGFI_SMALLICON);
|
||||
SetImageList(CImageList::FromHandle(hil), TVSIL_NORMAL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CRemoteTreeCtrl::OnNMRclick(NMHDR *pNMHDR, LRESULT *pResult)
|
||||
{
|
||||
DWORD dwPos = GetMessagePos();
|
||||
|
||||
CPoint pt(GET_X_LPARAM(dwPos), GET_Y_LPARAM(dwPos));
|
||||
CPoint ptHit = pt;
|
||||
|
||||
ScreenToClient(&ptHit);
|
||||
|
||||
if (m_htiSelected = HitTest(ptHit))
|
||||
OnContextMenu(this, pt);
|
||||
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
void CRemoteTreeCtrl::OnContextMenu(CWnd* pWnd, CPoint point)
|
||||
{
|
||||
if (m_htiSelected == GetRootItem())
|
||||
return;
|
||||
|
||||
CMainFrame* pmf = (CMainFrame*)AfxGetMainWnd();
|
||||
|
||||
CMenu menu, *pmenu;
|
||||
|
||||
menu.LoadMenu(IDR_POP_RTREE);
|
||||
pmenu = menu.GetSubMenu(0);
|
||||
ASSERT(pmenu != NULL);
|
||||
|
||||
pmenu->SetMenuItemBitmaps(ID_TREE_CUT, MF_BYCOMMAND, &pmf->m_bmCut, &pmf->m_bmCut);
|
||||
//2014.07.25 dadamin copy 기능 제거
|
||||
#ifdef _USE_COPY_
|
||||
pmenu->SetMenuItemBitmaps(ID_TREE_COPY, MF_BYCOMMAND, &pmf->m_bmCopy, &pmf->m_bmCopy);
|
||||
#endif // _USE_COPY_
|
||||
pmenu->SetMenuItemBitmaps(ID_TREE_PASTE, MF_BYCOMMAND, &pmf->m_bmPaste, &pmf->m_bmPaste);
|
||||
|
||||
PRTREEITEM_STRUCT prti = (PRTREEITEM_STRUCT)GetItemData(m_htiSelected);
|
||||
if (prti->nClass == TNS_VOLUME) {
|
||||
pmenu->EnableMenuItem(ID_TREE_CUT, MF_GRAYED);
|
||||
//2014.07.25 dadamin copy 기능 제거
|
||||
#ifdef _USE_COPY_
|
||||
pmenu->EnableMenuItem(ID_TREE_COPY, MF_GRAYED);
|
||||
#endif // _USE_COPY_
|
||||
pmenu->EnableMenuItem(ID_TREE_DELETE, MF_GRAYED);
|
||||
pmenu->EnableMenuItem(ID_TREE_RENAME, MF_GRAYED);
|
||||
|
||||
pmenu->DeleteMenu(6, MF_BYPOSITION);
|
||||
pmenu->DeleteMenu(ID_TREE_SETANONY, MF_BYCOMMAND);
|
||||
pmenu->DeleteMenu(ID_TREE_UNSETANONY, MF_BYCOMMAND);
|
||||
pmenu->DeleteMenu(ID_TREE_SETBANDWIDTH, MF_BYCOMMAND);
|
||||
}
|
||||
else {
|
||||
pmenu->DeleteMenu(10, MF_BYPOSITION);
|
||||
// pmenu->DeleteMenu(ID_TREE_INFO, MF_BYCOMMAND);
|
||||
|
||||
if (((PRTREEITEM_STRUCT)GetItemData(GetParentItem(m_htiSelected)))->nClass != TNS_FOLDER) {
|
||||
pmenu->DeleteMenu(!atoi(prti->saAttr[1]) ? ID_TREE_UNSETANONY : ID_TREE_SETANONY, MF_BYCOMMAND);
|
||||
}
|
||||
else {
|
||||
pmenu->DeleteMenu(6, MF_BYPOSITION);
|
||||
pmenu->DeleteMenu(ID_TREE_SETANONY, MF_BYCOMMAND);
|
||||
pmenu->DeleteMenu(ID_TREE_UNSETANONY, MF_BYCOMMAND);
|
||||
pmenu->DeleteMenu(ID_TREE_SETBANDWIDTH, MF_BYCOMMAND);
|
||||
}
|
||||
}
|
||||
|
||||
COleDataObject odo;
|
||||
if (!(odo.AttachClipboard() && odo.IsDataAvailable(CF_HDROP))
|
||||
&& !(pmf->m_cbs != CBS_NONE && pmf->m_saDragSource.GetCount() > 0))
|
||||
pmenu->EnableMenuItem(ID_TREE_PASTE, MF_GRAYED);
|
||||
|
||||
pmenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,this);
|
||||
}
|
||||
|
||||
void CRemoteTreeCtrl::OnBegindrag(NMHDR *pNMHDR, LRESULT *pResult)
|
||||
{
|
||||
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
|
||||
|
||||
HTREEITEM hti = pNMTreeView->itemNew.hItem;
|
||||
if (hti == GetRootItem() || GetParentItem(hti) == GetRootItem())
|
||||
return;
|
||||
|
||||
CMainFrame *pmf = (CMainFrame *)AfxGetMainWnd();
|
||||
pmf->m_bDragFromRemote = TRUE;
|
||||
pmf->m_htiDragTarget = GetVolumeItem(hti);
|
||||
pmf->m_saDragSource.RemoveAll();
|
||||
pmf->m_saDragSource.Add(GetPath(hti));
|
||||
|
||||
pmf->m_pLocalView->StartDrag();
|
||||
|
||||
COleDataSource ods;
|
||||
|
||||
DROPEFFECT de = ods.DoDragDrop(DROPEFFECT_COPY | DROPEFFECT_MOVE, NULL);
|
||||
|
||||
pmf->m_pLocalView->EndDrag();
|
||||
|
||||
pmf->m_bDragFromRemote = FALSE;
|
||||
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
void CRemoteTreeCtrl::OnTreeCut()
|
||||
{
|
||||
SetClipboard(m_htiSelected, CBS_CUT);
|
||||
}
|
||||
|
||||
void CRemoteTreeCtrl::OnTreeCopy()
|
||||
{
|
||||
// 2014.07.25 dadamin copy 기능 제거
|
||||
#ifdef _USE_COPY_
|
||||
SetClipboard(m_htiSelected, CBS_COPY);
|
||||
#endif // _USE_COPY_
|
||||
}
|
||||
|
||||
void CRemoteTreeCtrl::OnTreePaste()
|
||||
{
|
||||
PasteClipboard(m_htiSelected);
|
||||
}
|
||||
|
||||
void CRemoteTreeCtrl::OnTreeDelete()
|
||||
{
|
||||
CMainFrame *pmf = (CMainFrame *)AfxGetMainWnd();
|
||||
|
||||
pmf->m_pRemoteView->DeleteTreeItem(m_htiSelected);
|
||||
}
|
||||
|
||||
void CRemoteTreeCtrl::OnTreeRename()
|
||||
{
|
||||
EditLabel(m_htiSelected);
|
||||
}
|
||||
|
||||
void CRemoteTreeCtrl::OnTreeSetAnony()
|
||||
{
|
||||
CMainFrame *pmf = (CMainFrame *)AfxGetMainWnd();
|
||||
|
||||
HTREEITEM htiVolume = GetVolumeItem(m_htiSelected);
|
||||
HCOMMLIB hcl = (HCOMMLIB)pmf->m_mapHcl[htiVolume];
|
||||
|
||||
if (!cl_set_anonyauth(hcl, GetItemText(htiVolume), TRUE, GetItemText(m_htiSelected))) {
|
||||
AfxMessageBox(cl_get_error_message(hcl), MB_ICONERROR);
|
||||
return;
|
||||
}
|
||||
|
||||
((CRemoteView*)GetParent())->SetAnonyFolder(htiVolume, GetItemText(m_htiSelected), true, true);
|
||||
|
||||
}
|
||||
|
||||
void CRemoteTreeCtrl::OnTreeUnsetAnony()
|
||||
{
|
||||
CMainFrame *pmf = (CMainFrame *)AfxGetMainWnd();
|
||||
|
||||
HTREEITEM htiVolume = GetVolumeItem(m_htiSelected);
|
||||
HCOMMLIB hcl = (HCOMMLIB)pmf->m_mapHcl[htiVolume];
|
||||
|
||||
if (!cl_set_anonyauth(hcl, GetItemText(htiVolume), FALSE, GetItemText(m_htiSelected))) {
|
||||
AfxMessageBox(cl_get_error_message(hcl), MB_ICONERROR);
|
||||
return;
|
||||
}
|
||||
|
||||
((CRemoteView*)GetParent())->SetAnonyFolder(htiVolume, GetItemText(m_htiSelected), false, true);
|
||||
}
|
||||
|
||||
void CRemoteTreeCtrl::OnTreeSetBandwidth()
|
||||
{
|
||||
CBandwidthDlg dlg;
|
||||
|
||||
dlg.m_sPath = GetPath(m_htiSelected);
|
||||
dlg.m_nLevel = 0;
|
||||
|
||||
if (dlg.DoModal() != IDOK)
|
||||
return;
|
||||
|
||||
CMainFrame* pmf = (CMainFrame*)AfxGetMainWnd();
|
||||
|
||||
HTREEITEM htiVolume = GetVolumeItem(m_htiSelected);
|
||||
HCOMMLIB hcl = (HCOMMLIB)pmf->m_mapHcl[htiVolume];
|
||||
|
||||
// if (!cl_set_anonyauth(hcl, GetItemText(htiVolume), FALSE, GetItemText(m_htiSelected))) {
|
||||
// AfxMessageBox(cl_get_error_message(hcl), MB_ICONERROR);
|
||||
// return;
|
||||
// }
|
||||
}
|
||||
|
||||
void CRemoteTreeCtrl::OnTreeInfo()
|
||||
{
|
||||
PRTREEITEM_STRUCT prtiTree;
|
||||
HTREEITEM htiVolume;
|
||||
PRTREEITEM_STRUCT prtiVolume;
|
||||
CString sVolumeId;
|
||||
RFOLDERINFO_STRUCT folderinfo;
|
||||
CVolumeInfoDlg dlg;
|
||||
__int64 nTotalBytes;
|
||||
__int64 nUsedBytes;
|
||||
|
||||
BeginWaitCursor();
|
||||
|
||||
CMainFrame *pmf = (CMainFrame *)AfxGetMainWnd();
|
||||
|
||||
prtiTree = (PRTREEITEM_STRUCT)GetItemData(m_htiSelected);
|
||||
|
||||
if(prtiTree->nClass == TNS_VOLUME)
|
||||
{
|
||||
pmf->UpdateVolumeInfo(m_htiSelected);
|
||||
|
||||
htiVolume = GetVolumeItem(m_htiSelected);
|
||||
prtiVolume = (PRTREEITEM_STRUCT)GetItemData(htiVolume);
|
||||
sVolumeId = GetItemText(htiVolume);
|
||||
nTotalBytes = _atoi64(prtiVolume->saAttr[2]);
|
||||
nUsedBytes = _atoi64(prtiVolume->saAttr[3]);
|
||||
dlg.m_sType = "서비스";
|
||||
dlg.m_sTitle = sVolumeId;
|
||||
}
|
||||
else
|
||||
{
|
||||
folderinfo.nCountFile = 0;
|
||||
folderinfo.nCountFolder = 0;
|
||||
folderinfo.nSize = 0;
|
||||
|
||||
pmf->GetFolderInfo(m_htiSelected,&folderinfo);
|
||||
nTotalBytes = folderinfo.nSize;
|
||||
nUsedBytes = folderinfo.nSize;
|
||||
dlg.m_sType = "폴더";
|
||||
dlg.m_sTitle = folderinfo.strName;
|
||||
}
|
||||
|
||||
dlg.m_sTotalSpace = NumericFormat(nTotalBytes) + "Bytes";
|
||||
dlg.m_sTotalSpaceT = BYTE2KMBYTE(nTotalBytes, 0, TRUE);
|
||||
|
||||
int nFlag = 0;
|
||||
CString sUnit = dlg.m_sTotalSpaceT.Right(2);
|
||||
if (sUnit == "KB")
|
||||
nFlag = 1;
|
||||
else if (sUnit == "MB")
|
||||
nFlag = 2;
|
||||
else if (sUnit == "GB")
|
||||
nFlag = 3;
|
||||
else if (sUnit == "TB")
|
||||
nFlag = 4;
|
||||
|
||||
__int64 nFreeBytes = nTotalBytes - nUsedBytes;
|
||||
dlg.m_sUseSpace = NumericFormat(nUsedBytes) + "Bytes";
|
||||
dlg.m_sUseSpaceT = BYTE2KMBYTE(nUsedBytes, nFlag, TRUE);
|
||||
dlg.m_sFreeSpace = NumericFormat(nFreeBytes) + "Bytes";
|
||||
dlg.m_sFreeSpaceT = BYTE2KMBYTE(nFreeBytes, nFlag, TRUE);
|
||||
|
||||
dlg.DoModal();
|
||||
|
||||
((CRemoteView*)GetParent())->ShowStatusSpace();
|
||||
|
||||
/*
|
||||
__int64 nTotalBytes, nUsedBytes;
|
||||
|
||||
BOOL bRet = pdwft->GetVolumeInfo(GetPath(m_htiSelected), &nUsedBytes);
|
||||
|
||||
pmf->RecycleConnection(pdwft);
|
||||
|
||||
EndWaitCursor();
|
||||
|
||||
if (!bRet) {
|
||||
CString sMsg;
|
||||
sMsg.Format("서비스 정보를 가져올 수 없습니다.\n%s", pdwft->GetErrorMessage());
|
||||
AfxMessageBox(sMsg, MB_ICONERROR);
|
||||
return;
|
||||
}
|
||||
|
||||
CVolumeInfoDlg dlg;
|
||||
|
||||
HTREEITEM htiVolume, hti = m_htiSelected;
|
||||
while (hti != GetRootItem()) {
|
||||
htiVolume = hti;
|
||||
|
||||
hti = GetParentItem(hti);
|
||||
}
|
||||
PT_TREENODE ptn = (PT_TREENODE)GetItemData(htiVolume);
|
||||
|
||||
dlg.m_sTitle = GetItemText(htiVolume);
|
||||
|
||||
int iPos, iPos2;
|
||||
|
||||
iPos = ptn->sAttribute.Find('|') + 1;
|
||||
iPos = ptn->sAttribute.Find('|', iPos) + 1;
|
||||
iPos2 = ptn->sAttribute.Find('|', iPos);
|
||||
|
||||
nTotalBytes = _atoi64(ptn->sAttribute.Mid(iPos, iPos2 - iPos));
|
||||
if (GetParentItem(m_htiSelected) == GetRootItem()) {
|
||||
UpdateVolumeInfo(htiVolume, nUsedBytes);
|
||||
|
||||
dlg.m_sType = "서비스";
|
||||
}
|
||||
else {
|
||||
dlg.m_sType = "폴더";
|
||||
dlg.m_sTitle += GetPath(m_htiSelected);
|
||||
}
|
||||
|
||||
__int64 nFreeBytes = nTotalBytes - nUsedBytes;
|
||||
|
||||
dlg.m_sTotalSpace = NumericFormat(nTotalBytes) + "Bytes";
|
||||
dlg.m_sTotalSpaceT = BYTE2KMBYTE(nTotalBytes, 0, TRUE);
|
||||
|
||||
int nFlag = 0;
|
||||
if (dlg.m_sType == "서비스") {
|
||||
CString sUnit = dlg.m_sTotalSpaceT.Right(2);
|
||||
|
||||
if (sUnit == "KB")
|
||||
nFlag = 1;
|
||||
else if (sUnit == "MB")
|
||||
nFlag = 2;
|
||||
else if (sUnit == "GB")
|
||||
nFlag = 3;
|
||||
else if (sUnit == "TB")
|
||||
nFlag = 4;
|
||||
}
|
||||
|
||||
dlg.m_sUseSpace = NumericFormat(nUsedBytes) + "Bytes";
|
||||
dlg.m_sUseSpaceT = BYTE2KMBYTE(nUsedBytes, nFlag, TRUE);
|
||||
dlg.m_sFreeSpace = NumericFormat(nFreeBytes) + "Bytes";
|
||||
dlg.m_sFreeSpaceT = BYTE2KMBYTE(nFreeBytes, nFlag, TRUE);
|
||||
|
||||
dlg.DoModal();
|
||||
|
||||
((CRemoteView*)GetParent())->ShowStatusSpace();
|
||||
*/
|
||||
}
|
||||
|
||||
HTREEITEM CRemoteTreeCtrl::InsertItem(LPCTSTR lpszItem, HTREEITEM hParent, HTREEITEM hInsertAfter)
|
||||
{
|
||||
HTREEITEM hti = CTreeCtrl::InsertItem(lpszItem, hParent, hInsertAfter);
|
||||
|
||||
if (TVI_ROOT != hParent)
|
||||
Sort(hParent);
|
||||
|
||||
return hti;
|
||||
}
|
||||
|
||||
HTREEITEM CRemoteTreeCtrl::InsertItem(LPCTSTR lpszItem, int nImage, int nSelectedImage, HTREEITEM hParent, HTREEITEM hInsertAfter)
|
||||
{
|
||||
HTREEITEM hti = CTreeCtrl::InsertItem(lpszItem, nImage, nSelectedImage, hParent, hInsertAfter);
|
||||
|
||||
if (TVI_ROOT != hParent)
|
||||
Sort(hParent);
|
||||
|
||||
return hti;
|
||||
}
|
||||
|
||||
BOOL CRemoteTreeCtrl::SetItemText(HTREEITEM hItem, LPCTSTR lpszItem)
|
||||
{
|
||||
PRTREEITEM_STRUCT prti = (PRTREEITEM_STRUCT)GetItemData(hItem);
|
||||
if (prti)
|
||||
prti->saAttr[1] = prti->saAttr[1].Left(prti->saAttr[1].ReverseFind('/') + 1) + lpszItem;
|
||||
|
||||
return CTreeCtrl::SetItemText(hItem, lpszItem);
|
||||
}
|
||||
|
||||
BOOL CRemoteTreeCtrl::DeleteItem(HTREEITEM hItem)
|
||||
{
|
||||
if(ItemHasChildren(hItem))
|
||||
DeleteChildItem(hItem);
|
||||
|
||||
PRTREEITEM_STRUCT prti = (PRTREEITEM_STRUCT)GetItemData(hItem);
|
||||
if (prti)
|
||||
{
|
||||
for (int i = 0; i < prti->paObject.GetCount(); i++)
|
||||
{
|
||||
// CString strTemp;
|
||||
// strTemp.Format(_T("DeleteItem : %s"),((PRLISTITEM_STRUCT)prti->paObject[i])->sName);
|
||||
// OutputDebugString(strTemp);
|
||||
delete (PRLISTITEM_STRUCT)prti->paObject[i];
|
||||
}
|
||||
prti->paObject.RemoveAll();
|
||||
prti->saAttr.RemoveAll();
|
||||
delete prti;
|
||||
}
|
||||
|
||||
return CTreeCtrl::DeleteItem(hItem);
|
||||
}
|
||||
|
||||
BOOL CRemoteTreeCtrl::DeleteAllItems()
|
||||
{
|
||||
SetRedraw(FALSE);
|
||||
|
||||
HTREEITEM hti = GetRootItem();
|
||||
while (hti)
|
||||
{
|
||||
HTREEITEM htiRoot = hti;
|
||||
while (hti)
|
||||
{
|
||||
if (ItemHasChildren(hti))
|
||||
{
|
||||
hti = GetChildItem(hti);
|
||||
continue;
|
||||
}
|
||||
else if (htiRoot == hti)
|
||||
break;
|
||||
|
||||
HTREEITEM htiParent = GetParentItem(hti);
|
||||
DeleteItem(hti);
|
||||
hti = htiParent;
|
||||
}
|
||||
|
||||
hti = GetNextSiblingItem(htiRoot);
|
||||
DeleteItem(htiRoot);
|
||||
}
|
||||
|
||||
SetRedraw(TRUE);
|
||||
|
||||
return TRUE;//CTreeCtrl::DeleteAllItems();
|
||||
}
|
||||
|
||||
void CRemoteTreeCtrl::DeleteChildItem(HTREEITEM hti)
|
||||
{
|
||||
OutputDebugString(_T("DeleteChildItem"));
|
||||
|
||||
if (!hti)
|
||||
hti = GetSelectedItem();
|
||||
|
||||
if (!hti)
|
||||
return;
|
||||
|
||||
HTREEITEM htiCurrent = hti;
|
||||
|
||||
SetRedraw(FALSE);
|
||||
while (hti)
|
||||
{
|
||||
if (ItemHasChildren(hti))
|
||||
{
|
||||
hti = GetChildItem(hti);
|
||||
continue;
|
||||
}
|
||||
else if (htiCurrent == hti)
|
||||
break;
|
||||
|
||||
HTREEITEM htiParent = GetParentItem(hti);
|
||||
DeleteItem(hti);
|
||||
hti = htiParent;
|
||||
}
|
||||
|
||||
SetRedraw(TRUE);
|
||||
|
||||
PRTREEITEM_STRUCT prti = (PRTREEITEM_STRUCT)GetItemData(hti);
|
||||
if (prti) {
|
||||
for (int i = 0; i < prti->paObject.GetCount(); i++)
|
||||
delete (PRLISTITEM_STRUCT)prti->paObject[i];
|
||||
|
||||
prti->paObject.RemoveAll();
|
||||
}
|
||||
}
|
||||
|
||||
CString CRemoteTreeCtrl::GetPath(HTREEITEM hti)
|
||||
{
|
||||
if (!hti)
|
||||
hti = GetSelectedItem();
|
||||
|
||||
CString sPath = "";
|
||||
|
||||
while (((PRTREEITEM_STRUCT)GetItemData(hti))->nClass == TNS_FOLDER) {
|
||||
sPath = "/" + GetItemText(hti) + sPath;
|
||||
|
||||
hti = GetParentItem(hti);
|
||||
}
|
||||
|
||||
return sPath;
|
||||
}
|
||||
|
||||
HTREEITEM CRemoteTreeCtrl::GetVolumeItem(HTREEITEM hti)
|
||||
{
|
||||
PRTREEITEM_STRUCT prti = (PRTREEITEM_STRUCT)GetItemData(hti);
|
||||
ASSERT(prti);
|
||||
if (prti->nClass == TNS_ROOT)
|
||||
return NULL;
|
||||
|
||||
while (hti) {
|
||||
prti = (PRTREEITEM_STRUCT)GetItemData(hti);
|
||||
if (prti->nClass == TNS_VOLUME)
|
||||
break;
|
||||
|
||||
hti = GetParentItem(hti);
|
||||
}
|
||||
|
||||
return hti;
|
||||
}
|
||||
|
||||
CString CRemoteTreeCtrl::GetVolumeText(HTREEITEM hti)
|
||||
{
|
||||
while (hti && GetParentItem(hti) != GetRootItem())
|
||||
hti = GetParentItem(hti);
|
||||
|
||||
return GetItemText(hti);
|
||||
}
|
||||
|
||||
HTREEITEM CRemoteTreeCtrl::GetItem(HTREEITEM hti, CString sPath)
|
||||
{
|
||||
if (sPath.Left(1) == "/")
|
||||
sPath.Delete(0);
|
||||
if (sPath.Right(1) == "/")
|
||||
sPath.Delete(sPath.GetLength());
|
||||
|
||||
int iToken = 0;
|
||||
CString sToken = sPath.Tokenize("/", iToken);
|
||||
while (sToken != "")
|
||||
{
|
||||
HTREEITEM htiChild = GetChildItem(hti);
|
||||
while (htiChild) {
|
||||
if (GetItemText(htiChild) == sToken)
|
||||
break;
|
||||
|
||||
htiChild = GetNextSiblingItem(htiChild);
|
||||
}
|
||||
|
||||
if (!htiChild)
|
||||
return NULL;
|
||||
|
||||
hti = htiChild;
|
||||
sToken = sPath.Tokenize("/", iToken);
|
||||
}
|
||||
|
||||
return hti;
|
||||
}
|
||||
|
||||
bool CRemoteTreeCtrl::IsExistsChild(HTREEITEM hti, CString sName)
|
||||
{
|
||||
PRTREEITEM_STRUCT prti = (PRTREEITEM_STRUCT)GetItemData(hti);
|
||||
if (!prti)
|
||||
return false;
|
||||
|
||||
for (int i = 0; i < prti->paObject.GetCount(); i++) {
|
||||
if (((PRLISTITEM_STRUCT)prti->paObject[i])->sName == sName)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void CRemoteTreeCtrl::SetClipboard(HTREEITEM hti, CLIPBOARD_STATE cbs)
|
||||
{
|
||||
if (OpenClipboard()) {
|
||||
EmptyClipboard();
|
||||
CloseClipboard();
|
||||
}
|
||||
|
||||
if (!hti || hti == GetRootItem() || GetParentItem(hti) == GetRootItem())
|
||||
return;
|
||||
|
||||
CMainFrame *pmf = (CMainFrame *)AfxGetMainWnd();
|
||||
|
||||
pmf->m_saDragSource.RemoveAll();
|
||||
|
||||
pmf->m_cbs = cbs;
|
||||
pmf->m_htiDragTarget = GetVolumeItem(hti);
|
||||
pmf->m_saDragSource.Add(GetPath(hti));
|
||||
}
|
||||
|
||||
void CRemoteTreeCtrl::PasteClipboard(HTREEITEM htiTarget)
|
||||
{
|
||||
if (!htiTarget || htiTarget == GetRootItem())
|
||||
return;
|
||||
|
||||
COleDataObject odo;
|
||||
|
||||
if (odo.AttachClipboard() && odo.IsDataAvailable(CF_HDROP)) {
|
||||
STGMEDIUM sm;
|
||||
FORMATETC fe = {CF_HDROP, (DVTARGETDEVICE FAR*)NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
|
||||
|
||||
if (!odo.GetData(CF_HDROP, &sm, &fe))
|
||||
return;
|
||||
|
||||
HDROP hdrop = (HDROP)sm.hGlobal;
|
||||
|
||||
int nDragCount = ::DragQueryFile(hdrop, 0xFFFFFFFF, NULL, 0);
|
||||
if (nDragCount == 0)
|
||||
return;
|
||||
|
||||
CMainFrame* pmf = (CMainFrame*)AfxGetMainWnd();
|
||||
|
||||
pmf->m_saDragSource.RemoveAll();
|
||||
|
||||
char szFile[MAX_PATH];
|
||||
for (int i = 0; i < nDragCount; i++) {
|
||||
::DragQueryFile(hdrop, i, szFile, sizeof(szFile));
|
||||
|
||||
CString sFile(szFile);
|
||||
if (sFile.Find('\\') < 0) {
|
||||
AfxMessageBox("시스템 파일은 업로드 할 수 없습니다.");
|
||||
pmf->m_saDragSource.RemoveAll();
|
||||
break;
|
||||
}
|
||||
|
||||
pmf->m_saDragSource.Add(sFile);
|
||||
}
|
||||
|
||||
if (pmf->m_saDragSource.GetCount() == 0)
|
||||
return;
|
||||
|
||||
pmf->m_sDragTarget = GetPath(htiTarget);
|
||||
pmf->m_htiDragTarget = GetVolumeItem(htiTarget);
|
||||
|
||||
pmf->Upload(false);
|
||||
}
|
||||
else {
|
||||
CMainFrame* pmf = (CMainFrame*)AfxGetMainWnd();
|
||||
|
||||
if (pmf->m_cbs == CBS_NONE)
|
||||
return;
|
||||
|
||||
if (pmf->m_saDragSource.GetCount() == 0)
|
||||
return;
|
||||
|
||||
if (GetVolumeItem(htiTarget) != pmf->m_htiDragTarget) {
|
||||
AfxMessageBox("서로 다른 서비스사이에는 파일을 복사 또는 이동 할 수 없습니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
pmf->m_sDragTarget = GetPath(htiTarget);
|
||||
for (int i = 0; i < pmf->m_saDragSource.GetCount(); i++) {
|
||||
if (IsPathItself(pmf->m_saDragSource[i], pmf->m_sDragTarget)) {
|
||||
AfxMessageBox("자기 자신의 하위 폴더로 복사 또는 이동 할 수 없습니다.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
pmf->BeginWaitMessage();
|
||||
|
||||
CStringArray saSucceed;
|
||||
if (pmf->m_cbs == CBS_COPY)
|
||||
pmf->CopyRemoteObject(pmf->m_htiDragTarget, pmf->m_saDragSource, pmf->m_sDragTarget, saSucceed);
|
||||
else
|
||||
pmf->MoveRemoteObject(pmf->m_htiDragTarget, pmf->m_saDragSource, pmf->m_sDragTarget, saSucceed);
|
||||
|
||||
CRemoteView* pview = (CRemoteView*)GetParent();
|
||||
for (int i = 0; i < saSucceed.GetCount(); i++) {
|
||||
HTREEITEM hti = GetItem(pmf->m_htiDragTarget, saSucceed[i]);
|
||||
if (!hti)
|
||||
continue;
|
||||
|
||||
CString sName = saSucceed[i].Mid(saSucceed[i].ReverseFind('/') + 1);
|
||||
if (!IsExistsChild(htiTarget, sName))
|
||||
pview->AppendObject(htiTarget, true, sName, 0, "");
|
||||
if (pmf->m_cbs == CBS_CUT)
|
||||
DeleteItem(hti);
|
||||
}
|
||||
|
||||
pmf->EndWaitMessage();
|
||||
|
||||
if (saSucceed.GetCount() == 0)
|
||||
return;
|
||||
|
||||
pmf->m_pRemoteView->RefreshItem();
|
||||
}
|
||||
}
|
||||
|
||||
void CRemoteTreeCtrl::Sort(HTREEITEM hti)
|
||||
{
|
||||
SortChildren(hti);
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
// RemoteTreeCtrl.h : header file
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "MainFrm.h"
|
||||
#include "RTDropTarget.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CShellTreeCtrl window
|
||||
|
||||
class CRemoteTreeCtrl : public CTreeCtrl
|
||||
{
|
||||
// Construction
|
||||
public:
|
||||
CRemoteTreeCtrl();
|
||||
|
||||
// Attributes
|
||||
protected:
|
||||
HTREEITEM m_htiSelected;
|
||||
|
||||
CRTDropTarget m_dropTarget;
|
||||
|
||||
public:
|
||||
|
||||
// Operations
|
||||
protected:
|
||||
void SetClipboard(HTREEITEM hti, CLIPBOARD_STATE cbs);
|
||||
void PasteClipboard(HTREEITEM htiTarget);
|
||||
|
||||
public:
|
||||
CString GetPath(HTREEITEM hti = NULL);
|
||||
|
||||
HTREEITEM GetVolumeItem(HTREEITEM hti);
|
||||
CString GetVolumeText(HTREEITEM hti);
|
||||
|
||||
HTREEITEM GetItem(HTREEITEM hti, CString sPath);
|
||||
|
||||
bool IsExistsChild(HTREEITEM hti, CString sName);
|
||||
|
||||
void Sort(HTREEITEM hti = NULL);
|
||||
|
||||
void DeleteChildItem(HTREEITEM hti);
|
||||
|
||||
// Overrides
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CRemoteTreeCtrl)
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
public:
|
||||
HTREEITEM InsertItem(LPCTSTR lpszItem, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST);
|
||||
HTREEITEM InsertItem(LPCTSTR lpszItem, int nImage, int nSelectedImage, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST);
|
||||
BOOL SetItemText(HTREEITEM hItem, LPCTSTR lpszItem);
|
||||
BOOL DeleteItem(HTREEITEM hItem);
|
||||
BOOL DeleteAllItems();
|
||||
|
||||
virtual ~CRemoteTreeCtrl();
|
||||
|
||||
protected:
|
||||
virtual BOOL PreTranslateMessage(MSG* pMsg);
|
||||
|
||||
protected:
|
||||
//{{AFX_MSG(CRemoteTreeCtrl)
|
||||
//}}AFX_MSG
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
|
||||
afx_msg void OnNMRclick(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
afx_msg void OnContextMenu(CWnd* /*pWnd*/, CPoint /*point*/);
|
||||
afx_msg void OnBegindrag(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
afx_msg void OnTreeCut();
|
||||
afx_msg void OnTreeCopy();
|
||||
afx_msg void OnTreePaste();
|
||||
afx_msg void OnTreeDelete();
|
||||
afx_msg void OnTreeRename();
|
||||
afx_msg void OnTreeSetAnony();
|
||||
afx_msg void OnTreeUnsetAnony();
|
||||
afx_msg void OnTreeSetBandwidth();
|
||||
afx_msg void OnTreeInfo();
|
||||
};
|
||||
@@ -0,0 +1,147 @@
|
||||
#pragma once
|
||||
|
||||
#include "RemoteComboBox.h"
|
||||
#include "RemoteTreeCtrl.h"
|
||||
#include "RemoteListCtrl.h"
|
||||
|
||||
#include "TextProgressCtrl.h"
|
||||
|
||||
|
||||
#define WMU_SHOW_VOLUMELIST (WM_USER + 1)
|
||||
#define WMU_EXPAND_FOLDERLIST (WM_USER + 2)
|
||||
#define WMU_SHOW_FOLDERLIST (WM_USER + 3)
|
||||
#define WMU_SHOW_OBJECTLIST (WM_USER + 4)
|
||||
|
||||
#define WM_GET_FILE_LIST_END (WM_USER + 10)
|
||||
|
||||
// CRemoteView 폼 뷰입니다.
|
||||
|
||||
class CRemoteView : public CFormView
|
||||
{
|
||||
protected:
|
||||
CRemoteView(); // 동적 만들기에 사용되는 protected 생성자입니다.
|
||||
DECLARE_DYNCREATE(CRemoteView)
|
||||
|
||||
public:
|
||||
enum{ IDD = IDD_REMOTE_VIEW };
|
||||
|
||||
public:
|
||||
virtual ~CRemoteView();
|
||||
#ifdef _DEBUG
|
||||
virtual void AssertValid() const;
|
||||
virtual void Dump(CDumpContext& dc) const;
|
||||
#endif
|
||||
|
||||
private:
|
||||
bool m_bClosing;
|
||||
|
||||
CString m_sOldFileName;
|
||||
|
||||
UINT m_nTimer;
|
||||
|
||||
public:
|
||||
CBitmapButton m_capTitleIcon;
|
||||
CXTCaption m_capTitle;
|
||||
CRemoteTreeCtrl m_tree;
|
||||
CStatic m_capAddr;
|
||||
CRemoteComboBox m_cboAddr;
|
||||
CXTButton m_btnGoAddr;
|
||||
CXTButton m_btnUpAddr;
|
||||
CXTButton m_btnListStyle;
|
||||
CRemoteListCtrl m_list;
|
||||
|
||||
CXTCaption m_capStatus;
|
||||
CTextProgressCtrl m_prgStatusSpace;
|
||||
CStatic m_stcStatusSpace;
|
||||
CStatic m_stcStatusObject;
|
||||
CStatic m_stcStatusMsg;
|
||||
CStatic m_stcSeparator1;
|
||||
CStatic m_stcSeparator2;
|
||||
|
||||
int m_cxSplitter;
|
||||
BOOL m_bDragSplitter;
|
||||
|
||||
long m_nTotalCount;
|
||||
__int64 m_nTotalBytes;
|
||||
long m_nTotalFiles;
|
||||
long m_nSelectedCount;
|
||||
__int64 m_nSelectedBytes;
|
||||
long m_nSelectedFiles;
|
||||
|
||||
bool m_bUpdating;
|
||||
|
||||
CImageList* m_pilSmall;
|
||||
CImageList* m_pilLarge;
|
||||
|
||||
private:
|
||||
void RedrawControl(int cx, int cy);
|
||||
void InvertTracker(int x);
|
||||
|
||||
bool RefreshObjectlist(HTREEITEM htiFolder, BOOL bRefresh);
|
||||
|
||||
|
||||
|
||||
void InsertAnonyFolderIcon(bool bLarge, bool bOpen);
|
||||
bool IsExistsFileName(HTREEITEM htiParent, LPCTSTR pszOldFileName, LPCTSTR pszNewFileName);
|
||||
public:
|
||||
inline CRemoteTreeCtrl *GetTreeCtrl() { return &m_tree; }
|
||||
inline CRemoteListCtrl *GetListCtrl() { return &m_list; }
|
||||
|
||||
void SetControlStatus(BOOL bConnected);
|
||||
void RedrawFocus();
|
||||
void RedrawControl();
|
||||
|
||||
void ApplyListStyle();
|
||||
|
||||
void ShowStatusSpace();
|
||||
void ShowStatusObject(BOOL bSelected = FALSE, BOOL bUpdate = TRUE, BOOL bAllSelected = FALSE);
|
||||
|
||||
void AppendObject(HTREEITEM htiParent, bool bFolder, LPCTSTR pszPath, __int64 nSize, LPCTSTR pszLastModified);
|
||||
|
||||
void ClearAllData();
|
||||
|
||||
// 기능
|
||||
void RefreshItem();
|
||||
|
||||
void MakeNewFolder();
|
||||
|
||||
void DeleteTreeItem(HTREEITEM htiDelete);
|
||||
void DeleteListItem();
|
||||
|
||||
BOOL GetSelectedObject(CStringArray &saObject);
|
||||
|
||||
void SetAnonyFolder(HTREEITEM htiVolume, LPCTSTR pszFolder, bool bSet, bool bRefresh = false);
|
||||
|
||||
protected:
|
||||
virtual void OnDraw(CDC* pDC); // 이 뷰를 그리기 위해 재정의되었습니다.
|
||||
virtual BOOL PreTranslateMessage(MSG* pMsg);
|
||||
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원
|
||||
virtual void OnInitialUpdate(); // 생성 후 처음 호출되었습니다.
|
||||
|
||||
public:
|
||||
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
|
||||
afx_msg void OnDestroy();
|
||||
afx_msg void OnSize(UINT nType, int cx, int cy);
|
||||
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
|
||||
afx_msg void OnRemoteTitle();
|
||||
afx_msg void OnRemoteBtnUpAddr();
|
||||
afx_msg void OnRemoteBtnListStyle();
|
||||
afx_msg void OnTreeSelchanged(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
afx_msg void OnTreeItemexpanding(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
afx_msg void OnTreeItemexpanded(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
afx_msg void OnTreeBeginlabeledit(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
afx_msg void OnTreeEndlabeledit(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
afx_msg void OnListBeginlabeledit(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
afx_msg void OnListEndlabeledit(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
afx_msg void OnListItemChanged(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
afx_msg void OnListNMClick(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
afx_msg void OnTimer(UINT nIDEvent);
|
||||
|
||||
afx_msg LRESULT OnShowVolumelist(WPARAM, LPARAM);
|
||||
afx_msg LRESULT OnExpandFolderlist(WPARAM, LPARAM);
|
||||
afx_msg LRESULT OnShowFolderlist(WPARAM, LPARAM);
|
||||
afx_msg LRESULT OnShowObjectlist(WPARAM, LPARAM);
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<SP-Console>
|
||||
<Settings>
|
||||
<Item name="Splitter Size" type="string">425</Item>
|
||||
<Item name="Remote Tree Size" type="numeric">318</Item>
|
||||
<Item name="Local Tree Size" type="numeric">234</Item>
|
||||
<Item name="Auto Connect" type="numeric">0</Item>
|
||||
<Item name="Save Password" type="numeric">1</Item>
|
||||
<Item name="User ID" type="string">demo</Item>
|
||||
<Item name="Password" type="string">007010013000115117115116112118119121121114121</Item>
|
||||
<Item name="Windows Position" type="string">1 -4 -4 1284 976</Item>
|
||||
</Settings>
|
||||
</SP-Console>
|
||||
@@ -0,0 +1,24 @@
|
||||
#pragma once
|
||||
|
||||
typedef struct {
|
||||
HWND hwnd;
|
||||
LPVOID pParam;
|
||||
int nAction;
|
||||
char szHost[128];
|
||||
char szUserId[64];
|
||||
char szPassword[32];
|
||||
char szProxyHost[128];
|
||||
int nProxyPort;
|
||||
__int64 nFreeBytes;
|
||||
int nFileListSize;
|
||||
char szDstPath[2048];
|
||||
} TRANPARAM_STRUCT, *PTRANPARAM_STRUCT;
|
||||
|
||||
enum TRANPARAM_ACTION {
|
||||
TPA_UPLOAD = 0,
|
||||
TPA_DOWNLOAD,
|
||||
};
|
||||
|
||||
#define EXECUTE_PARAM "$CONSOLE$"
|
||||
|
||||
#define WMU_TRANSFER_DLG_CLOSE (WM_USER + 777)
|
||||
@@ -0,0 +1,14 @@
|
||||
#ifndef __VERSION_INFO_H__
|
||||
|
||||
#define REVISION 1034
|
||||
|
||||
#define FILEVER 3,4,0,REVISION
|
||||
#define PRODUCTVER 3,4,0,REVISION
|
||||
|
||||
#define STR_HELPER(x) #x
|
||||
#define STR(x) STR_HELPER(x)
|
||||
|
||||
#define STRFILEVER "3.4.0." STR(REVISION)
|
||||
#define STRPRODUCTVER "3.4.0." STR(REVISION)
|
||||
|
||||
#endif //__VERSION_INFO_H__
|
||||
@@ -0,0 +1,31 @@
|
||||
// VolumeInfo1Dlg.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "VolumeInfo1Dlg.h"
|
||||
|
||||
|
||||
// CVolumeInfo1Dlg 대화 상자입니다.
|
||||
|
||||
IMPLEMENT_DYNAMIC(CVolumeInfo1Dlg, CDialog)
|
||||
CVolumeInfo1Dlg::CVolumeInfo1Dlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CVolumeInfo1Dlg::IDD, pParent)
|
||||
{
|
||||
}
|
||||
|
||||
CVolumeInfo1Dlg::~CVolumeInfo1Dlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CVolumeInfo1Dlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CVolumeInfo1Dlg, CDialog)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CVolumeInfo1Dlg 메시지 처리기입니다.
|
||||
@@ -0,0 +1,21 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
// CVolumeInfo1Dlg 대화 상자입니다.
|
||||
|
||||
class CVolumeInfo1Dlg : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CVolumeInfo1Dlg)
|
||||
|
||||
public:
|
||||
CVolumeInfo1Dlg(CWnd* pParent = NULL); // 표준 생성자입니다.
|
||||
virtual ~CVolumeInfo1Dlg();
|
||||
|
||||
// 대화 상자 데이터입니다.
|
||||
enum { IDD = IDD_VOLUME_INFO1 };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
@@ -0,0 +1,86 @@
|
||||
// VolumeInfoDlg.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "VolumeInfoDlg.h"
|
||||
|
||||
// CVolumeInfoDlg 대화 상자입니다.
|
||||
|
||||
IMPLEMENT_DYNAMIC(CVolumeInfoDlg, CDialog)
|
||||
CVolumeInfoDlg::CVolumeInfoDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CVolumeInfoDlg::IDD, pParent)
|
||||
, m_sTitle(_T(""))
|
||||
, m_sType(_T(""))
|
||||
, m_sUseSpace(_T(""))
|
||||
, m_sUseSpaceT(_T(""))
|
||||
, m_sFreeSpace(_T(""))
|
||||
, m_sFreeSpaceT(_T(""))
|
||||
, m_sTotalSpace(_T(""))
|
||||
, m_sTotalSpaceT(_T(""))
|
||||
{
|
||||
}
|
||||
|
||||
CVolumeInfoDlg::~CVolumeInfoDlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CVolumeInfoDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_STC_ICON, m_stcIcon);
|
||||
DDX_Text(pDX, IDC_EDT_TITLE, m_sTitle);
|
||||
DDX_Text(pDX, IDC_STC_TYPE, m_sType);
|
||||
DDX_Text(pDX, IDC_STC_USESPACE, m_sUseSpace);
|
||||
DDX_Text(pDX, IDC_STC_USESPACET, m_sUseSpaceT);
|
||||
DDX_Text(pDX, IDC_STC_FREESPACE, m_sFreeSpace);
|
||||
DDX_Text(pDX, IDC_STC_FREESPACET, m_sFreeSpaceT);
|
||||
DDX_Text(pDX, IDC_STC_TOTALSPACE, m_sTotalSpace);
|
||||
DDX_Text(pDX, IDC_STC_TOTALSPACET, m_sTotalSpaceT);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CVolumeInfoDlg, CDialog)
|
||||
ON_WM_DESTROY()
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CVolumeInfoDlg 메시지 처리기입니다.
|
||||
|
||||
BOOL CVolumeInfoDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
SHFILEINFO shfi;
|
||||
|
||||
if (!SHGetFileInfo(m_sType == "폴더" ? "" : "C:\\", FILE_ATTRIBUTE_DIRECTORY, &shfi, sizeof(shfi), SHGFI_USEFILEATTRIBUTES | SHGFI_ICON))
|
||||
shfi.iIcon = 1;
|
||||
m_stcIcon.SetIcon(shfi.hIcon);
|
||||
|
||||
if (m_sType == "폴더") {
|
||||
GetDlgItem(IDC_STC_USETITLE)->SetWindowText("크기 : ");
|
||||
|
||||
GetDlgItem(IDC_STC_FREETITLE)->ShowWindow(SW_HIDE);
|
||||
GetDlgItem(IDC_STC_FREESPACE)->ShowWindow(SW_HIDE);
|
||||
GetDlgItem(IDC_STC_FREESPACET)->ShowWindow(SW_HIDE);
|
||||
GetDlgItem(IDC_STC_TOTALTITLE)->ShowWindow(SW_HIDE);
|
||||
GetDlgItem(IDC_STC_TOTALSPACE)->ShowWindow(SW_HIDE);
|
||||
GetDlgItem(IDC_STC_TOTALSPACET)->ShowWindow(SW_HIDE);
|
||||
|
||||
SetWindowText("폴더정보");
|
||||
}
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
|
||||
}
|
||||
|
||||
void CVolumeInfoDlg::OnDestroy()
|
||||
{
|
||||
CDialog::OnDestroy();
|
||||
|
||||
HICON hIcon;
|
||||
|
||||
hIcon = m_stcIcon.GetIcon();
|
||||
if (hIcon)
|
||||
DestroyIcon(hIcon);
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
#pragma once
|
||||
#include "afxwin.h"
|
||||
|
||||
|
||||
// CVolumeInfoDlg 대화 상자입니다.
|
||||
|
||||
class CVolumeInfoDlg : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CVolumeInfoDlg)
|
||||
|
||||
public:
|
||||
CVolumeInfoDlg(CWnd* pParent = NULL); // 표준 생성자입니다.
|
||||
virtual ~CVolumeInfoDlg();
|
||||
|
||||
// 대화 상자 데이터입니다.
|
||||
enum { IDD = IDD_VOLUME_INFO };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
CStatic m_stcIcon;
|
||||
CString m_sTitle;
|
||||
CString m_sType;
|
||||
CString m_sUseSpace;
|
||||
CString m_sUseSpaceT;
|
||||
CString m_sFreeSpace;
|
||||
CString m_sFreeSpaceT;
|
||||
CString m_sTotalSpace;
|
||||
CString m_sTotalSpaceT;
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnDestroy();
|
||||
};
|
||||
@@ -0,0 +1,108 @@
|
||||
// WaitMessageDlg.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "WaitMessageDlg.h"
|
||||
#include ".\waitmessagedlg.h"
|
||||
|
||||
|
||||
// CWaitMessageDlg 대화 상자입니다.
|
||||
|
||||
IMPLEMENT_DYNAMIC(CWaitMessageDlg, CDialog)
|
||||
CWaitMessageDlg::CWaitMessageDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CWaitMessageDlg::IDD, pParent)
|
||||
{
|
||||
}
|
||||
|
||||
CWaitMessageDlg::~CWaitMessageDlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CWaitMessageDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
DDX_Control(pDX, IDC_PICTURE, m_picture);
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_PROGRESS1, m_prg1);
|
||||
DDX_Control(pDX, IDC_STC, m_stc1);
|
||||
DDX_Control(pDX, IDC_STC2, m_stc2);
|
||||
DDX_Control(pDX, IDC_STC3, m_stc3);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CWaitMessageDlg, CDialog)
|
||||
ON_WM_TIMER()
|
||||
ON_BN_CLICKED(IDC_CANCEL_BTN, OnBnClickedCancelBtn)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CWaitMessageDlg 메시지 처리기입니다.
|
||||
|
||||
BOOL CWaitMessageDlg::Create(UINT nIDTemplate, CWnd* pParentWnd)
|
||||
{
|
||||
return CDialog::Create(nIDTemplate, pParentWnd);
|
||||
}
|
||||
|
||||
BOOL CWaitMessageDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
if (m_picture.Load(MAKEINTRESOURCE(IDR_WAIT), _T("GIF")))
|
||||
m_picture.Draw();
|
||||
|
||||
CenterWindow();
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
|
||||
}
|
||||
|
||||
void CWaitMessageDlg::PostNcDestroy()
|
||||
{
|
||||
// delete this;
|
||||
|
||||
CDialog::PostNcDestroy();
|
||||
}
|
||||
|
||||
BOOL CWaitMessageDlg::ShowWindow(int nCmdShow)
|
||||
{
|
||||
CDialog::ShowWindow(nCmdShow);
|
||||
|
||||
if (nCmdShow == SW_SHOW) {
|
||||
RedrawWindow();
|
||||
Invalidate();
|
||||
|
||||
m_nTimer = (UINT)SetTimer(TIMER_ID_CHANGE, 1000, 0);
|
||||
}
|
||||
else {
|
||||
if (m_nTimer > 0)
|
||||
KillTimer(m_nTimer);
|
||||
m_nTimer = 0;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void CWaitMessageDlg::OnTimer(UINT nIDEvent)
|
||||
{
|
||||
static CString sText = "";
|
||||
|
||||
if (nIDEvent == TIMER_ID_CHANGE) {
|
||||
sText += ".";
|
||||
GetDlgItem(IDC_STC)->SetWindowText(sText);
|
||||
}
|
||||
|
||||
CDialog::OnTimer(nIDEvent);
|
||||
}
|
||||
|
||||
void CWaitMessageDlg::OnBnClickedCancelBtn()
|
||||
{
|
||||
switch(m_nMode)
|
||||
{
|
||||
case 0:
|
||||
PostMessage(WM_CANCEL_GETLIST,NULL,NULL);
|
||||
break;
|
||||
case 1:
|
||||
PostMessage(WM_CANCEL_MAKETREE,NULL,NULL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
#pragma once
|
||||
|
||||
#include "PictureEx.h"
|
||||
#include "afxcmn.h"
|
||||
#include "afxwin.h"
|
||||
|
||||
#define TIMER_ID_CHANGE 1
|
||||
|
||||
|
||||
// CWaitMessageDlg 대화 상자입니다.
|
||||
|
||||
class CWaitMessageDlg : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CWaitMessageDlg)
|
||||
|
||||
public:
|
||||
CWaitMessageDlg(CWnd* pParent = NULL); // 표준 생성자입니다.
|
||||
virtual ~CWaitMessageDlg();
|
||||
|
||||
// 대화 상자 데이터입니다.
|
||||
enum { IDD = IDD_WAITMESSAGE };
|
||||
|
||||
protected:
|
||||
UINT m_nTimer;
|
||||
|
||||
public:
|
||||
CPictureEx m_picture;
|
||||
int m_nMode;
|
||||
|
||||
public:
|
||||
BOOL ShowWindow(int nCmdShow);
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
|
||||
public:
|
||||
virtual BOOL Create(UINT nIDTemplate, CWnd* pParentWnd = NULL);
|
||||
virtual BOOL OnInitDialog();
|
||||
|
||||
protected:
|
||||
virtual void PostNcDestroy();
|
||||
|
||||
afx_msg void OnTimer(UINT nIDEvent);
|
||||
public:
|
||||
CProgressCtrl m_prg1;
|
||||
CStatic m_stc1;
|
||||
CStatic m_stc2;
|
||||
CStatic m_stc3;
|
||||
afx_msg void OnBnClickedCancelBtn();
|
||||
};
|
||||
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||
<assemblyIdentity
|
||||
version="1.0.0.0"
|
||||
processorArchitecture="X86"
|
||||
name="Microsoft.Windows.ConsoleApp"
|
||||
type="win32"
|
||||
/>
|
||||
<description>여기에 응용 프로그램 설명을 추가합니다.</description>
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity
|
||||
type="win32"
|
||||
name="Microsoft.Windows.Common-Controls"
|
||||
version="6.0.0.0"
|
||||
processorArchitecture="X86"
|
||||
publicKeyToken="6595b64144ccf1df"
|
||||
language="*"
|
||||
/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
</assembly>
|
||||
@@ -0,0 +1,67 @@
|
||||
//
|
||||
// SPConsole.RC2 - resources Microsoft Visual C++에서 직접 편집하지 않는 리소스
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#error 이 파일은 Microsoft Visual C++에서 편집할 수 없습니다.
|
||||
#endif //APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// 여기에 수동으로 편집한 리소스를 추가합니다.
|
||||
|
||||
#ifdef _LGU
|
||||
IDR_MAINFRAME ICON "..\\Common\\res\\ConsoleApp_LGU.ico"
|
||||
#else
|
||||
IDR_MAINFRAME ICON "..\\Common\\res\\ConsoleApp_KT.ico"
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Version
|
||||
//
|
||||
// http://support.microsoft.com/kb/237870/ko
|
||||
#include "../VERSION_INFO.h"
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION FILEVER
|
||||
PRODUCTVERSION PRODUCTVER
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x4L
|
||||
FILETYPE 0x1L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "041203b5"
|
||||
BEGIN
|
||||
VALUE "FileDescription", "Client-side Software"
|
||||
VALUE "FileVersion", STRFILEVER
|
||||
VALUE "InternalName", "ConsoleApp.exe"
|
||||
VALUE "LegalCopyright", "Copyright (C) 2010"
|
||||
VALUE "OriginalFilename", "ConsoleApp.exe"
|
||||
VALUE "ProductName", "Client-side Software"
|
||||
VALUE "ProductVersion", STRPRODUCTVER
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x412, 949
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
#define _XTP_RESOURCE_LANGUAGE Ko // XTToolkitPro 언어 설정
|
||||
#include "XTToolkitPro.rc"
|
||||
|
||||
/*
|
||||
#include <../../DSControls/Include/XTPVersion.h>
|
||||
|
||||
#if defined(_XTP_STATICLINK) || !defined(_AFXDLL)
|
||||
#include <XTToolkitPro.rc>
|
||||
#endif
|
||||
*/
|
||||
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||
<assemblyIdentity
|
||||
version="1.0.0.0"
|
||||
processorArchitecture="X86"
|
||||
name="Microsoft.Windows.ConsoleApp"
|
||||
type="win32"
|
||||
/>
|
||||
<description>여기에 응용 프로그램 설명을 추가합니다.</description>
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity
|
||||
type="win32"
|
||||
name="Microsoft.Windows.Common-Controls"
|
||||
version="6.0.0.0"
|
||||
processorArchitecture="X86"
|
||||
publicKeyToken="6595b64144ccf1df"
|
||||
language="*"
|
||||
/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
</assembly>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1014 B |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 824 B |
|
After Width: | Height: | Size: 824 B |
|
After Width: | Height: | Size: 654 B |
|
After Width: | Height: | Size: 822 B |
|
After Width: | Height: | Size: 824 B |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 318 B |
|
After Width: | Height: | Size: 824 B |
|
After Width: | Height: | Size: 824 B |
|
After Width: | Height: | Size: 824 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 230 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 886 B |
@@ -0,0 +1,235 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Visual C++ generated include file.
|
||||
// Used by ConsoleApp.rc
|
||||
//
|
||||
#define IDC_BTN_PAUSE 3
|
||||
#define IDC_BTN_START 5
|
||||
#define IDP_OLE_INIT_FAILED 100
|
||||
#define IDD_ABOUTBOX 100
|
||||
#define IDR_MAINFRAME 128
|
||||
#define IDS_COPY_NOT_ALLOWD 129
|
||||
#define IDI_SORT_NONE 134
|
||||
#define IDI_SORT_ASC 135
|
||||
#define IDI_SORT_DESC 136
|
||||
#define IDI_ANONY_FOLDER 137
|
||||
#define IDD_CONFIG_URL 138
|
||||
#define IDR_POP_RTREE 140
|
||||
#define IDB_MENUBAR 140
|
||||
#define IDR_POP_RLISTFILE 141
|
||||
#define IDD_BANDWIDTH 141
|
||||
#define IDR_POP_RLIST 142
|
||||
#define IDB_BITMAP1 145
|
||||
#define IDB_BITMAP2 146
|
||||
#define IDD_CONFIG 151
|
||||
#define IDD_CONFIG_COMMON 152
|
||||
#define IDD_CONFIG_PROXY 154
|
||||
#define IDD_VOLUME_INFO 174
|
||||
#define IDB_BTN_TOOLBAR1 180
|
||||
#define IDB_BTN_TOOLBAR2 181
|
||||
#define IDB_CAP_LOCAL 186
|
||||
#define IDB_CAP_REMOTE 187
|
||||
#define IDB_TOOLBAR 192
|
||||
#define IDR_ADVERT 196
|
||||
#define IDR_WAIT 197
|
||||
#define IDB_BTN_UP 201
|
||||
#define IDB_BTN_UPLOAD 202
|
||||
#define IDB_BTN_DELETE 203
|
||||
#define IDB_BTN_DOWNLOAD 204
|
||||
#define IDB_BTN_GO 205
|
||||
#define IDB_BTN_LISTSTYLE 206
|
||||
#define IDB_BTN_NEWFOLDER 207
|
||||
#define IDD_REMOTE_VIEW 209
|
||||
#define IDR_POP_LLIST 210
|
||||
#define IDD_WAITMESSAGE 211
|
||||
#define IDB_M_PASTE 212
|
||||
#define IDB_M_COPY 213
|
||||
#define IDB_M_CUT 214
|
||||
#define IDB_M_FOLDER 215
|
||||
#define IDD_CONNECT 216
|
||||
#define IDD_CONNECT_PROXY 218
|
||||
#define IDD_VOLUME_INFO1 219
|
||||
#define IDB_LOGO 222
|
||||
#define IDB_LOGO_LGU 223
|
||||
#define IDC_TAB1 1000
|
||||
#define IDC_STC_TITLE 1001
|
||||
#define IDC_RDO_TAG1 1005
|
||||
#define IDC_RDO_TAG2 1006
|
||||
#define IDC_RDO_TAG3 1007
|
||||
#define IDC_RDO_TAG4 1008
|
||||
#define IDC_EDT_STAG 1009
|
||||
#define IDC_EDT_ETAG 1010
|
||||
#define IDC_EDT_PATH 1010
|
||||
#define IDC_CBO_LEVEL 1011
|
||||
#define IDC_STATIC_ABOUT 1012
|
||||
#define IDC_PROGRESS1 1013
|
||||
#define IDC_STC2 1014
|
||||
#define IDC_STC3 1015
|
||||
#define IDC_BUTTON1 1016
|
||||
#define IDC_CANCEL_BTN 1017
|
||||
#define IDC_STATIC_COPYRIGHT 1018
|
||||
#define IDC_CHK_WAITSTART 1039
|
||||
#define IDC_STC_LOGO 1047
|
||||
#define IDC_EDT_HOST 1059
|
||||
#define IDC_EDT_PORT 1060
|
||||
#define IDC_EDT_PASSWORD 1062
|
||||
#define IDC_CBO_AFTEREXEC 1065
|
||||
#define IDC_CBO_SAVEURL 1067
|
||||
#define IDC_EDT_URLDIVIDER 1069
|
||||
#define IDC_FILEEXISTS_FILE1 1070
|
||||
#define IDC_FILEEXISTS_SIZE1 1071
|
||||
#define IDC_FILEEXISTS_DATE1 1072
|
||||
#define IDC_FILEEXISTS_FILE2 1073
|
||||
#define IDC_FILEEXISTS_SIZE2 1074
|
||||
#define IDC_FILEEXISTS_DATE2 1075
|
||||
#define IDC_FILEEXISTS_ICON1 1076
|
||||
#define IDC_FILEEXISTS_ICON2 1077
|
||||
#define IDC_FILEEXISTS_RADIO1 1079
|
||||
#define IDC_FILEEXISTS_RADIO2 1080
|
||||
#define IDC_FILEEXISTS_RADIO3 1081
|
||||
#define IDC_FILEEXISTS_RADIO4 1082
|
||||
#define IDC_FILEEXISTS_ALWAYS 1084
|
||||
#define IDC_TEXT 1085
|
||||
#define IDC_EDIT 1086
|
||||
#define IDC_LIST 1088
|
||||
#define IDC_PRS_NOW 1089
|
||||
#define IDC_PRS_TOTAL 1090
|
||||
#define IDC_STC_SAVEFILE 1093
|
||||
#define IDC_STC_SPEED 1097
|
||||
#define IDC_TAB 1102
|
||||
#define IDC_STC_STATUS 1106
|
||||
#define IDC_STC_ICON 1107
|
||||
#define IDC_STC_TYPE 1109
|
||||
#define IDC_EDT_TITLE 1110
|
||||
#define IDC_EDT_USERID 1110
|
||||
#define IDC_STC_USESPACE 1111
|
||||
#define IDC_STC_FREESPACE 1112
|
||||
#define IDC_STC_USESPACET 1113
|
||||
#define IDC_STC_FREESPACET 1114
|
||||
#define IDC_STC_TOTALSPACE 1115
|
||||
#define IDC_STC_USESPACE2 1115
|
||||
#define IDC_STC_TOTALSPACET 1116
|
||||
#define IDC_GRP_NOW 1116
|
||||
#define IDC_STC_USESPACET2 1116
|
||||
#define IDC_GRP_TOTAL 1117
|
||||
#define IDC_STC_SPEED_TITLE 1118
|
||||
#define IDC_STC_SAVEFILE_TITLE 1119
|
||||
#define IDC_STC_ETIME_TITLE 1120
|
||||
#define IDC_STC_LTIME_TITLE 1121
|
||||
#define IDC_STC_FILECOUNT_TITLE 1122
|
||||
#define IDC_STC_URLDIVIDER 1125
|
||||
#define IDC_STC_USETITLE 1126
|
||||
#define IDC_STC_FREETITLE 1127
|
||||
#define IDC_STC_TOTALTITLE 1128
|
||||
#define IDC_STC_USETITLE2 1128
|
||||
#define IDC_ADVERT 1131
|
||||
#define IDC_CHK_SEARCHSUB 1134
|
||||
#define IDC_CHK_USE_IEPROXY 1135
|
||||
#define IDC_STC_ETIME 1136
|
||||
#define IDC_STC_LTIME 1137
|
||||
#define IDC_STC_FILECOUNT 1138
|
||||
#define IDC_BTN_DELETE 1139
|
||||
#define IDC_BTN_CLOSE 1140
|
||||
#define IDC_PICTURE 1141
|
||||
#define IDC_STC 1142
|
||||
#define IDC_CHK_AUTOCONNECT 1143
|
||||
#define IDC_CHK_SAVEPASSWORD 1144
|
||||
#define IDC_CHK_AUTOCONNECT2 1144
|
||||
#define IDC_BTN_PROXY 1145
|
||||
#define IDC_SPLITTER 5000
|
||||
#define IDC_LOCAL_SPLITTER 5001
|
||||
#define IDC_LOCAL_TITLE 5002
|
||||
#define IDC_LOCAL_TREE 5003
|
||||
#define IDC_LOCAL_STC_ADDR 5004
|
||||
#define IDC_LOCAL_CBO_ADDR 5005
|
||||
#define IDC_LOCAL_BTN_GO_ADDR 5006
|
||||
#define IDC_LOCAL_BTN_UP_ADDR 5007
|
||||
#define IDC_LOCAL_BTN_LISTSTYLE 5008
|
||||
#define IDC_LOCAL_LIST 5009
|
||||
#define IDC_LOCAL_TOOLBAR 5010
|
||||
#define IDC_LOCAL_ADVERT 5011
|
||||
#define IDC_LOCAL_BTN_TOOLBAR 5012
|
||||
#define IDC_LOCAL_BTN_UPLOAD 5013
|
||||
#define IDC_LOCAL_BTN_DOWNLOAD 5014
|
||||
#define IDC_LOCAL_BTN_NEWFOLDER 5015
|
||||
#define IDC_LOCAL_BTN_DELETE 5016
|
||||
#define IDC_REMOTE_SPLITTER 5021
|
||||
#define IDC_REMOTE_TITLE 5022
|
||||
#define IDC_REMOTE_TREE 5023
|
||||
#define IDC_REMOTE_STC_ADDR 5024
|
||||
#define IDC_REMOTE_CBO_ADDR 5025
|
||||
#define IDC_REMOTE_BTN_GO_ADDR 5026
|
||||
#define IDC_REMOTE_BTN_UP_ADDR 5027
|
||||
#define IDC_REMOTE_BTN_LISTSTYLE 5028
|
||||
#define IDC_REMOTE_LIST 5029
|
||||
#define ID_INFORMATION 10001
|
||||
#define ID_INFORMATIONSTR 10002
|
||||
#define ID_TREE_CUT 30002
|
||||
#define ID_TREE_COPY 30003
|
||||
#define ID_TREE_PASTE 30004
|
||||
#define ID_TREE_DELETE 30005
|
||||
#define ID_TREE_RENAME 30006
|
||||
#define ID_TREE_INFO 30007
|
||||
#define ID_FILE_CONNECT 32771
|
||||
#define ID_FILE_RECONNECT 32772
|
||||
#define ID_FILE_DISCONNECT 32773
|
||||
#define ID_FILE_UPLOAD 32774
|
||||
#define ID_FILE_DOWNLOAD 32775
|
||||
#define ID_VIEW_MID_TOOLBAR 32776
|
||||
#define ID_VIEW_REFRESH 32777
|
||||
#define ID_VIEW_RTREE 32778
|
||||
#define ID_VIEW_RLIST_TYPE1 32779
|
||||
#define ID_VIEW_RLIST_TYPE2 32780
|
||||
#define ID_VIEW_RLIST_TYPE3 32781
|
||||
#define ID_VIEW_RLIST_TYPE4 32782
|
||||
#define ID_VIEW_RSTATUS 32783
|
||||
#define ID_VIEW_LTREE 32784
|
||||
#define ID_VIEW_LLIST_TYPE0 32785
|
||||
#define ID_VIEW_LLIST_TYPE1 32786
|
||||
#define ID_VIEW_LLIST_TYPE2 32787
|
||||
#define ID_VIEW_LLIST_TYPE3 32788
|
||||
#define ID_VIEW_LLIST_TYPE4 32789
|
||||
#define ID_VIEW_LSTATUS 32790
|
||||
#define ID_CFG_OVERWITE_ASK 32791
|
||||
#define ID_CFG_OVERWITE2 32793
|
||||
#define ID_CFG_OVERWITE3 32794
|
||||
#define ID_CFG_OVERWITE4 32795
|
||||
#define ID_CFG_CONFIG 32796
|
||||
#define ID_HELP_HELP 32798
|
||||
#define ID_HELP_HOMEPAGE 32799
|
||||
#define ID_TOOL_STAT 32801
|
||||
#define ID_CFG_OVERWITE1 32802
|
||||
#define ID_TREE_UNSETANONY 32806
|
||||
#define ID_TREE_SETANONY 32807
|
||||
#define ID_TREE_SETBANDWIDTH 32809
|
||||
#define ID_VIEW_ALL 32810
|
||||
#define ID_LISTFILE_CUT 32870
|
||||
#define ID_LISTFILE_COPY 32871
|
||||
#define ID_LISTFILE_DELETE 32872
|
||||
#define ID_LISTFILE_RENAME 32873
|
||||
#define ID_LIST_NEWFOLDER 32889
|
||||
#define ID_LIST_REFRESH 32890
|
||||
#define ID_LIST_TYPE1 32891
|
||||
#define ID_LIST_TYPE2 32892
|
||||
#define ID_LIST_TYPE3 32893
|
||||
#define ID_LIST_TYPE4 32894
|
||||
#define ID_LIST_SORT1 32895
|
||||
#define ID_LIST_SORT2 32896
|
||||
#define ID_LIST_SORT3 32897
|
||||
#define ID_LIST_SORT4 32898
|
||||
#define ID_LIST_PASTE 32899
|
||||
#define ID_LIST_ALL 32900
|
||||
#define ID_LISTFILE_PASTE 32904
|
||||
#define ID_LISTFILE_DOWNLOAD 32937
|
||||
#define ID_LISTFILE_SAVEURL 32943
|
||||
#define ID_LIST_TYPE0 32948
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 148
|
||||
#define _APS_NEXT_COMMAND_VALUE 32811
|
||||
#define _APS_NEXT_CONTROL_VALUE 1019
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
// stdafx.cpp : 표준 포함 파일을 포함하는 소스 파일입니다.
|
||||
// SPConsole.pch는 미리 컴파일된 헤더가 됩니다.
|
||||
// stdafx.obj는 미리 컴파일된 형식 정보를 포함합니다.
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
// stdafx.h : 잘 변경되지 않고 자주 사용하는
|
||||
// 표준 시스템 포함 파일 및 프로젝트 관련 포함 파일이
|
||||
// 들어 있는 포함 파일입니다.
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef VC_EXTRALEAN
|
||||
#define VC_EXTRALEAN // Windows 헤더에서 거의 사용되지 않는 내용을 제외시킵니다.
|
||||
#endif
|
||||
|
||||
// 아래 지정된 플랫폼보다 우선하는 플랫폼을 대상으로 하는 경우 다음 정의를 수정하십시오.
|
||||
// 다른 플랫폼에 사용되는 해당 값의 최신 정보는 MSDN을 참조하십시오.
|
||||
#ifndef WINVER // Windows 95 및 Windows NT 4 이후 버전에서만 기능을 사용할 수 있습니다.
|
||||
#define WINVER 0x0400 // Windows 98과 Windows 2000 이후 버전에 맞도록 적합한 값으로 변경해 주십시오.
|
||||
#endif
|
||||
|
||||
#ifndef _WIN32_WINNT // Windows NT 4 이후 버전에서만 기능을 사용할 수 있습니다.
|
||||
#define _WIN32_WINNT 0x0400 // Windows 98과 Windows 2000 이후 버전에 맞도록 적합한 값으로 변경해 주십시오.
|
||||
#endif
|
||||
|
||||
#ifndef _WIN32_WINDOWS // Windows 98 이후 버전에서만 기능을 사용할 수 있습니다.
|
||||
#define _WIN32_WINDOWS 0x0410 // Windows Me 이후 버전에 맞도록 적합한 값으로 변경해 주십시오.
|
||||
#endif
|
||||
|
||||
#ifndef _WIN32_IE // IE 4.0 이후 버전에서만 기능을 사용할 수 있습니다.
|
||||
#define _WIN32_IE 0x0400 // IE 5.0 이후 버전에 맞도록 적합한 값으로 변경해 주십시오.
|
||||
#endif
|
||||
|
||||
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 일부 CString 생성자는 명시적으로 선언됩니다.
|
||||
|
||||
// MFC의 공통 부분과 무시 가능한 경고 메시지에 대한 숨기기를 해제합니다.
|
||||
#define _AFX_ALL_WARNINGS
|
||||
|
||||
#include <afxwin.h> // MFC 핵심 및 표준 구성 요소
|
||||
#include <afxext.h> // MFC 익스텐션
|
||||
#include <afxdisp.h> // MFC 자동화 클래스
|
||||
|
||||
#include <afxdtctl.h> // Internet Explorer 4 공용 컨트롤에 대한 MFC 지원
|
||||
#ifndef _AFX_NO_AFXCMN_SUPPORT
|
||||
#include <afxcmn.h> // Windows 공용 컨트롤에 대한 MFC 지원
|
||||
#endif // _AFX_NO_AFXCMN_SUPPORT
|
||||
|
||||
|
||||
// User defined...
|
||||
#include <windowsx.h>
|
||||
#include <math.h>
|
||||
|
||||
#include <set>
|
||||
|
||||
using namespace std;
|
||||
|
||||
#include "MFC64bitFix.h"
|
||||
|
||||
#define _XTP_STATICLINK
|
||||
#include <XTToolkitPro.h>
|
||||
|
||||
#include "../CommLib/CommLib.h"
|
||||
|
||||
#include "Options.h"
|
||||
|
||||
/*
|
||||
#ifdef _DEBUG
|
||||
# pragma comment(lib, "SPCCommd.lib")
|
||||
#else
|
||||
# pragma comment(lib, "SPCComm.lib")
|
||||
#endif
|
||||
*/
|
||||
|
||||
#ifdef _OPENDISK
|
||||
#define APP_TITLE "Opendisk Console"
|
||||
#define INI_FILENAME "OD-Console.ini"
|
||||
#define CFG_FILENAME "OD-Console.xml"
|
||||
#else
|
||||
#define APP_TITLE "SP-Console"
|
||||
#define INI_FILENAME "SP-Console.ini"
|
||||
#define CFG_FILENAME "SP-Console.xml"
|
||||
#endif
|
||||
|
||||
#define VK_A 65
|
||||
#define VK_C 67
|
||||
#define VK_D 68
|
||||
#define VK_V 86
|
||||
#define VK_X 88
|
||||