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,245 @@
|
||||
// ConfigAdminDlg.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "ConfigAdminDlg.h"
|
||||
#include ".\configadmindlg.h"
|
||||
#include ".\RexAlgorithm.h"
|
||||
#include ".\RexInterface.h"
|
||||
#include <string>
|
||||
|
||||
// CConfigAdminDlg 대화 상자입니다.
|
||||
|
||||
IMPLEMENT_DYNAMIC(CConfigAdminDlg, CDialog)
|
||||
CConfigAdminDlg::CConfigAdminDlg(CWnd* pParent /*=NULL*/)
|
||||
: CConfigSubDlg(CConfigAdminDlg::IDD, pParent)
|
||||
{
|
||||
m_show=false;
|
||||
}
|
||||
|
||||
CConfigAdminDlg::~CConfigAdminDlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CConfigAdminDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Text(pDX, IDC_EDT_NAME1, m_name_01);
|
||||
DDX_Text(pDX, IDC_EDT_NAME2, m_name_02);
|
||||
DDX_Text(pDX, IDC_EDT_NAME3, m_name_03);
|
||||
|
||||
DDX_Text(pDX, IDC_EDT_PHONE1, m_phone_01);
|
||||
DDX_Text(pDX, IDC_EDT_PHONE2, m_phone_02);
|
||||
DDX_Text(pDX, IDC_EDT_PHONE3, m_phone_03);
|
||||
|
||||
DDX_Text(pDX, IDC_EDT_MAIL1, m_mail_01);
|
||||
DDX_Text(pDX, IDC_EDT_MAIL2, m_mail_02);
|
||||
DDX_Text(pDX, IDC_EDT_MAIL3, m_mail_03);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CConfigAdminDlg, CDialog)
|
||||
ON_EN_KILLFOCUS(IDC_EDT_NAME1, OnEnKillfocusEdtName1)
|
||||
ON_EN_KILLFOCUS(IDC_EDT_PHONE1, OnEnKillfocusEdtPhone1)
|
||||
ON_EN_KILLFOCUS(IDC_EDT_MAIL1, OnEnKillfocusEdtMail1)
|
||||
ON_EN_KILLFOCUS(IDC_EDT_NAME2, OnEnKillfocusEdtName2)
|
||||
ON_EN_KILLFOCUS(IDC_EDT_PHONE2, OnEnKillfocusEdtPhone2)
|
||||
ON_EN_KILLFOCUS(IDC_EDT_MAIL2, OnEnKillfocusEdtMail2)
|
||||
ON_EN_KILLFOCUS(IDC_EDT_NAME3, OnEnKillfocusEdtName3)
|
||||
ON_EN_KILLFOCUS(IDC_EDT_PHONE3, OnEnKillfocusEdtPhone3)
|
||||
ON_EN_KILLFOCUS(IDC_EDT_MAIL3, OnEnKillfocusEdtMail3)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CConfigAdminDlg 메시지 처리기입니다.
|
||||
|
||||
BOOL CConfigAdminDlg::OnInitDialog()
|
||||
{
|
||||
CConfigSubDlg::OnInitDialog();
|
||||
|
||||
// TODO: 여기에 추가 초기화 작업을 추가합니다.
|
||||
|
||||
m_name_01 = COptions::GetOption(OPTION_NAME_01);
|
||||
m_name_02 = COptions::GetOption(OPTION_NAME_02);
|
||||
m_name_03 = COptions::GetOption(OPTION_NAME_03);
|
||||
|
||||
m_phone_01 = COptions::GetOption(OPTION_PHONE_01);
|
||||
m_phone_02 = COptions::GetOption(OPTION_PHONE_02);
|
||||
m_phone_03 = COptions::GetOption(OPTION_PHONE_03);
|
||||
|
||||
m_mail_01 = COptions::GetOption(OPTION_MAIL_01);
|
||||
m_mail_02 = COptions::GetOption(OPTION_MAIL_02);
|
||||
m_mail_03 = COptions::GetOption(OPTION_MAIL_03);
|
||||
|
||||
UpdateData(FALSE);
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
|
||||
}
|
||||
|
||||
void CConfigAdminDlg::OnEnKillfocusEdtName1()
|
||||
{
|
||||
|
||||
if (m_show)
|
||||
{
|
||||
CheckName(IDC_EDT_NAME1);
|
||||
}
|
||||
}
|
||||
|
||||
void CConfigAdminDlg::OnEnKillfocusEdtPhone1()
|
||||
{
|
||||
if (m_show)
|
||||
{
|
||||
CheckPhone(IDC_EDT_PHONE1);
|
||||
}
|
||||
}
|
||||
|
||||
void CConfigAdminDlg::OnEnKillfocusEdtMail1()
|
||||
{
|
||||
if (m_show)
|
||||
{
|
||||
CheckMail(IDC_EDT_MAIL1);
|
||||
}
|
||||
}
|
||||
|
||||
void CConfigAdminDlg::OnEnKillfocusEdtName2()
|
||||
{
|
||||
if (m_show)
|
||||
{
|
||||
CheckName(IDC_EDT_NAME2);
|
||||
}
|
||||
}
|
||||
|
||||
void CConfigAdminDlg::OnEnKillfocusEdtPhone2()
|
||||
{
|
||||
if (m_show)
|
||||
{
|
||||
CheckPhone(IDC_EDT_PHONE2);
|
||||
}
|
||||
}
|
||||
|
||||
void CConfigAdminDlg::OnEnKillfocusEdtMail2()
|
||||
{
|
||||
if (m_show)
|
||||
{
|
||||
CheckMail(IDC_EDT_MAIL2);
|
||||
}
|
||||
}
|
||||
|
||||
void CConfigAdminDlg::OnEnKillfocusEdtName3()
|
||||
{
|
||||
if (m_show)
|
||||
{
|
||||
CheckName(IDC_EDT_NAME3);
|
||||
}
|
||||
}
|
||||
|
||||
void CConfigAdminDlg::OnEnKillfocusEdtPhone3()
|
||||
{
|
||||
if (m_show)
|
||||
{
|
||||
CheckPhone(IDC_EDT_PHONE3);
|
||||
}
|
||||
}
|
||||
|
||||
void CConfigAdminDlg::OnEnKillfocusEdtMail3()
|
||||
{
|
||||
if (m_show)
|
||||
{
|
||||
CheckMail(IDC_EDT_MAIL3);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool CConfigAdminDlg::CheckName(int id)
|
||||
{
|
||||
CString szValue;
|
||||
GetDlgItemText(id , szValue);
|
||||
|
||||
if (szValue.GetLength()>0)
|
||||
{
|
||||
if (szValue.GetLength()>10)
|
||||
{
|
||||
AfxMessageBox("관리자 이름은 한글5자(영문10자) 이하로 입력하십시오.");
|
||||
DeleteAndSetFocus(id);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CConfigAdminDlg::CheckPhone(int id)
|
||||
{
|
||||
CString szValue;
|
||||
GetDlgItemText(id , szValue);
|
||||
|
||||
if (szValue.GetLength()>0)
|
||||
{
|
||||
if (szValue.GetLength()>12)
|
||||
{
|
||||
AfxMessageBox("핸드폰 번호는 12자리 숫자로 입력하십시오.");
|
||||
DeleteAndSetFocus(id);
|
||||
return false;
|
||||
}
|
||||
|
||||
for (int i=0; i < szValue.GetLength(); i++)
|
||||
{
|
||||
if (FALSE==isdigit(szValue.GetAt(i)))
|
||||
{
|
||||
AfxMessageBox("핸드폰 번호는 12자리 숫자로 입력하십시오.");
|
||||
DeleteAndSetFocus(id);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CConfigAdminDlg::CheckMail(int id)
|
||||
{
|
||||
CString szValue;
|
||||
GetDlgItemText(id , szValue);
|
||||
|
||||
if (szValue.GetLength()>0)
|
||||
{
|
||||
if (szValue.GetLength()>50)
|
||||
{
|
||||
AfxMessageBox("관리자 메일주소는 영문50자 이하로 입력하십시오.");
|
||||
DeleteAndSetFocus(id);
|
||||
return false;
|
||||
}
|
||||
|
||||
REXI_Search rexs;
|
||||
REXI_DefErr err;
|
||||
err= rexs.SetRegexp("[a-zA-Z0-9]+@[a-zA-Z0-9]+.[a-zA-Z0-9]+");
|
||||
|
||||
int nMatchLen=0;
|
||||
bool bEosFound=false;
|
||||
bool bRightEmail=false;
|
||||
const char* pcsValue = szValue;
|
||||
|
||||
while(rexs.Find(pcsValue ,nMatchLen,bEosFound))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!bRightEmail)
|
||||
{
|
||||
AfxMessageBox("메일주소를 정확히 입력하십시오." );
|
||||
DeleteAndSetFocus(id);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void CConfigAdminDlg::DeleteAndSetFocus(int id)
|
||||
{
|
||||
UpdateData(FALSE);
|
||||
this->GetDlgItem(id)->SetFocus();
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
#pragma once
|
||||
#include "ConfigSubDlg.h"
|
||||
#include "afxwin.h"
|
||||
|
||||
|
||||
// CConfigAdminDlg 대화 상자입니다.
|
||||
|
||||
class CConfigAdminDlg : public CConfigSubDlg
|
||||
{
|
||||
DECLARE_DYNAMIC(CConfigAdminDlg)
|
||||
|
||||
public:
|
||||
CConfigAdminDlg(CWnd* pParent = NULL); // 표준 생성자입니다.
|
||||
virtual ~CConfigAdminDlg();
|
||||
|
||||
// 대화 상자 데이터입니다.
|
||||
enum { IDD = IDD_CONFIG_ADMIN };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
bool CheckName(int id);
|
||||
bool CheckPhone(int id);
|
||||
bool CheckMail(int id);
|
||||
void DeleteAndSetFocus(int id);
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
bool m_show;
|
||||
|
||||
CString m_name_01;
|
||||
CString m_name_02;
|
||||
CString m_name_03;
|
||||
|
||||
CString m_phone_01;
|
||||
CString m_phone_02;
|
||||
CString m_phone_03;
|
||||
|
||||
CString m_mail_01;
|
||||
CString m_mail_02;
|
||||
CString m_mail_03;
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnEnKillfocusEdtName1();
|
||||
afx_msg void OnEnKillfocusEdtPhone1();
|
||||
afx_msg void OnEnKillfocusEdtMail1();
|
||||
afx_msg void OnEnKillfocusEdtName2();
|
||||
afx_msg void OnEnKillfocusEdtPhone2();
|
||||
afx_msg void OnEnKillfocusEdtMail2();
|
||||
afx_msg void OnEnKillfocusEdtName3();
|
||||
afx_msg void OnEnKillfocusEdtPhone3();
|
||||
afx_msg void OnEnKillfocusEdtMail3();
|
||||
};
|
||||
|
||||
#pragma once
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
// 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)
|
||||
, m_bLogDir(FALSE)
|
||||
, m_bLogUpload(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);
|
||||
DDX_Check(pDX, IDC_LOG_DIR_CHK, m_bLogDir);
|
||||
DDX_Check(pDX, IDC_LOG_UPLOAD_CHK, m_bLogUpload);
|
||||
}
|
||||
|
||||
|
||||
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,35 @@
|
||||
#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;
|
||||
BOOL m_bLogDir;
|
||||
BOOL m_bLogUpload;
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
|
||||
public:
|
||||
virtual BOOL OnInitDialog();
|
||||
afx_msg void OnCboAfterexecSelchange();
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
@@ -0,0 +1,191 @@
|
||||
// ConfigDlg.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "ConfigDlg.h"
|
||||
|
||||
//#include "Options.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.InsertItem(3, "관리자정보");
|
||||
// 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_dlgCommon.m_bLogDir = COptions::GetOptionVal(OPTION_LOG_DIR);
|
||||
m_dlgCommon.m_bLogUpload = COptions::GetOptionVal(OPTION_LOG_UPLOAD);
|
||||
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, "프록시");
|
||||
AddPage(m_dlgAdmin, "관리자정보");
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
//관리자설정 페이지일때
|
||||
if (3==iPage)
|
||||
{
|
||||
CConfigAdminDlg* pAdminDlg = (CConfigAdminDlg*) (pcp->pdlg);
|
||||
pAdminDlg->m_show = true;
|
||||
}
|
||||
|
||||
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();
|
||||
m_dlgAdmin.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);
|
||||
|
||||
COptions::SetOption(OPTION_NAME_01, m_dlgAdmin.m_name_01);
|
||||
COptions::SetOption(OPTION_NAME_02, m_dlgAdmin.m_name_02);
|
||||
COptions::SetOption(OPTION_NAME_03, m_dlgAdmin.m_name_03);
|
||||
|
||||
COptions::SetOption(OPTION_PHONE_01, m_dlgAdmin.m_phone_01);
|
||||
COptions::SetOption(OPTION_PHONE_02, m_dlgAdmin.m_phone_02);
|
||||
COptions::SetOption(OPTION_PHONE_03, m_dlgAdmin.m_phone_03);
|
||||
|
||||
COptions::SetOption(OPTION_MAIL_01, m_dlgAdmin.m_mail_01);
|
||||
COptions::SetOption(OPTION_MAIL_02, m_dlgAdmin.m_mail_02);
|
||||
COptions::SetOption(OPTION_MAIL_03, m_dlgAdmin.m_mail_03);
|
||||
|
||||
COptions::SetOption(OPTION_LOG_DIR, m_dlgCommon.m_bLogDir);
|
||||
COptions::SetOption(OPTION_LOG_UPLOAD, m_dlgCommon.m_bLogUpload);
|
||||
|
||||
CDialog::OnOK();
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
#pragma once
|
||||
|
||||
#include "ConfigSubDlg.h"
|
||||
#include "ConfigCommonDlg.h"
|
||||
#include "ConfigUrlDlg.h"
|
||||
#include "ConfigProxyDlg.h"
|
||||
#include "ConfigAdminDlg.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;
|
||||
CConfigAdminDlg m_dlgAdmin;
|
||||
|
||||
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,144 @@
|
||||
// ConnectDlg.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "ConnectDlg.h"
|
||||
|
||||
#include "ConnectProxyDlg.h"
|
||||
#include ".\connectdlg.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)
|
||||
ON_BN_CLICKED(IDOK, OnBnClickedOk)
|
||||
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);
|
||||
HBITMAP hbmSrc = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_LOGO));
|
||||
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();
|
||||
}
|
||||
|
||||
void CConnectDlg::OnBnClickedOk()
|
||||
{
|
||||
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
|
||||
OnOK();
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
#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()
|
||||
afx_msg void OnBnClickedOk();
|
||||
};
|
||||
@@ -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,403 @@
|
||||
// SPConsole.cpp : 응용 프로그램에 대한 클래스 동작을 정의합니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "MainFrm.h"
|
||||
|
||||
#include "CustomControlSite.h"
|
||||
//#include "Options.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;
|
||||
|
||||
int 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;
|
||||
}
|
||||
|
||||
|
||||
BOOL CAboutDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// TODO: 여기에 추가 초기화 작업을 추가합니다.
|
||||
#ifdef _OPENDISK
|
||||
SetWindowText("Opendisk Console 정보");
|
||||
GetDlgItem(IDC_STATIC_ABOUT)->SetWindowText("Opendisk Console V1.0.1.0");
|
||||
#else
|
||||
SetWindowText("SP-Console 정보");
|
||||
GetDlgItem(IDC_STATIC_ABOUT)->SetWindowText("ICS SP-Console V1.0.1.0");
|
||||
#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,942 @@
|
||||
// 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)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
|
||||
#pragma code_page(949)
|
||||
#endif //_WIN32
|
||||
|
||||
#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.
|
||||
#if defined(APSTUDIO_INVOKED) || !defined(_OPENDISK)
|
||||
IDR_MAINFRAME ICON "res\\ConsoleApp.ico"
|
||||
#endif
|
||||
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"
|
||||
#if defined(APSTUDIO_INVOKED) || defined(_OPENDISK)
|
||||
#if defined(APSTUDIO_INVOKED)
|
||||
IDR_MAINFRAME$(_OPENDISK) ICON "res\\ConsoleApp_OD.ico"
|
||||
#else
|
||||
IDR_MAINFRAME ICON "res\\ConsoleApp_OD.ico"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Cursor
|
||||
//
|
||||
|
||||
IDC_HAND CURSOR "res\\Hand.cur"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 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_OVERWITE3
|
||||
MENUITEM "덮어쓰기", ID_CFG_OVERWITE1
|
||||
MENUITEM "이어받기", ID_CFG_OVERWITE2
|
||||
MENUITEM "건너뛰기", ID_CFG_OVERWITE4
|
||||
MENUITEM "업데이트", ID_CFG_UPDATE
|
||||
END
|
||||
MENUITEM "설정\tCtrl+O", ID_CFG_CONFIG
|
||||
END
|
||||
POPUP "도구(&T)"
|
||||
BEGIN
|
||||
MENUITEM "통계", ID_TOOL_STAT, INACTIVE
|
||||
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_COPY
|
||||
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 "Bandwidth 설정", ID_TREE_SETBANDWIDTH
|
||||
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_COPY
|
||||
MENUITEM "붙여넣기", ID_LISTFILE_PASTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "삭제", ID_LISTFILE_DELETE
|
||||
MENUITEM "이름 바꾸기", ID_LISTFILE_RENAME
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "배포현황조회", 32814
|
||||
MENUITEM "배포재요청", ID_LIST_DIST_AGAIN
|
||||
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
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Version
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 2,0,1,1
|
||||
PRODUCTVERSION 2,0,1,1
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x4L
|
||||
FILETYPE 0x1L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "041203b5"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "KT & Netomi Corporation."
|
||||
VALUE "FileDescription", "ICS Client-side Software"
|
||||
VALUE "FileVersion", "2.0.1.1"
|
||||
VALUE "InternalName", "ConsoleApp.exe"
|
||||
VALUE "LegalCopyright", "KT & Netomi Corporation. All rights reserved."
|
||||
VALUE "OriginalFilename", "ConsoleApp.exe"
|
||||
VALUE "ProductName", "ICS"
|
||||
VALUE "ProductVersion", "2.0.1.1"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x412, 949
|
||||
END
|
||||
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_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
|
||||
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
|
||||
|
||||
IDD_VOLUME_DIST_INFO, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 223
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 122
|
||||
END
|
||||
|
||||
IDD_DISTINFODLG, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 179
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 88
|
||||
END
|
||||
|
||||
IDD_NOTICETRANS, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 179
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 88
|
||||
END
|
||||
|
||||
IDD_SEND_TRANSINFO, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 184
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 60
|
||||
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 "ICS 접속"
|
||||
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
|
||||
CONTROL "디렉토리 생성시 로그 남김",IDC_LOG_DIR_CHK,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,10,72,110,10
|
||||
CONTROL "파일 업로드시 로그 남김",IDC_LOG_UPLOAD_CHK,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,9,87,102,10
|
||||
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, 189, 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 IDR_MAINFRAME,IDC_STATIC,8,8,20,20
|
||||
LTEXT "ICS SP-Console Version 1.0.0.4",IDC_STATIC_ABOUT,35,7,
|
||||
150,8,SS_NOPREFIX
|
||||
LTEXT "Copyright (C) KT Corporation All rights reserved",
|
||||
IDC_STATIC,35,20,150,8
|
||||
DEFPUSHBUTTON "확인",IDOK,147,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
|
||||
|
||||
IDD_WEB_DLG DIALOGEX 0, 0, 295, 263
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
EXSTYLE WS_EX_APPWINDOW
|
||||
CAPTION "Dialog"
|
||||
FONT 9, "굴림", 0, 0, 0x0
|
||||
BEGIN
|
||||
CONTROL "",IDC_EXPLORER1,"{8856F961-340A-11D0-A96B-00C04FD705A2}",
|
||||
WS_TABSTOP,0,0,296,264
|
||||
END
|
||||
|
||||
IDD_VOLUME_DIST_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
|
||||
CONTROL "",-1,"Static",SS_ETCHEDHORZ,7,33,216,1
|
||||
LTEXT "파일 갯수 :",IDC_STC_USETITLE,7,41,40,8
|
||||
LTEXT "배포 중 :",IDC_STC_FREETITLE,7,71,32,8
|
||||
RTEXT "999,999",IDC_FILE_CNT,111,41,98,8
|
||||
RTEXT "개",IDC_STC_USESPACET,210,57,9,8
|
||||
CONTROL "",-1,"Static",SS_ETCHEDHORZ,7,103,216,1
|
||||
EDITTEXT IDC_DIST_PATH,37,12,186,12,ES_AUTOHSCROLL | ES_READONLY
|
||||
LTEXT "배포 완료 :",IDC_STC_USETITLE2,7,56,40,8
|
||||
RTEXT "999,999",IDC_DIST_COMPLETE,111,56,98,8
|
||||
RTEXT "개",IDC_STC_USESPACET2,210,72,9,8
|
||||
LTEXT "배포 실패 :",IDC_STC_USETITLE3,7,86,40,8
|
||||
RTEXT "999,999",IDC_DIST_NOW,111,71,98,8
|
||||
RTEXT "999,999",IDC_DIST_FAIL,111,86,98,8
|
||||
RTEXT "개",IDC_STC_USESPACET3,210,42,9,8
|
||||
RTEXT "개",IDC_STC_USESPACET4,210,87,9,8
|
||||
END
|
||||
|
||||
IDD_DISTINFODLG DIALOG 0, 0, 186, 95
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "대화 상자"
|
||||
FONT 9, "MS Shell Dlg"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "확인",IDOK,129,7,50,16
|
||||
PUSHBUTTON "취소",IDCANCEL,129,26,50,16
|
||||
END
|
||||
|
||||
IDD_CONFIG_ADMIN 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_NAME1,9,29,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "이름",IDC_STATIC,16,16,17,8
|
||||
EDITTEXT IDC_EDT_PHONE1,44,29,51,12,ES_AUTOHSCROLL
|
||||
EDITTEXT IDC_EDT_MAIL1,98,29,87,12,ES_AUTOHSCROLL
|
||||
LTEXT "휴대전화",IDC_STATIC,51,16,33,8
|
||||
EDITTEXT IDC_EDT_NAME2,9,46,32,12,ES_AUTOHSCROLL
|
||||
EDITTEXT IDC_EDT_PHONE2,44,46,51,12,ES_AUTOHSCROLL
|
||||
EDITTEXT IDC_EDT_MAIL2,98,46,87,12,ES_AUTOHSCROLL
|
||||
EDITTEXT IDC_EDT_NAME3,9,64,32,12,ES_AUTOHSCROLL
|
||||
EDITTEXT IDC_EDT_PHONE3,44,64,51,12,ES_AUTOHSCROLL
|
||||
EDITTEXT IDC_EDT_MAIL3,98,64,87,12,ES_AUTOHSCROLL
|
||||
LTEXT "메일주소",IDC_STATIC,116,16,33,8
|
||||
END
|
||||
|
||||
IDD_NOTICETRANS DIALOG 0, 0, 186, 95
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "대화 상자"
|
||||
FONT 9, "MS Shell Dlg"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "확인",IDOK,129,7,50,16
|
||||
PUSHBUTTON "취소",IDCANCEL,129,26,50,16
|
||||
END
|
||||
|
||||
IDD_SEND_TRANSINFO DIALOGEX 0, 0, 191, 67
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_SYSMENU |
|
||||
WS_THICKFRAME
|
||||
FONT 9, "MS Shell Dlg", 0, 0, 0x0
|
||||
BEGIN
|
||||
PUSHBUTTON "취소",IDCANCEL,71,44,50,16
|
||||
CONTROL "",IDC_PROGRESS1,"msctls_progress32",WS_BORDER,14,28,161,
|
||||
12
|
||||
LTEXT "배포 요청 중입니다..",IDC_NOTICE_MSGBOX,18,7,153,18
|
||||
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
|
||||
|
||||
IDD_WEB_DLG DLGINIT
|
||||
BEGIN
|
||||
IDC_EXPLORER1, 0x376, 160, 0
|
||||
0x0000, 0x0000, 0x004c, 0x0000, 0x3589, 0x0000, 0x28ee, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x004c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001,
|
||||
0x0000, 0xd0e0, 0x0057, 0x3573, 0x11cf, 0x69ae, 0x0008, 0x2e2b, 0x6212,
|
||||
0x0008, 0x0000, 0x0000, 0x0000, 0x004c, 0x0000, 0x1401, 0x0002, 0x0000,
|
||||
0x0000, 0x00c0, 0x0000, 0x0000, 0x4600, 0x0080, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000,
|
||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
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"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 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"
|
||||
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,92 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 8.00
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConsoleApp", "ConsoleApp.vcproj", "{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0} = {1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607} = {8CF33995-4DDD-492E-9533-F73F82AEC607}
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C} = {FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CommLib", "..\CommLib\CommLib.vcproj", "{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConsoleTransfer", "..\ConsoleTransfer(DN)\ConsoleTransfer.vcproj", "{8CF33995-4DDD-492E-9533-F73F82AEC607}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConsoleUpdater", "..\ConsoleUpdater(DN)\ConsoleUpdater.vcproj", "{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfiguration) = preSolution
|
||||
Debug = Debug
|
||||
Debug_Opendisk = Debug_Opendisk
|
||||
Release = Release
|
||||
Release_Opendisk = Release_Opendisk
|
||||
Unicode Debug = Unicode Debug
|
||||
Unicode Release = Unicode Release
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectDependencies) = postSolution
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfiguration) = postSolution
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Debug.ActiveCfg = Debug|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Debug.Build.0 = Debug|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Debug_Opendisk.ActiveCfg = Debug_Opendisk|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Debug_Opendisk.Build.0 = Debug_Opendisk|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Release.ActiveCfg = Release|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Release.Build.0 = Release|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Release_Opendisk.ActiveCfg = Release_Opendisk|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Release_Opendisk.Build.0 = Release_Opendisk|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Unicode Debug.ActiveCfg = Debug|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Unicode Debug.Build.0 = Debug|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Unicode Release.ActiveCfg = Release|Win32
|
||||
{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}.Unicode Release.Build.0 = Release|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug.ActiveCfg = Debug|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug.Build.0 = Debug|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug_Opendisk.ActiveCfg = Debug_Opendisk|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Debug_Opendisk.Build.0 = Debug_Opendisk|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release.ActiveCfg = Release|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release.Build.0 = Release|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release_Opendisk.ActiveCfg = Release_Opendisk|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Release_Opendisk.Build.0 = Release_Opendisk|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Unicode Debug.ActiveCfg = Debug|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Unicode Debug.Build.0 = Debug|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Unicode Release.ActiveCfg = Release|Win32
|
||||
{FD6F8A99-22B0-45FA-BAB6-1CC3DD5AAE2C}.Unicode Release.Build.0 = Release|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug.ActiveCfg = Debug|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug.Build.0 = Debug|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug_Opendisk.ActiveCfg = Debug_Opendisk|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Debug_Opendisk.Build.0 = Debug_Opendisk|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release.ActiveCfg = Release|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release.Build.0 = Release|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release_Opendisk.ActiveCfg = Release_Opendisk|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Release_Opendisk.Build.0 = Release_Opendisk|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Unicode Debug.ActiveCfg = Debug|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Unicode Debug.Build.0 = Debug|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Unicode Release.ActiveCfg = Release|Win32
|
||||
{8CF33995-4DDD-492E-9533-F73F82AEC607}.Unicode Release.Build.0 = Release|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Debug.ActiveCfg = Debug|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Debug.Build.0 = Debug|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Debug_Opendisk.ActiveCfg = Debug_Opendisk|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Debug_Opendisk.Build.0 = Debug_Opendisk|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Release.ActiveCfg = Release|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Release.Build.0 = Release|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Release_Opendisk.ActiveCfg = Release_Opendisk|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Release_Opendisk.Build.0 = Release_Opendisk|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Unicode Debug.ActiveCfg = Debug|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Unicode Debug.Build.0 = Debug|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Unicode Release.ActiveCfg = Release|Win32
|
||||
{1CD0355A-1D0F-48E1-9F3D-3A2C067526E0}.Unicode Release.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionItems) = postSolution
|
||||
readme.txt = readme.txt
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityAddIns) = postSolution
|
||||
EndGlobalSection
|
||||
GlobalSection(DPCodeReviewSolutionGUID) = preSolution
|
||||
DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -0,0 +1,703 @@
|
||||
<?xml version="1.0" encoding="ks_c_5601-1987"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="ConsoleApp"
|
||||
ProjectGUID="{A240CFA8-C2EB-4093-9BE5-85B1934E1E90}"
|
||||
Keyword="MFCProj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="Debug"
|
||||
IntermediateDirectory="Debug"
|
||||
ConfigurationType="1"
|
||||
UseOfMFC="2"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../Common/PTxControl;../Common;"../Common/neon-0.25.4""
|
||||
PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
UsePrecompiledHeader="3"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="4"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="../_lib/Debug/SPCComm.lib"
|
||||
OutputFile="../_bin/SPConsole/Debug(DN)/SP-Console.exe"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
MkTypLibCompatible="FALSE"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
Culture="1042"
|
||||
AdditionalIncludeDirectories="$(IntDir)"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="Release"
|
||||
IntermediateDirectory="Release"
|
||||
ConfigurationType="1"
|
||||
UseOfMFC="2"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../Common/PTxControl;../Common;"../Common/neon-0.25.4""
|
||||
PreprocessorDefinitions="WIN32;_WINDOWS;NDEBUG"
|
||||
MinimalRebuild="FALSE"
|
||||
RuntimeLibrary="2"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
UsePrecompiledHeader="3"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="../_lib/Release/SPCComm.lib"
|
||||
OutputFile="../_bin/SPConsole/Release(DN)/SP-Console.exe"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
MkTypLibCompatible="FALSE"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
Culture="1042"
|
||||
AdditionalIncludeDirectories="$(IntDir)"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug_Opendisk|Win32"
|
||||
OutputDirectory="$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
UseOfMFC="2"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../Common/PTxControl;../Common"
|
||||
PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG;_OPENDISK"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
UsePrecompiledHeader="3"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="4"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="../_lib/Debug/SPCComm.lib"
|
||||
OutputFile="../_bin/SPConsole/Debug_OD/OD-Console.exe"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
MkTypLibCompatible="FALSE"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
Culture="1042"
|
||||
AdditionalIncludeDirectories="$(IntDir)"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release_Opendisk|Win32"
|
||||
OutputDirectory="$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
UseOfMFC="2"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../Common/PTxControl;../common"
|
||||
PreprocessorDefinitions="WIN32;_WINDOWS;NDEBUG;_OPENDISK"
|
||||
MinimalRebuild="FALSE"
|
||||
RuntimeLibrary="2"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
UsePrecompiledHeader="3"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="../_lib/Release/SPCComm.lib"
|
||||
OutputFile="../_bin/SPConsole/Release_OD/OD-Console.exe"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
MkTypLibCompatible="FALSE"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
Culture="1042"
|
||||
AdditionalIncludeDirectories="$(IntDir)"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="소스 파일"
|
||||
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
|
||||
<File
|
||||
RelativePath=".\BandwidthDlg.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ConfigAdminDlg.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ConfigCommonDlg.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ConfigDlg.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ConfigProxyDlg.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\ConfigSubDlg.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ConfigUrlDlg.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ConnectDlg.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ConnectProxyDlg.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ConsoleApp.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\Crypt.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\CustomControlSite.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\DistInfoDlg.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\explorer1.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\GdStatic.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\HCButton.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\ImpIDispatch.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\LocalComboBox.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\LocalListCtrl.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\LocalTreeCtrl.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\LocalView.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\MainFrm.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\MarkupSTL.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\MFC64bitFix.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\NoticeTrans.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Options.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\PictureEx.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\PTxControl\ptxshcombo.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\PTxControl\ptxshlist.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\PTxControl\ptxshtree.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\RegUtil.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\RemoteComboBox.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\RemoteListCtrl.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\RemoteTreeCtrl.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\RemoteView.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\RexAlgorithm.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\RexInterface.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\RLDropTarget.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\RTDropTarget.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\SocketUtil.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\stdafx.cpp">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="1"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="1"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug_Opendisk|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="1"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release_Opendisk|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="1"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\TextProgressCtrl.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\VolumeInfo1Dlg.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\VolumeInfoDlg.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\WaitMessageDlg.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\WebBrowser2.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\WebDlg.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\WebUtil.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="헤더 파일"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
|
||||
<File
|
||||
RelativePath=".\BandwidthDlg.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ConfigAdminDlg.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ConfigCommonDlg.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ConfigDlg.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ConfigProxyDlg.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\ConfigSubDlg.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ConfigUrlDlg.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ConnectDlg.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ConnectProxyDlg.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ConsoleApp.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\Crypt.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\CustomControlSite.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\DistInfoDlg.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\explorer1.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\GdStatic.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\HCButton.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\ImpIDispatch.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\LocalComboBox.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\LocalListCtrl.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\LocalTreeCtrl.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\LocalView.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\MainFrm.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\MarkupSTL.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\MFC64bitFix.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\NoticeTrans.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Options.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\PictureEx.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\PTxControl\PTxSCP.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\PTxControl\ptxshcombo.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\PTxControl\ptxshlist.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\PTxControl\ptxshtree.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\Common\RegUtil.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\RegUtil.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\RemoteComboBox.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\RemoteListCtrl.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\RemoteTreeCtrl.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\RemoteView.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Resource.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\RexAlgorithm.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\RexInterface.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\RLDropTarget.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\RTDropTarget.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\SocketUtil.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\stdafx.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Struct.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\TextProgressCtrl.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\VolumeInfo1Dlg.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\VolumeInfoDlg.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\WaitMessageDlg.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\Common\WebBrowser2.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\WebDlg.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\WebUtil.h">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="리소스 파일"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
|
||||
<File
|
||||
RelativePath=".\res\Advert.gif">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\AnonyFolder.ico">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\bitmap1.bmp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\btnDelete.bmp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\btnDownload.bmp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\btnGo.bmp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\btnListstyle.bmp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\btnNewFolder.bmp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\btnToolbar1.bmp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\btnToolbar2.bmp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\btnUp.bmp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\btnUpload.bmp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\capLocal.bmp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\capRemote.bmp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\ConsoleApp.ico">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ConsoleApp.rc">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\ConsoleApp.rc2">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\ConsoleApp_OD.ico">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\Down.ico">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\Empty.ico">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\Hand.cur">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\icon1.ico">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\Logo.bmp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\Logo_old.bmp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\mCopy.bmp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\mCut.bmp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\MenubarEx24x.bmp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\mFolder.bmp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\mPaste.bmp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\SiteManager.bmp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\SortAsc.ico">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\SortDesc.ico">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\SortNone.ico">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\systemhosting_logo.bmp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\Toolbar.bmp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\ToolbarEx24x.bmp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\Up.ico">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\res\Wait.gif">
|
||||
</File>
|
||||
</Filter>
|
||||
<File
|
||||
RelativePath=".\res\ConsoleApp.manifest">
|
||||
</File>
|
||||
</Files>
|
||||
<Globals>
|
||||
<Global
|
||||
Name="RESOURCE_FILE"
|
||||
Value="ConsoleApp.rc"/>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
@@ -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,193 @@
|
||||
// DistInfoDlg.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "DistInfoDlg.h"
|
||||
#include ".\distinfodlg.h"
|
||||
#include "../ConsoleTransfer(DN)/NoticeStruct.h"
|
||||
#include "../CommLib/CommLib.h"
|
||||
|
||||
// CDistInfoDlg 대화 상자입니다.
|
||||
|
||||
IMPLEMENT_DYNAMIC(CDistInfoDlg, CDialog)
|
||||
CDistInfoDlg::CDistInfoDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CDistInfoDlg::IDD, pParent)
|
||||
, m_dist_path(_T(""))
|
||||
, m_file_cnt(_T(""))
|
||||
, m_dist_complete(_T(""))
|
||||
, m_dist_now(_T(""))
|
||||
, m_dist_fail(_T(""))
|
||||
{
|
||||
}
|
||||
|
||||
CDistInfoDlg::~CDistInfoDlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CDistInfoDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Text(pDX, IDC_DIST_PATH, m_dist_path);
|
||||
DDX_Text(pDX, IDC_FILE_CNT, m_file_cnt);
|
||||
DDX_Text(pDX, IDC_DIST_COMPLETE, m_dist_complete);
|
||||
DDX_Text(pDX, IDC_DIST_NOW, m_dist_now);
|
||||
DDX_Text(pDX, IDC_DIST_FAIL, m_dist_fail);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CDistInfoDlg, CDialog)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CDistInfoDlg 메시지 처리기입니다.
|
||||
|
||||
BOOL CDistInfoDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// TODO: 여기에 추가 초기화 작업을 추가합니다.
|
||||
|
||||
GetDistInfo();
|
||||
UpdateData(FALSE);
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
|
||||
}
|
||||
|
||||
|
||||
void CDistInfoDlg::GetDistInfo(void)
|
||||
{
|
||||
|
||||
tsvc_req_header_t tsvc_req_header;
|
||||
tsvc_auth_info_t auth_req_body;
|
||||
tsvc_ddi_req_body_t ddi_req_body;
|
||||
tsvc_rsp_header_t *tsvc_rsp_header_ptr;
|
||||
tsvc_ddi_rsp_body_t *ddi_rsp_body_ptr;
|
||||
char recv_buffer[8196];
|
||||
int result_code;
|
||||
CString ip;
|
||||
|
||||
// get auth string /////////////////////////
|
||||
CString auth_str;
|
||||
auth_str = this->m_cp + "@" + this->m_user;
|
||||
///////////////////////////////////////////
|
||||
|
||||
SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
|
||||
if (sock == INVALID_SOCKET) {
|
||||
goto EXIT_FUNCTION;
|
||||
}
|
||||
|
||||
bool bRet = false;
|
||||
DWORD dwWritten;
|
||||
char s[1024];
|
||||
|
||||
sockaddr_in sa;
|
||||
sa.sin_family = AF_INET;
|
||||
|
||||
ip = m_sutil.get_first_rcts(this->m_RCTSAddress);
|
||||
if (ip.GetLength()>0)
|
||||
sa.sin_addr.s_addr = m_sutil.conv_addr(ip.GetString());
|
||||
else
|
||||
goto EXIT_FUNCTION;
|
||||
|
||||
sa.sin_port = htons(RCTS_NOTICE_PORT);
|
||||
|
||||
connect(sock, (SOCKADDR*)&sa, sizeof(sa));
|
||||
|
||||
|
||||
tsvc_req_header.op_num_w = ::htons(OP_NUM_AUTH);
|
||||
tsvc_req_header.op_seq_w = ::htons(OP_SEQ_REQ);
|
||||
|
||||
::sprintf(auth_req_body.ua_str, auth_str);
|
||||
::sprintf(auth_req_body.up_str, this->m_passwd);
|
||||
|
||||
m_sutil._sh_send(sock, (char*)&tsvc_req_header, sizeof(tsvc_req_header));
|
||||
m_sutil._sh_send(sock, (char*)&auth_req_body, sizeof(auth_req_body));
|
||||
|
||||
memset(recv_buffer , 0x00 , sizeof(recv_buffer));
|
||||
if (m_sutil._rtxTimer(5 , sock) < 0)
|
||||
goto EXIT_FUNCTION;
|
||||
m_sutil._sh_recv(sock, (char*)&recv_buffer, sizeof(recv_buffer));
|
||||
|
||||
tsvc_rsp_header_ptr = reinterpret_cast<tsvc_rsp_header_t *>(&recv_buffer);
|
||||
result_code = ntohs(tsvc_rsp_header_ptr->op_result_code_w);
|
||||
|
||||
// 인증
|
||||
if (RSP_CODE_AUTH_SUCCESS==result_code)
|
||||
{
|
||||
// SetNoticeStep(200);
|
||||
}
|
||||
else
|
||||
{
|
||||
// SetNoticeStep(201);
|
||||
goto EXIT_FUNCTION;
|
||||
}
|
||||
|
||||
tsvc_req_header.op_num_w = ::htons(OP_NUM_DDI);
|
||||
tsvc_req_header.op_seq_w = ::htons(OP_SEQ_REQ);
|
||||
|
||||
::sprintf(ddi_req_body.uri_str, "%s", this->m_dist_path);
|
||||
|
||||
m_sutil._sh_send(sock,(char *)&tsvc_req_header, sizeof(tsvc_req_header));
|
||||
m_sutil._sh_send(sock,(char *)&ddi_req_body, sizeof(ddi_req_body));
|
||||
|
||||
|
||||
memset(recv_buffer , 0x00 , sizeof(recv_buffer));
|
||||
if (m_sutil._rtxTimer(5 , sock) < 0)
|
||||
goto EXIT_FUNCTION;
|
||||
|
||||
m_sutil._sh_recv(sock, (char*)&recv_buffer, sizeof(tsvc_rsp_header_t));
|
||||
result_code = ntohs(tsvc_rsp_header_ptr->op_result_code_w);
|
||||
|
||||
// 배포정보
|
||||
if (RSP_CODE_DIST_SUCCESS==result_code)
|
||||
{
|
||||
// SetNoticeStep(200);
|
||||
}
|
||||
else
|
||||
{
|
||||
// SetNoticeStep(201);
|
||||
goto EXIT_FUNCTION;
|
||||
}
|
||||
|
||||
memset(&recv_buffer , 0x00 , sizeof(recv_buffer));
|
||||
if (m_sutil._rtxTimer(5 , sock) < 0)
|
||||
goto EXIT_FUNCTION;
|
||||
|
||||
m_sutil._sh_recv(sock, (char*)&recv_buffer, sizeof(tsvc_ddi_rsp_body_t));
|
||||
ddi_rsp_body_ptr = reinterpret_cast<tsvc_ddi_rsp_body_t *>(&recv_buffer);
|
||||
|
||||
char t[128];
|
||||
sprintf(t , "%d" , ntohs(ddi_rsp_body_ptr->file_cnt));
|
||||
m_file_cnt = t;
|
||||
|
||||
sprintf(t , "%d" , ntohs(ddi_rsp_body_ptr->dist_fail));
|
||||
m_dist_fail = t;
|
||||
|
||||
sprintf(t , "%d" , ntohs(ddi_rsp_body_ptr->dist_now));
|
||||
m_dist_now = t;
|
||||
|
||||
sprintf(t , "%d" , ntohs(ddi_rsp_body_ptr->dist_complete));
|
||||
m_dist_complete = t;
|
||||
|
||||
//배포
|
||||
if (RSP_CODE_DIST_SUCCESS==result_code)
|
||||
{
|
||||
// SetNoticeStep(400);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
// SetNoticeStep(401);
|
||||
goto EXIT_FUNCTION;
|
||||
}
|
||||
|
||||
EXIT_FUNCTION:
|
||||
|
||||
if (sock != INVALID_SOCKET)
|
||||
closesocket(sock);
|
||||
|
||||
// PostMessage(WM_CLOSE);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
#pragma once
|
||||
#include "SocketUtil.h"
|
||||
|
||||
|
||||
// CDistInfoDlg 대화 상자입니다.
|
||||
|
||||
class CDistInfoDlg : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CDistInfoDlg)
|
||||
|
||||
public:
|
||||
CDistInfoDlg(CWnd* pParent = NULL); // 표준 생성자입니다.
|
||||
virtual ~CDistInfoDlg();
|
||||
|
||||
void GetDistInfo(void);
|
||||
|
||||
// 대화 상자 데이터입니다.
|
||||
enum { IDD = IDD_VOLUME_DIST_INFO };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
CSocketUtil m_sutil;
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
|
||||
public:
|
||||
CString m_cp;
|
||||
CString m_user;
|
||||
CString m_passwd;
|
||||
CString m_dist_path;
|
||||
CString m_RCTSAddress;
|
||||
CString m_file_cnt;
|
||||
CString m_dist_complete;
|
||||
CString m_dist_now;
|
||||
CString m_dist_fail;
|
||||
virtual BOOL OnInitDialog();
|
||||
};
|
||||
@@ -0,0 +1,32 @@
|
||||
// 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()
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CHCButton 메시지 처리기입니다.
|
||||
void CHCButton::OnMouseMove(UINT nFlags, CPoint point)
|
||||
{
|
||||
::SetCursor(AfxGetApp()->LoadCursor(IDC_HAND));
|
||||
|
||||
CBitmapButton::OnMouseMove(nFlags, point);
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
#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);
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
// 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()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CLocalComboBox, CComboBox)
|
||||
//{{AFX_MSG_MAP(CLocalComboBox)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CLocalComboBox message handlers
|
||||
@@ -0,0 +1,41 @@
|
||||
// LocalComboBox.h : header file
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "ptxshcombo.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CLocalComboBox window
|
||||
|
||||
class CLocalComboBox : public CPTxShCombo
|
||||
{
|
||||
// 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,146 @@
|
||||
// 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()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CLocalListCtrl, CListCtrl)
|
||||
//{{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;
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
BOOL CLocalListCtrl::PasteClipboard(CString sFolder)
|
||||
{
|
||||
CMainFrame* pmf = (CMainFrame*)AfxGetMainWnd();
|
||||
|
||||
CLocalTreeCtrl* ptree = &((CLocalView*)GetParent())->m_tree;
|
||||
|
||||
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;
|
||||
|
||||
return pmf->Download(false);
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
// LocalListCtrl.h : header file
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "ptxshlist.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CLocalListCtrl window
|
||||
|
||||
class CLocalListCtrl : public CPTxShList
|
||||
{
|
||||
// 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);
|
||||
|
||||
protected:
|
||||
//{{AFX_MSG(CLocalListCtrl)
|
||||
//}}AFX_MSG
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
|
||||
public:
|
||||
};
|
||||
@@ -0,0 +1,125 @@
|
||||
// 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()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CLocalTreeCtrl, CTreeCtrl)
|
||||
//{{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()
|
||||
{
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
BOOL CLocalTreeCtrl::PasteClipboard()
|
||||
{
|
||||
CMainFrame* pmf = (CMainFrame*)AfxGetMainWnd();
|
||||
|
||||
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;
|
||||
|
||||
return pmf->Download(false);
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
// LocalTreeCtrl.h : header file
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "ptxshtree.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CLocalTreeCtrl window
|
||||
|
||||
class CLocalTreeCtrl : public CPTxShTree
|
||||
{
|
||||
// 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);
|
||||
|
||||
protected:
|
||||
//{{AFX_MSG(CLocalTreeCtrl)
|
||||
//}}AFX_MSG
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
};
|
||||
@@ -0,0 +1,168 @@
|
||||
#pragma once
|
||||
|
||||
#include "LocalComboBox.h"
|
||||
#include "LocalTreeCtrl.h"
|
||||
#include "LocalListCtrl.h"
|
||||
|
||||
#include "PTxSCP.h"
|
||||
#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;
|
||||
IPTxShListItem* m_pitemPrev;
|
||||
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;
|
||||
|
||||
IPTxShTreeNode* m_pnodeRoot;
|
||||
|
||||
bool m_bUpdating;
|
||||
|
||||
protected:
|
||||
void RedrawControl(int cx, int cy);
|
||||
|
||||
BOOL SetPath(CString sFolder);
|
||||
|
||||
void InvertTracker(int x);
|
||||
|
||||
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);
|
||||
|
||||
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,37 @@
|
||||
// LogWinThread.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "LogWinThread.h"
|
||||
|
||||
|
||||
// CLogWinThread
|
||||
|
||||
IMPLEMENT_DYNCREATE(CLogWinThread, CWinThread)
|
||||
|
||||
CLogWinThread::CLogWinThread()
|
||||
{
|
||||
}
|
||||
|
||||
CLogWinThread::~CLogWinThread()
|
||||
{
|
||||
}
|
||||
|
||||
BOOL CLogWinThread::InitInstance()
|
||||
{
|
||||
// TODO: 여기에서 각 스레드에 대한 초기화를 수행합니다.
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int CLogWinThread::ExitInstance()
|
||||
{
|
||||
// TODO: 여기에서 각 스레드에 대한 정리를 수행합니다.
|
||||
return CWinThread::ExitInstance();
|
||||
}
|
||||
|
||||
BEGIN_MESSAGE_MAP(CLogWinThread, CWinThread)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CLogWinThread 메시지 처리기입니다.
|
||||
@@ -0,0 +1,23 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
|
||||
// CLogWinThread
|
||||
|
||||
class CLogWinThread : public CWinThread
|
||||
{
|
||||
DECLARE_DYNCREATE(CLogWinThread)
|
||||
|
||||
protected:
|
||||
CLogWinThread(); // 동적 만들기에 사용되는 protected 생성자입니다.
|
||||
virtual ~CLogWinThread();
|
||||
|
||||
public:
|
||||
virtual BOOL InitInstance();
|
||||
virtual int ExitInstance();
|
||||
|
||||
protected:
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,253 @@
|
||||
// MainFrm.h : CMainFrame 클래스의 인터페이스
|
||||
//
|
||||
|
||||
#pragma once
|
||||
#include "WebUtil.h"
|
||||
|
||||
|
||||
#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 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, char* bFolder , 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;
|
||||
CWebUtil m_webutil;
|
||||
|
||||
int m_passwordErrCnt;
|
||||
|
||||
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 OnCfgUpdate();
|
||||
afx_msg void OnUpdateCfgUpdate(CCmdUI *pCmdUI);
|
||||
afx_msg void OnCfgConfig();
|
||||
|
||||
afx_msg LRESULT OnTransferDlgClose(WPARAM, LPARAM);
|
||||
afx_msg LRESULT OnUpdateControlStatus(WPARAM wParam, LPARAM lParam);
|
||||
|
||||
afx_msg BOOL OnCopyData(CWnd* pWnd , COPYDATASTRUCT* pCodyDataStruct);
|
||||
|
||||
int OnCreateControl(LPCREATECONTROLSTRUCT lpCreateControl);
|
||||
BOOL GetNewGUID(CString& strGUID);
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
protected:
|
||||
void opt_file_log(CString , CString , char , char);
|
||||
};
|
||||
|
||||
#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
|
||||
|
||||
#define PASSWORD_ERR_ADMIT_CNT 3
|
||||
#define PASSWORD_ERR_WAIT_SEC 30
|
||||
@@ -0,0 +1,560 @@
|
||||
// NoticeTrans.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "NoticeTrans.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "../CommLib/CommLib.h"
|
||||
#include "options.h"
|
||||
|
||||
// CNoticeTrans 대화 상자입니다.
|
||||
|
||||
IMPLEMENT_DYNAMIC(CNoticeTrans, CDialog)
|
||||
CNoticeTrans::CNoticeTrans(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CNoticeTrans::IDD, pParent)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
CNoticeTrans::CNoticeTrans(PTRANPARAM_STRUCT ptp, CString szTargetPath , CWnd* pParent /*=NULL*/ )
|
||||
: CDialog(CNoticeTrans::IDD, pParent)
|
||||
{
|
||||
|
||||
m_szTargetPath = szTargetPath;
|
||||
m_NoticeLastFileTrans = false;
|
||||
// m_szTargetPath.Replace("'", "\'");
|
||||
|
||||
m_ptp = ptp;
|
||||
}
|
||||
|
||||
CNoticeTrans::CNoticeTrans(PTRANPARAM_STRUCT ptp, int nNoticeLastFileTrans , CWnd* pParent /*=NULL*/ )
|
||||
: CDialog(CNoticeTrans::IDD, pParent)
|
||||
{
|
||||
|
||||
m_szTargetPath = "";
|
||||
m_NoticeLastFileTrans = true;
|
||||
|
||||
m_ptp = ptp;
|
||||
}
|
||||
|
||||
CNoticeTrans::CNoticeTrans(CArray<tsvc_da_contents_t*>* pad, CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CNoticeTrans::IDD, pParent)
|
||||
{
|
||||
m_NoticeLastFileTrans = false;
|
||||
m_ptp = NULL;
|
||||
#if 0
|
||||
for(int i=0; i<pad->GetCount(); i++)
|
||||
AfxMessageBox(pad->GetAt(i)->file_name);
|
||||
#endif
|
||||
m_pAdac = pad;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
CNoticeTrans::~CNoticeTrans()
|
||||
{
|
||||
if (m_ptp!=NULL)delete m_ptp;
|
||||
}
|
||||
|
||||
void CNoticeTrans::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_PROGRESS1, m_NoticeProgress);
|
||||
DDX_Control(pDX, IDC_NOTICE_MSGBOX, m_NoticeText);
|
||||
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CNoticeTrans, CDialog)
|
||||
ON_MESSAGE(WMU_NOTICE_TRANS, OnNoticeTrans)
|
||||
ON_MESSAGE(WMU_NOTICE_LAST_FILE_TRANS, OnNoticeLastFileTrans)
|
||||
ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)
|
||||
// ON_STN_CLICKED(IDC_NOTICE_MSGBOX, OnStnClickedNoticeMsgbox)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CNoticeTrans 메시지 처리기입니다.
|
||||
void CNoticeTrans::NoticeTrans(void)
|
||||
{
|
||||
tsvc_req_header_t tsvc_req_header;
|
||||
tsvc_auth_info_t auth_req_body;
|
||||
tsvc_dn_req_body_t dn_req_body;
|
||||
tsvc_rsp_header_t *tsvc_rsp_header_ptr;
|
||||
tsvc_da_req_t tsvc_da_req;
|
||||
tsvc_da_contents_t tsvc_da_contents;
|
||||
tsvc_ddc_req_body_t dnc_req_body;
|
||||
char recv_buffer[8196];
|
||||
int result_code;
|
||||
CString ip;
|
||||
CString this_guid;
|
||||
CString auth_str;
|
||||
|
||||
|
||||
SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
|
||||
if (sock == INVALID_SOCKET) {
|
||||
SetNoticeStep(101);
|
||||
goto EXIT_FUNCTION;
|
||||
}
|
||||
|
||||
SetNoticeStep(100);
|
||||
|
||||
bool bRet = false;
|
||||
DWORD dwWritten;
|
||||
char s[1024];
|
||||
|
||||
sockaddr_in sa;
|
||||
sa.sin_family = AF_INET;
|
||||
|
||||
ip = m_sutil.get_first_rcts(m_RCTSAddress);
|
||||
if (ip.GetLength()>0)
|
||||
sa.sin_addr.s_addr = m_sutil.conv_addr(ip.GetString());
|
||||
else
|
||||
goto EXIT_FUNCTION;
|
||||
|
||||
sa.sin_port = htons(RCTS_NOTICE_PORT);
|
||||
|
||||
connect(sock, (SOCKADDR*)&sa, sizeof(sa));
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// 인증
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
auth_str = this->m_cp + "@" + this->m_user;
|
||||
|
||||
tsvc_req_header.op_num_w = ::htons(OP_NUM_AUTH);
|
||||
tsvc_req_header.op_seq_w = ::htons(OP_SEQ_REQ);
|
||||
|
||||
::sprintf(auth_req_body.ua_str, auth_str);
|
||||
::sprintf(auth_req_body.up_str, m_passwd);
|
||||
|
||||
m_sutil._sh_send(sock, (char*)&tsvc_req_header, sizeof(tsvc_req_header));
|
||||
m_sutil._sh_send(sock, (char*)&auth_req_body, sizeof(auth_req_body));
|
||||
|
||||
memset(recv_buffer , 0x00 , sizeof(recv_buffer));
|
||||
if (m_sutil._rtxTimer(5 , sock) < 0)
|
||||
goto EXIT_FUNCTION;
|
||||
m_sutil._sh_recv(sock, (char*)&recv_buffer, sizeof(recv_buffer));
|
||||
|
||||
tsvc_rsp_header_ptr = reinterpret_cast<tsvc_rsp_header_t *>(&recv_buffer);
|
||||
result_code = ntohs(tsvc_rsp_header_ptr->op_result_code_w);
|
||||
|
||||
// 인증
|
||||
if (RSP_CODE_AUTH_SUCCESS==result_code)
|
||||
{
|
||||
SetNoticeStep(200);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetNoticeStep(201);
|
||||
goto EXIT_FUNCTION;
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// 인증 끝
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// header + body #1
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
tsvc_req_header.op_num_w = ::htons(OP_NUM_DA);
|
||||
tsvc_req_header.op_seq_w = ::htons(OP_SEQ_REQ);
|
||||
|
||||
memset(&tsvc_da_req , 0x00 , sizeof(tsvc_da_req));
|
||||
tsvc_da_req.file_cnt = ::htons(m_pAdac->GetCount());
|
||||
::strncpy(tsvc_da_req.sp_tid_str , m_sp_tid_str , MAX_SIZE_OF_SP_TID-1);
|
||||
|
||||
m_sutil._sh_send(sock,(char *)&tsvc_req_header, sizeof(tsvc_req_header));
|
||||
m_sutil._sh_send(sock,(char *)&tsvc_da_req, sizeof(tsvc_da_req));
|
||||
|
||||
SetNoticeStep(300);
|
||||
|
||||
memset(recv_buffer , 0x00 , sizeof(recv_buffer));
|
||||
if (m_sutil._rtxTimer(5 , sock) < 0)
|
||||
goto EXIT_FUNCTION;
|
||||
m_sutil._sh_recv(sock, (char*)&recv_buffer, sizeof(recv_buffer));
|
||||
|
||||
tsvc_rsp_header_ptr = reinterpret_cast<tsvc_rsp_header_t *>(&recv_buffer);
|
||||
result_code = ntohs(tsvc_rsp_header_ptr->op_result_code_w);
|
||||
int result_opn = ntohs(tsvc_rsp_header_ptr->op_num_w);
|
||||
|
||||
//배포
|
||||
if (RSP_CODE_DIST_SUCCESS==result_code)
|
||||
{
|
||||
SetNoticeStep(400);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetNoticeStep(401);
|
||||
goto EXIT_FUNCTION;
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// header + body #1 끝
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// body #2
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
for (int i=0; i < m_pAdac->GetCount(); i++)
|
||||
{
|
||||
memset(&tsvc_da_contents , 0x00 , sizeof(tsvc_da_contents));
|
||||
tsvc_da_contents.bFolder = m_pAdac->GetAt(i)->bFolder ;
|
||||
// tsvc_da_contents.file_name = m_pAdac->GetAt(i)->file_name;
|
||||
strncpy(tsvc_da_contents.file_name ,m_pAdac->GetAt(i)->file_name , MAX_SIZE_OF_URI );
|
||||
|
||||
m_sutil._sh_send(sock,(char *)&tsvc_da_contents, sizeof(tsvc_da_contents));
|
||||
}
|
||||
|
||||
/*
|
||||
memset(recv_buffer , 0x00 , sizeof(recv_buffer));
|
||||
if (m_sutil._rtxTimer(5 , sock) < 0)
|
||||
goto EXIT_FUNCTION;
|
||||
m_sutil._sh_recv(sock, (char*)&recv_buffer, sizeof(recv_buffer));
|
||||
|
||||
tsvc_rsp_header_ptr = reinterpret_cast<tsvc_rsp_header_t *>(&recv_buffer);
|
||||
result_code = ntohs(tsvc_rsp_header_ptr->op_result_code_w);
|
||||
|
||||
if (RSP_CODE_DIST_SUCCESS==result_code)
|
||||
{
|
||||
SetNoticeStep(402);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetNoticeStep(403);
|
||||
goto EXIT_FUNCTION;
|
||||
}
|
||||
*/
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// body #2 끝
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// 관리자 정보
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
memset(&dnc_req_body , 0x00 , sizeof(dnc_req_body));
|
||||
::strncpy(dnc_req_body.sp_tid_str , m_sp_tid_str , MAX_SIZE_OF_SP_TID-1);
|
||||
|
||||
FillAdminInfo(&dnc_req_body);
|
||||
|
||||
m_sutil._sh_send(sock,(char *)&dnc_req_body, sizeof(tsvc_dn_req_body_t));
|
||||
|
||||
memset(recv_buffer , 0x00 , sizeof(recv_buffer));
|
||||
if (m_sutil._rtxTimer(5 , sock) < 0)
|
||||
goto EXIT_FUNCTION;
|
||||
m_sutil._sh_recv(sock, (char*)&recv_buffer, sizeof(recv_buffer));
|
||||
|
||||
tsvc_rsp_header_ptr = reinterpret_cast<tsvc_rsp_header_t *>(&recv_buffer);
|
||||
result_code = ntohs(tsvc_rsp_header_ptr->op_result_code_w);
|
||||
|
||||
|
||||
SetNoticeStep(402);
|
||||
|
||||
/*
|
||||
if (RSP_CODE_DIST_SUCCESS==result_code)
|
||||
{
|
||||
SetNoticeStep(402);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetNoticeStep(403);
|
||||
goto EXIT_FUNCTION;
|
||||
}
|
||||
*/
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// 관리자 정보 끝
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
EXIT_FUNCTION:
|
||||
|
||||
if (sock != INVALID_SOCKET)
|
||||
closesocket(sock);
|
||||
|
||||
PostMessage(WM_CLOSE);
|
||||
}
|
||||
|
||||
void CNoticeTrans::LastFileTransComplete()
|
||||
{
|
||||
tsvc_req_header_t tsvc_req_header;
|
||||
tsvc_auth_info_t auth_req_body;
|
||||
tsvc_dn_req_body_t dn_req_body;
|
||||
tsvc_ddc_req_body_t dnc_req_body;
|
||||
tsvc_rsp_header_t *tsvc_rsp_header_ptr;
|
||||
char recv_buffer[8196];
|
||||
int result_code;
|
||||
CString ip;
|
||||
CString this_guid;
|
||||
|
||||
SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
|
||||
if (sock == INVALID_SOCKET) {
|
||||
SetNoticeStep(103);
|
||||
goto EXIT_FUNCTION;
|
||||
}
|
||||
|
||||
SetNoticeStep(102);
|
||||
|
||||
bool bRet = false;
|
||||
DWORD dwWritten;
|
||||
char s[1024];
|
||||
|
||||
sockaddr_in sa;
|
||||
sa.sin_family = AF_INET;
|
||||
|
||||
ip = m_sutil.get_first_rcts(m_ptp->szRCTSAddress);
|
||||
if (ip.GetLength()>0)
|
||||
sa.sin_addr.s_addr = m_sutil.conv_addr(ip.GetString());
|
||||
else
|
||||
goto EXIT_FUNCTION;
|
||||
|
||||
sa.sin_port = htons(RCTS_NOTICE_PORT);
|
||||
|
||||
connect(sock, (SOCKADDR*)&sa, sizeof(sa));
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// 인증
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
tsvc_req_header.op_num_w = ::htons(OP_NUM_AUTH);
|
||||
tsvc_req_header.op_seq_w = ::htons(OP_SEQ_REQ);
|
||||
|
||||
::sprintf(auth_req_body.ua_str, m_ptp->szUserId);
|
||||
::sprintf(auth_req_body.up_str, m_ptp->szPassword);
|
||||
|
||||
m_sutil._sh_send(sock, (char*)&tsvc_req_header, sizeof(tsvc_req_header));
|
||||
m_sutil._sh_send(sock, (char*)&auth_req_body, sizeof(auth_req_body));
|
||||
|
||||
memset(recv_buffer , 0x00 , sizeof(recv_buffer));
|
||||
if (m_sutil._rtxTimer(5 , sock) < 0)
|
||||
goto EXIT_FUNCTION;
|
||||
m_sutil._sh_recv(sock, (char*)&recv_buffer, sizeof(recv_buffer));
|
||||
|
||||
tsvc_rsp_header_ptr = reinterpret_cast<tsvc_rsp_header_t *>(&recv_buffer);
|
||||
result_code = ntohs(tsvc_rsp_header_ptr->op_result_code_w);
|
||||
|
||||
if (RSP_CODE_AUTH_SUCCESS==result_code)
|
||||
{
|
||||
SetNoticeStep(202);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetNoticeStep(203);
|
||||
goto EXIT_FUNCTION;
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// 인증 끝
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// 전송완료알림//////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
tsvc_req_header.op_num_w = ::htons(OP_NUM_DNC);
|
||||
tsvc_req_header.op_seq_w = ::htons(OP_SEQ_REQ);
|
||||
|
||||
m_sutil._sh_send(sock,(char *)&tsvc_req_header, sizeof(tsvc_req_header));
|
||||
SetNoticeStep(302);
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// 전송완료알림 끝////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// 관리자 정보
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
memset(&dnc_req_body , 0x00 , sizeof(dnc_req_body));
|
||||
::strncpy(dnc_req_body.sp_tid_str , m_ptp->szTransGuid , MAX_SIZE_OF_SP_TID-1);
|
||||
|
||||
FillAdminInfo(&dnc_req_body);
|
||||
|
||||
m_sutil._sh_send(sock,(char *)&dnc_req_body, sizeof(tsvc_dn_req_body_t));
|
||||
|
||||
memset(recv_buffer , 0x00 , sizeof(recv_buffer));
|
||||
if (m_sutil._rtxTimer(5 , sock) < 0)
|
||||
goto EXIT_FUNCTION;
|
||||
m_sutil._sh_recv(sock, (char*)&recv_buffer, sizeof(recv_buffer));
|
||||
|
||||
tsvc_rsp_header_ptr = reinterpret_cast<tsvc_rsp_header_t *>(&recv_buffer);
|
||||
result_code = ntohs(tsvc_rsp_header_ptr->op_result_code_w);
|
||||
|
||||
if (RSP_CODE_DIST_SUCCESS==result_code)
|
||||
{
|
||||
SetNoticeStep(402);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetNoticeStep(403);
|
||||
goto EXIT_FUNCTION;
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// 관리자 정보 끝
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
EXIT_FUNCTION:
|
||||
|
||||
if (sock != INVALID_SOCKET)
|
||||
closesocket(sock);
|
||||
|
||||
PostMessage(WM_CLOSE);
|
||||
}
|
||||
|
||||
|
||||
BOOL CNoticeTrans::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// TODO: 여기에 추가 초기화 작업을 추가합니다.
|
||||
m_NoticeProgress.SetRange(0, 100);
|
||||
m_NoticeProgress.SetStep(1);
|
||||
|
||||
this->PostMessage(WMU_NOTICE_TRANS , NULL , NULL);
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
|
||||
}
|
||||
|
||||
|
||||
LRESULT CNoticeTrans::OnNoticeTrans(WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
SetNoticeStep(0);
|
||||
|
||||
while (FALSE==IsWindowVisible())
|
||||
{
|
||||
m_sutil.MessagePump(100);
|
||||
}
|
||||
|
||||
this->NoticeTrans();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CNoticeTrans::OnNoticeLastFileTrans(WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
SetNoticeStep(2);
|
||||
|
||||
while (FALSE==IsWindowVisible())
|
||||
{
|
||||
m_sutil.MessagePump(100);
|
||||
}
|
||||
|
||||
this->LastFileTransComplete();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void CNoticeTrans::OnBnClickedCancel()
|
||||
{
|
||||
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
|
||||
OnCancel();
|
||||
}
|
||||
|
||||
void CNoticeTrans::SetNoticeStep(int nStep)
|
||||
{
|
||||
if (0==nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(10);
|
||||
m_NoticeText.SetWindowText("배포 요청중입니다...(0/4 요청준비)");
|
||||
}
|
||||
if (2==nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(10);
|
||||
m_NoticeText.SetWindowText("현재 전송창을 종료합니다...(0/4 요청준비)");
|
||||
}
|
||||
else if (100 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(20);
|
||||
m_NoticeText.SetWindowText("배포 요청중입니다...(1/4 사용자인증)");
|
||||
|
||||
}
|
||||
else if (102 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(20);
|
||||
m_NoticeText.SetWindowText("현재 전송창을 종료합니다...(1/4 사용자인증)");
|
||||
|
||||
}
|
||||
else if (200 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(40);
|
||||
m_NoticeText.SetWindowText("배포 요청중입니다...(2/4 인증성공)");
|
||||
|
||||
}
|
||||
else if (201 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(40);
|
||||
m_NoticeText.SetWindowText("배포 요청을 중단합니다...(2/4 인증실패)");
|
||||
m_sutil.MessagePump(500);
|
||||
}
|
||||
else if (202 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(40);
|
||||
m_NoticeText.SetWindowText("현재 전송창을 종료합니다...(2/4 인증성공)");
|
||||
|
||||
}
|
||||
else if (203 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(40);
|
||||
m_NoticeText.SetWindowText("현재 전송창을 종료합니다...(2/4 인증실패)");
|
||||
}
|
||||
else if (300 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(70);
|
||||
m_NoticeText.SetWindowText("배포 요청중입니다...(3/4 배포요청)");
|
||||
|
||||
}
|
||||
else if (302 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(70);
|
||||
m_NoticeText.SetWindowText("현재 전송창을 종료합니다...(3/4 알림요청)");
|
||||
|
||||
}
|
||||
else if (303 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(70);
|
||||
m_NoticeText.SetWindowText("현재 전송창을 종료합니다...(3/4 요청실패)");
|
||||
|
||||
}
|
||||
else if (400 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(100);
|
||||
m_NoticeText.SetWindowText("배포를 시작합니다...(4/4 요청성공)");
|
||||
m_sutil.MessagePump(500);
|
||||
}
|
||||
else if (401 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(100);
|
||||
m_NoticeText.SetWindowText("배포 요청을 중단합니다...(4/4 요청실패)");
|
||||
m_sutil.MessagePump(500);
|
||||
}
|
||||
else if (402 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(100);
|
||||
m_NoticeText.SetWindowText("현재 전송창을 종료합니다...(4/4 요청성공)");
|
||||
m_sutil.MessagePump(500);
|
||||
}
|
||||
else if (403 == nStep)
|
||||
{
|
||||
m_NoticeProgress.SetPos(100);
|
||||
m_NoticeText.SetWindowText("현재 전송창을 종료합니다...(4/4 요청실패)");
|
||||
m_sutil.MessagePump(500);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
void CNoticeTrans::FillAdminInfo(tsvc_ddc_req_body_t* pDncInfo)
|
||||
{
|
||||
|
||||
strncpy(pDncInfo->name_01 ,COptions::GetOption(OPTION_NAME_01) , MAX_SIZE_OF_NAME-1) ;
|
||||
strncpy(pDncInfo->name_02 ,COptions::GetOption(OPTION_NAME_02) , MAX_SIZE_OF_NAME-1) ;
|
||||
strncpy(pDncInfo->name_03 ,COptions::GetOption(OPTION_NAME_03) , MAX_SIZE_OF_NAME-1) ;
|
||||
|
||||
strncpy(pDncInfo->phone_01 ,COptions::GetOption(OPTION_PHONE_01) , MAX_SIZE_OF_NAME-1) ;
|
||||
strncpy(pDncInfo->phone_02 ,COptions::GetOption(OPTION_PHONE_02) , MAX_SIZE_OF_NAME-1) ;
|
||||
strncpy(pDncInfo->phone_03 ,COptions::GetOption(OPTION_PHONE_03) , MAX_SIZE_OF_NAME-1) ;
|
||||
|
||||
strncpy(pDncInfo->mail_01 ,COptions::GetOption(OPTION_MAIL_01) , MAX_SIZE_OF_NAME-1) ;
|
||||
strncpy(pDncInfo->mail_02 ,COptions::GetOption(OPTION_MAIL_02) , MAX_SIZE_OF_NAME-1) ;
|
||||
strncpy(pDncInfo->mail_03 ,COptions::GetOption(OPTION_MAIL_03) , MAX_SIZE_OF_NAME-1) ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
#pragma once
|
||||
|
||||
#include "Struct.h"
|
||||
#include "afxcmn.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "SocketUtil.h"
|
||||
#include "../ConsoleTransfer(DN)/NoticeStruct.h"
|
||||
|
||||
#define SOCK_TIMEOUT 5
|
||||
#define WMU_NOTICE_TRANS (WM_USER+1000)
|
||||
#define WMU_NOTICE_LAST_FILE_TRANS (WM_USER+2000)
|
||||
|
||||
|
||||
// CNoticeTrans 대화 상자입니다.
|
||||
|
||||
class CNoticeTrans : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CNoticeTrans)
|
||||
|
||||
public:
|
||||
CNoticeTrans(CWnd* pParent = NULL); // 표준 생성자입니다.
|
||||
CNoticeTrans(PTRANPARAM_STRUCT ptp, CString szTargetPath , CWnd* pParent = NULL);
|
||||
CNoticeTrans(PTRANPARAM_STRUCT ptp, int LastFileTrans , CWnd* pParent = NULL);
|
||||
CNoticeTrans(CArray<tsvc_da_contents_t*>* pad, CWnd* pParent = NULL);
|
||||
virtual ~CNoticeTrans();
|
||||
|
||||
// 대화 상자 데이터입니다.
|
||||
enum { IDD = IDD_SEND_TRANSINFO};
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
|
||||
CString m_szTargetPath;
|
||||
bool m_NoticeLastFileTrans;
|
||||
PTRANPARAM_STRUCT m_ptp;
|
||||
|
||||
void NoticeTrans(void);
|
||||
void LastFileTransComplete();
|
||||
void FillAdminInfo( tsvc_ddc_req_body_t*);
|
||||
|
||||
CSocketUtil m_sutil;
|
||||
CArray<tsvc_da_contents_t*>* m_pAdac;
|
||||
|
||||
public:
|
||||
// afx_msg void OnNMCustomdrawProgress1(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
CProgressCtrl m_NoticeProgress;
|
||||
CStatic m_NoticeText;
|
||||
|
||||
virtual BOOL OnInitDialog();
|
||||
// afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
|
||||
afx_msg void OnNMCustomdrawProgress1(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
// afx_msg void OnActivateApp(BOOL bActive, DWORD dwThreadID);
|
||||
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
|
||||
afx_msg void OnSetFocus(CWnd* pOldWnd);
|
||||
afx_msg LRESULT OnNoticeTrans(WPARAM, LPARAM);
|
||||
afx_msg LRESULT OnNoticeLastFileTrans(WPARAM, LPARAM);
|
||||
afx_msg void OnBnClickedCancel();
|
||||
// afx_msg void OnStnClickedNoticeMsgbox();
|
||||
void SetNoticeStep(int nStep);
|
||||
|
||||
CString m_cp;
|
||||
CString m_user;
|
||||
CString m_passwd;
|
||||
CString m_RCTSAddress;
|
||||
CString m_sp_tid_str;
|
||||
|
||||
};
|
||||
@@ -0,0 +1,259 @@
|
||||
// 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,
|
||||
_T("Admin Name 01"), 0,
|
||||
_T("Admin Name 02"), 0,
|
||||
_T("Admin Name 03"), 0,
|
||||
_T("Admin Phone 01"), 0,
|
||||
_T("Admin Phone 02"), 0,
|
||||
_T("Admin Phone 03"), 0,
|
||||
_T("Admin Mail 01"), 0,
|
||||
_T("Admin Mail 02"), 0,
|
||||
_T("Admin Mail 03"), 0,
|
||||
_T("Log Directory"), 1,
|
||||
_T("Log Upload File"), 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,89 @@
|
||||
// Options.h
|
||||
#ifndef __OPTIONS__
|
||||
#define __OPTIONS__
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "MarkupSTL.h"
|
||||
|
||||
#define OPTIONS_NUM 41
|
||||
|
||||
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, //30
|
||||
OPTION_NAME_01,
|
||||
OPTION_NAME_02,
|
||||
OPTION_NAME_03,
|
||||
OPTION_PHONE_01,
|
||||
OPTION_PHONE_02,
|
||||
OPTION_PHONE_03,
|
||||
OPTION_MAIL_01,
|
||||
OPTION_MAIL_02,
|
||||
OPTION_MAIL_03,
|
||||
OPTION_LOG_DIR,
|
||||
OPTION_LOG_UPLOAD
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,271 @@
|
||||
// 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
|
||||
|
||||
IMPLEMENT_DYNAMIC(CRLDropTarget, COleDropTarget)
|
||||
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()))
|
||||
de = dwKeyState & MK_CONTROL ? DROPEFFECT_COPY : DROPEFFECT_MOVE;
|
||||
}
|
||||
}
|
||||
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)
|
||||
de = dwKeyState & MK_CONTROL ? DROPEFFECT_COPY : DROPEFFECT_MOVE;
|
||||
|
||||
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)
|
||||
de = dwKeyState & MK_CONTROL ? DROPEFFECT_COPY : DROPEFFECT_MOVE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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,197 @@
|
||||
// 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
|
||||
|
||||
IMPLEMENT_DYNAMIC(CRTDropTarget, COleDropTarget)
|
||||
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)
|
||||
de = dwKeyState & MK_CONTROL ? DROPEFFECT_COPY : DROPEFFECT_MOVE;
|
||||
}
|
||||
}
|
||||
|
||||
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,31 @@
|
||||
2006.04.12
|
||||
- 다중파일 이동시 일부만 이동되는 문제 수정
|
||||
|
||||
2006.04.19.00
|
||||
- 하위 폴더 포함 용량 보기 기능 추가
|
||||
|
||||
2006.05.01.00
|
||||
- 라이브업데이트기능 추가
|
||||
|
||||
2006.05.09.00
|
||||
- 이름이 같은 파일/폴더 존재시 새 폴더 만들기에서 기존 파일이 변경되는 문제 해결
|
||||
|
||||
2006.05.17.00
|
||||
- 폴더 무인증 설정후 무인증 제거 하면 아이콘 깨짐 수정
|
||||
- 무인증 설정된 파일에 URL 저장하기 결과물 도메인 ktsh.co.kr 로 수정
|
||||
|
||||
2006.05.19.00
|
||||
- 로그인창 이미지 수정
|
||||
|
||||
2006.05.30.00
|
||||
- 리모트 트리에서 리네임시 공백으로 수정안되게 수정
|
||||
|
||||
2006.06.05.00
|
||||
- 리모트 리스트에서 사이즈정렬 오류 수정
|
||||
- 업데이트 서버 접속안되도 실행 가능하게 수정
|
||||
|
||||
2006.06.30.00
|
||||
- 2G 이상 파일 다운로드 지원기능 추가
|
||||
|
||||
2006.07.03.00
|
||||
- 파일 리네임시 아이콘 바로 변경되게 수정
|
||||
@@ -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,994 @@
|
||||
// RemoteListCtrl.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "RemoteListCtrl.h"
|
||||
#include "Struct.h"
|
||||
|
||||
#include "MainFrm.h"
|
||||
#include "WebDlg.h"
|
||||
#include "RemoteView.h"
|
||||
#include "LocalView.h"
|
||||
#include ".\remotelistctrl.h"
|
||||
#include ".\distinfodlg.h"
|
||||
#include "NoticeTrans.h"
|
||||
|
||||
#include "ne_socket.h"
|
||||
#include "ne_uri.h"
|
||||
#include "ne_request.h"
|
||||
#include "ne_xml.h"
|
||||
#include "ne_string.h"
|
||||
|
||||
typedef struct COMMLIB_HANDLE {
|
||||
ne_session* pnsess;
|
||||
ne_uri nuri;
|
||||
string sUserId;
|
||||
string sPassword;
|
||||
string sDavAuth;
|
||||
DWORD dwError;
|
||||
string sError;
|
||||
|
||||
// 업/다운 관련
|
||||
HANDLE hThread;
|
||||
HANDLE hWaitEvent;
|
||||
UINT32 uJob;
|
||||
string sJobParam;
|
||||
cl_callback proc;
|
||||
void* pParam;
|
||||
HANDLE hTranFile;
|
||||
__int64 nExFileSize;
|
||||
__int64 iTranPos;
|
||||
__int64 nFileSize;
|
||||
DWORD dwOldTick;
|
||||
int nTranStop;
|
||||
string sRedirect;
|
||||
string sDomain2;
|
||||
|
||||
set<PCLSERVICE_STRUCT> setServiceList;
|
||||
set<PCLPATHINFO_STRUCT> setPathInfoList;
|
||||
set<PCLFILE_STRUCT> setFileList;
|
||||
} COMMLIB_STRUCT, *PCOMMLIB_STRUCT;
|
||||
|
||||
#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)
|
||||
ON_COMMAND(ID_LIST_VIEW_DISTSTATUS, OnListViewDiststatus)
|
||||
ON_COMMAND(ID_LIST_DIST_AGAIN, OnListDistAgain)
|
||||
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) {
|
||||
SetClipboard(CBS_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+1]={270, 130,110, 110, 150, 54, 90, 90};
|
||||
|
||||
CString sWidths = COptions::GetOption(OPTION_REMOTECOLUMNWIDTHS);
|
||||
if (sWidths != "")
|
||||
{
|
||||
int pos=-1;
|
||||
int i;
|
||||
for (i=0; i<6+1; 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+1)
|
||||
{
|
||||
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_asHeader[4] = "수정일자";
|
||||
|
||||
m_anHeaderAlign[0] = LVCFMT_LEFT;
|
||||
m_anHeaderAlign[1] = LVCFMT_LEFT;
|
||||
m_anHeaderAlign[2] = LVCFMT_RIGHT;
|
||||
m_anHeaderAlign[3] = LVCFMT_LEFT;
|
||||
m_anHeaderAlign[4] = LVCFMT_LEFT;
|
||||
|
||||
for (int i = 0; i < 4+1; 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);
|
||||
pmenu->SetMenuItemBitmaps(ID_LISTFILE_COPY, MF_BYCOMMAND, &pmf->m_bmCopy, &pmf->m_bmCopy);
|
||||
pmenu->SetMenuItemBitmaps(ID_LISTFILE_PASTE, MF_BYCOMMAND, &pmf->m_bmPaste, &pmf->m_bmPaste);
|
||||
|
||||
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()
|
||||
{
|
||||
SetClipboard(CBS_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));
|
||||
}
|
||||
|
||||
|
||||
void CRemoteListCtrl::OnListViewDiststatus()
|
||||
{
|
||||
CString sPath;
|
||||
CMainFrame* pmf = (CMainFrame*)AfxGetMainWnd();
|
||||
|
||||
CRemoteTreeCtrl *ptree = pmf->m_pRemoteView->GetTreeCtrl();
|
||||
|
||||
HTREEITEM htiSelected = ptree->GetSelectedItem();
|
||||
|
||||
CString sBasePath = ptree->GetPath(htiSelected) + "/";
|
||||
|
||||
PRLISTITEM_STRUCT prli = (PRLISTITEM_STRUCT)GetItemData(m_iSelectedItem);
|
||||
|
||||
//HTREEITEM htiVolume = bUseSelected ? ptree->GetVolumeItem(ptree->GetSelectedItem()) :m_htiDragTarget;
|
||||
HTREEITEM htiVolume = ptree->GetVolumeItem(ptree->GetSelectedItem());
|
||||
PRTREEITEM_STRUCT prtiVolume = (PRTREEITEM_STRUCT)ptree->GetItemData(htiVolume);
|
||||
|
||||
CString sCp = ptree->GetItemText(htiVolume);
|
||||
CString sUser = pmf->m_sUserId;
|
||||
CString sPasswd = pmf->m_sPassword;
|
||||
|
||||
|
||||
|
||||
if(prli)
|
||||
{
|
||||
sPath = sBasePath + prli->sName;
|
||||
|
||||
if (prli->bFolder)
|
||||
{
|
||||
HCOMMLIB t_hcl = (HCOMMLIB)pmf->m_mapHcl[htiVolume];
|
||||
PCOMMLIB_STRUCT t_pcl = (PCOMMLIB_STRUCT)t_hcl;
|
||||
|
||||
CDistInfoDlg dlg;
|
||||
|
||||
dlg.m_dist_path = sPath;
|
||||
dlg.m_cp = sCp;
|
||||
dlg.m_user = sUser;
|
||||
dlg.m_passwd = sPasswd;
|
||||
dlg.m_RCTSAddress = t_pcl->sDomain2.c_str();
|
||||
dlg.DoModal();
|
||||
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
CWebDlg* pdlg;
|
||||
pdlg = new CWebDlg();
|
||||
pdlg->Create(IDD_WEB_DLG,GetDesktopWindow( ));
|
||||
pdlg->ShowWindow(TRUE);
|
||||
pdlg->GetPage(::MAN_DISTINFO,sCp,sUser,sPath);
|
||||
}
|
||||
}
|
||||
else
|
||||
return;
|
||||
|
||||
}
|
||||
void CRemoteListCtrl::OnListDistAgain()
|
||||
{
|
||||
POSITION pos = GetFirstSelectedItemPosition();
|
||||
if (!pos)
|
||||
return;
|
||||
|
||||
CRemoteTreeCtrl* ptree = ((CRemoteView*)GetParent())->GetTreeCtrl();
|
||||
|
||||
// HTREEITEM hti = ptree->GetSelectedItem();
|
||||
|
||||
HTREEITEM htiVolume = ptree->GetVolumeItem(ptree->GetSelectedItem());
|
||||
HTREEITEM htiFolder = ptree->GetSelectedItem();
|
||||
|
||||
if (htiVolume == ptree->GetRootItem())
|
||||
return;
|
||||
|
||||
CString sPath = ptree->GetPath(htiFolder);
|
||||
CMainFrame *pmf = (CMainFrame *)AfxGetMainWnd();
|
||||
|
||||
CArray<tsvc_da_contents_t*>* pArrDac = new CArray<tsvc_da_contents_t*>();
|
||||
|
||||
while (pos) {
|
||||
int iItem = GetNextSelectedItem(pos);
|
||||
|
||||
CString file_name = sPath + "/" + GetItemText(iItem, 0);
|
||||
PRLISTITEM_STRUCT prli = (PRLISTITEM_STRUCT)GetItemData(iItem);
|
||||
|
||||
tsvc_da_contents_t* pDac = new tsvc_da_contents_t;
|
||||
pDac->bFolder = prli->bFolder;
|
||||
strncpy(pDac->file_name , file_name , MAX_SIZE_OF_URI);
|
||||
|
||||
pArrDac->Add(pDac);
|
||||
|
||||
}
|
||||
|
||||
if (pArrDac->GetCount()>0)
|
||||
{
|
||||
|
||||
CNoticeTrans dlg(pArrDac);
|
||||
|
||||
HCOMMLIB t_hcl = (HCOMMLIB)pmf->m_mapHcl[htiVolume];
|
||||
PCOMMLIB_STRUCT t_pcl = (PCOMMLIB_STRUCT)t_hcl;
|
||||
CString szTransGuid;
|
||||
pmf->GetNewGUID(szTransGuid);
|
||||
|
||||
dlg.m_cp = ptree->GetItemText(htiVolume);
|
||||
dlg.m_user = pmf->m_sUserId;
|
||||
dlg.m_passwd = pmf->m_sPassword;
|
||||
dlg.m_RCTSAddress = t_pcl->sDomain2.c_str();
|
||||
dlg.m_sp_tid_str = szTransGuid;
|
||||
|
||||
dlg.DoModal();
|
||||
|
||||
for (int i=0; i < pArrDac->GetCount(); i++)
|
||||
delete pArrDac->GetAt(i);
|
||||
|
||||
}
|
||||
|
||||
delete pArrDac;
|
||||
|
||||
#if 0
|
||||
|
||||
CString sPath;
|
||||
CMainFrame* pmf = (CMainFrame*)AfxGetMainWnd();
|
||||
|
||||
CRemoteTreeCtrl *ptree = pmf->m_pRemoteView->GetTreeCtrl();
|
||||
|
||||
HTREEITEM htiSelected = ptree->GetSelectedItem();
|
||||
|
||||
CString sBasePath = ptree->GetPath(htiSelected) + "/";
|
||||
|
||||
PRLISTITEM_STRUCT prli = (PRLISTITEM_STRUCT)GetItemData(m_iSelectedItem);
|
||||
|
||||
//HTREEITEM htiVolume = bUseSelected ? ptree->GetVolumeItem(ptree->GetSelectedItem()) :m_htiDragTarget;
|
||||
HTREEITEM htiVolume = ptree->GetVolumeItem(ptree->GetSelectedItem());
|
||||
PRTREEITEM_STRUCT prtiVolume = (PRTREEITEM_STRUCT)ptree->GetItemData(htiVolume);
|
||||
|
||||
CString sCp = ptree->GetItemText(htiVolume);
|
||||
CString sUser = pmf->m_sUserId;
|
||||
CString sPasswd = pmf->m_sPassword;
|
||||
|
||||
if(prli)
|
||||
{
|
||||
sPath = sBasePath + prli->sName;
|
||||
|
||||
if (prli->bFolder)
|
||||
{
|
||||
|
||||
/*
|
||||
HCOMMLIB t_hcl = (HCOMMLIB)pmf->m_mapHcl[htiVolume];
|
||||
PCOMMLIB_STRUCT t_pcl = (PCOMMLIB_STRUCT)t_hcl;
|
||||
|
||||
CDistInfoDlg dlg;
|
||||
|
||||
dlg.m_dist_path = sPath;
|
||||
dlg.m_cp = sCp;
|
||||
dlg.m_user = sUser;
|
||||
dlg.m_passwd = sPasswd;
|
||||
dlg.m_RCTSAddress = t_pcl->sDomain2.c_str();
|
||||
dlg.DoModal();
|
||||
*/
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
PTRANPARAM_STRUCT ptp = new TRANPARAM_STRUCT;
|
||||
//ptp->szRCTSAddress;
|
||||
|
||||
|
||||
// CNoticeTrans dlg(ptp , sPath);
|
||||
// dlg.DoModal();
|
||||
}
|
||||
}
|
||||
else
|
||||
return;
|
||||
|
||||
#endif
|
||||
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
// 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[5];
|
||||
int m_anHeaderAlign[5];
|
||||
|
||||
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();
|
||||
afx_msg void OnListViewDiststatus();
|
||||
afx_msg void OnListDistAgain();
|
||||
};
|
||||
@@ -0,0 +1,776 @@
|
||||
// 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) {
|
||||
SetClipboard(GetSelectedItem(), CBS_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);
|
||||
pmenu->SetMenuItemBitmaps(ID_TREE_COPY, MF_BYCOMMAND, &pmf->m_bmCopy, &pmf->m_bmCopy);
|
||||
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);
|
||||
pmenu->EnableMenuItem(ID_TREE_COPY, MF_GRAYED);
|
||||
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()
|
||||
{
|
||||
SetClipboard(m_htiSelected, CBS_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,81 @@
|
||||
// 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,157 @@
|
||||
#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)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int file_cnt;
|
||||
int dist_complete;
|
||||
int dist_now;
|
||||
int dist_fail;
|
||||
|
||||
}DIST_INFO,*PDIST_INFO;
|
||||
|
||||
// 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 AppendObject(HTREEITEM htiParent, bool bFolder, LPCTSTR pszPath, __int64 nSize, LPCTSTR pszLastModified , PDIST_INFO pdi);
|
||||
|
||||
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,97 @@
|
||||
#ifndef REX_ALGORITHM_INCLUDED_
|
||||
#define REX_ALGORITHM_INCLUDED_
|
||||
|
||||
#pragma warning(disable:4786)
|
||||
#pragma warning(disable:4503)
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
#include <set>
|
||||
#include <string>
|
||||
using namespace std;
|
||||
|
||||
|
||||
struct REXA_DFAState{
|
||||
enum{eEos=-1,eNoAnswer=-2,eAccepting=-3};
|
||||
REXA_DFAState(int nAnwserId=eNoAnswer,bool bIsFinal=false);
|
||||
static void CollectStates (REXA_DFAState* pState,
|
||||
set<REXA_DFAState*>& rsetStates);
|
||||
void DeleteAll();
|
||||
REXA_DFAState* aNext[256];
|
||||
int m_nAnwserId;
|
||||
bool m_bIsFinal;
|
||||
bool m_bIsAccepting;
|
||||
static REXA_DFAState* ms_pIllegalState;
|
||||
static REXA_DFAState* ms_pEosState;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#if 0
|
||||
|
||||
$2 RegExp= Term {"|" Term}.
|
||||
$3 Term= Factor {Factor}.
|
||||
$4 Factor= Atom ["*"|"+"|"?"].
|
||||
$5 Atom= "[" REXA_CharSet "]" | Ident | "(" RegExp ").
|
||||
$6 REXA_CharSet= <Zeichenketten, Metazeichen sind ^(Komplement),-(Range-Zeichen),
|
||||
\ als Escapezeichen fuer Metazeichen, . (bedeutet alle Zeichen.
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
enum REXA_ESymbols{
|
||||
eEof=1,
|
||||
eIllegal=2,
|
||||
eIdent=4,
|
||||
eStar=32,
|
||||
ePlus=64,
|
||||
eAssign=128,
|
||||
eOpt=256,
|
||||
eAlternative=512,
|
||||
eCharSet=1024,
|
||||
eLParen=2048,
|
||||
eRParen=4096,
|
||||
eIgnoreCase=8192
|
||||
};
|
||||
|
||||
|
||||
typedef pair<const char*,const char*> REXA_BegEnd;
|
||||
|
||||
class REXA_Exception{
|
||||
public:
|
||||
REXA_Exception(
|
||||
const char* pPos,
|
||||
const char* pRegExp,
|
||||
string strMsg);
|
||||
REXA_Exception(
|
||||
REXA_ESymbols eExpectedSymbol,
|
||||
REXA_BegEnd token,
|
||||
const char* pRegExp,
|
||||
string strMsg="");
|
||||
|
||||
string m_strErrMsg;
|
||||
int m_nErrPos;
|
||||
};
|
||||
class REXA_Parser{
|
||||
public:
|
||||
REXA_Parser (char cEos=0);
|
||||
~REXA_Parser ();
|
||||
|
||||
REXA_DFAState* ParseRegExp (string strRegExp);
|
||||
void AddRegDefinition ( string strDefName,
|
||||
string strDefExpression,
|
||||
int nAnswer);
|
||||
void RemoveRegDefinition ( string strDefName);
|
||||
void GetRegDefinitions (vector<string>& vecDefinitions);
|
||||
private:
|
||||
class REXA_ParserImpl* m_pParserImp;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,129 @@
|
||||
#include "stdafx.h"
|
||||
#include ".\RexInterface.h"
|
||||
|
||||
REXI_Base::REXI_Base(char cEos)
|
||||
:m_cEos(cEos),m_pszSource(""),m_pszTokenBeg(""),m_pszTokenEnd("")
|
||||
,m_pStartState(REXA_DFAState::ms_pEosState)
|
||||
{
|
||||
}
|
||||
REXI_Base::~REXI_Base()
|
||||
{
|
||||
FreeMemory();
|
||||
}
|
||||
REXI_DefErr REXI_Base::AddRegDefinition (string strName,string strRegExp,
|
||||
int nIdAnswer)
|
||||
{
|
||||
REXI_DefErr defErr;
|
||||
defErr.eErrCode=REXI_DefErr::eNoErr;
|
||||
defErr.strErrMsg="";
|
||||
defErr.nErrOffset=0;
|
||||
try{
|
||||
m_regexpParser.AddRegDefinition(strName,strRegExp,nIdAnswer);
|
||||
}catch(REXA_Exception e){
|
||||
defErr.strErrMsg= e.m_strErrMsg;
|
||||
if( e.m_nErrPos>strName.size()+1){
|
||||
defErr.eErrCode= REXI_DefErr::eErrInRegExp;
|
||||
defErr.nErrOffset= e.m_nErrPos-(strName.size()+1);
|
||||
}else{
|
||||
defErr.eErrCode=REXI_DefErr::eErrInName;
|
||||
defErr.nErrOffset= e.m_nErrPos;
|
||||
}
|
||||
}
|
||||
return defErr;
|
||||
}
|
||||
void REXI_Base::GetRegDefinitions (vector<string>& vecDefinitions)
|
||||
{
|
||||
m_regexpParser.GetRegDefinitions(vecDefinitions);
|
||||
}
|
||||
void REXI_Base::RemoveRegDefinition (string strName)
|
||||
{
|
||||
m_regexpParser.RemoveRegDefinition(strName);
|
||||
}
|
||||
|
||||
|
||||
REXI_DefErr REXI_Base::SetRegexp (string strRegExp)
|
||||
{
|
||||
REXI_DefErr defErr;
|
||||
defErr.eErrCode=REXI_DefErr::eNoErr;
|
||||
defErr.strErrMsg="";
|
||||
defErr.nErrOffset=0;
|
||||
try{
|
||||
REXA_DFAState* pStartState= m_regexpParser.ParseRegExp(strRegExp);
|
||||
FreeMemory();
|
||||
m_pStartState= pStartState;
|
||||
}catch(REXA_Exception e){
|
||||
defErr.eErrCode=REXI_DefErr::eErrInRegExp;
|
||||
defErr.strErrMsg= e.m_strErrMsg;
|
||||
defErr.nErrOffset= e.m_nErrPos;
|
||||
}
|
||||
return defErr;
|
||||
}
|
||||
|
||||
|
||||
REXI_Search::REXI_Search(char cEos)
|
||||
:REXI_Base(cEos),m_nIdAnswer(0)
|
||||
{
|
||||
}
|
||||
REXI_DefErr REXI_Search::AddRegDef(string strName,string strRegExp)
|
||||
{
|
||||
return REXI_Base::AddRegDefinition(strName,strRegExp,m_nIdAnswer++);
|
||||
}
|
||||
bool REXI_Search::MatchHereImpl()
|
||||
{
|
||||
m_pszTokenBeg= m_pszTokenEnd;
|
||||
|
||||
const REXA_DFAState* pState= m_pStartState;
|
||||
const char* pAccept=0;
|
||||
while( !(pState= pState->
|
||||
aNext[*(unsigned char*)m_pszTokenEnd++])->m_bIsFinal){
|
||||
if(pState->m_bIsAccepting){
|
||||
pAccept= m_pszTokenEnd;
|
||||
}
|
||||
}
|
||||
m_pszTokenEnd--;
|
||||
if(!pState->m_bIsAccepting ){
|
||||
if( pAccept ){
|
||||
m_pszTokenEnd= pAccept;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
bool REXI_Search::MatchHere(const char*& rpcszSrc, int& nMatchLen,bool& bEos)
|
||||
{
|
||||
SetSource(rpcszSrc);
|
||||
bool bFound= MatchHereImpl();
|
||||
nMatchLen= m_pszTokenEnd-m_pszTokenBeg;
|
||||
rpcszSrc= m_pszTokenEnd;
|
||||
bEos= (*m_pszTokenEnd==m_cEos);
|
||||
rpcszSrc= m_pszTokenEnd;
|
||||
return bFound;
|
||||
}
|
||||
|
||||
bool REXI_Search::Find(const char*& rpcszSrc, int& nMatchLen,bool& bEos)
|
||||
{
|
||||
bool bFound;
|
||||
SetSource(rpcszSrc);
|
||||
for(;;){
|
||||
while(m_pStartState->aNext[*(unsigned char*)m_pszTokenEnd]==
|
||||
REXA_DFAState::ms_pIllegalState ){
|
||||
m_pszTokenEnd++;
|
||||
}
|
||||
if( MatchHereImpl() ){
|
||||
bFound= true;
|
||||
break;
|
||||
}
|
||||
bEos= (*m_pszTokenEnd==m_cEos);
|
||||
if( bEos ){
|
||||
bFound= false;
|
||||
break;
|
||||
}
|
||||
m_pszTokenEnd= m_pszTokenBeg+1;
|
||||
}
|
||||
bEos= (*m_pszTokenEnd==m_cEos);
|
||||
nMatchLen= m_pszTokenEnd-m_pszTokenBeg;
|
||||
rpcszSrc= m_pszTokenEnd;
|
||||
return bFound;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
#ifndef REX_INTERFACE_INCLUDED_
|
||||
#define REX_INTERFACE_INCLUDED_
|
||||
|
||||
#include "RexAlgorithm.h"
|
||||
|
||||
struct REXI_DefErr{
|
||||
enum{eNoErr,eErrInName,eErrInRegExp} eErrCode;
|
||||
string strErrMsg;
|
||||
int nErrOffset;
|
||||
};
|
||||
|
||||
class REXI_Base{
|
||||
public:
|
||||
|
||||
REXI_Base(char cEos='\0');
|
||||
virtual ~REXI_Base()=0;
|
||||
|
||||
inline void SetSource (const char* pszSource);
|
||||
inline const char* GetSource ()const;
|
||||
|
||||
|
||||
REXI_DefErr AddRegDefinition (string strName,string strRegExp,
|
||||
int nIdAnswer);
|
||||
void GetRegDefinitions (vector<string>& vecDefinitions);
|
||||
void RemoveRegDefinition (string strName);
|
||||
|
||||
REXI_DefErr SetRegexp (string strRegExp);
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
inline void FreeMemory ();
|
||||
|
||||
//source,source position and end of string character
|
||||
char m_cEos;
|
||||
const char* m_pszSource;
|
||||
const char* m_pszTokenBeg;
|
||||
const char* m_pszTokenEnd;
|
||||
|
||||
//algorithmic objects
|
||||
REXA_Parser m_regexpParser;
|
||||
|
||||
REXA_DFAState* m_pStartState;
|
||||
|
||||
};
|
||||
|
||||
class REXI_Search : public REXI_Base
|
||||
{
|
||||
public:
|
||||
REXI_Search(char cEos='\0');
|
||||
|
||||
REXI_DefErr
|
||||
AddRegDef (string strName,string strRegExp);
|
||||
inline REXI_DefErr
|
||||
SetRegexp (string strRegExp);
|
||||
bool MatchHere (const char*& rpcszSrc, int& nMatchLen,bool& bEos);
|
||||
bool Find (const char*& rpcszSrc, int& nMatchLen,bool& bEos);
|
||||
private:
|
||||
bool MatchHereImpl();
|
||||
int m_nIdAnswer;
|
||||
};
|
||||
|
||||
inline const char* REXI_Base::GetSource()const {return m_pszSource;}
|
||||
inline void REXI_Base::SetSource(const char* pszSource)
|
||||
{
|
||||
m_pszSource= pszSource;m_pszTokenBeg= m_pszTokenEnd=pszSource;
|
||||
}
|
||||
inline REXI_DefErr REXI_Search::SetRegexp (string strRegExp)
|
||||
{
|
||||
return REXI_Base::SetRegexp(strRegExp);
|
||||
}
|
||||
inline void REXI_Base::FreeMemory() {m_pStartState->DeleteAll();}
|
||||
#endif
|
||||
@@ -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,157 @@
|
||||
#include "StdAfx.h"
|
||||
#include ".\socketutil.h"
|
||||
|
||||
#define SOCK_TIMEOUT 5
|
||||
|
||||
CSocketUtil::CSocketUtil(void)
|
||||
{
|
||||
}
|
||||
|
||||
CSocketUtil::~CSocketUtil(void)
|
||||
{
|
||||
}
|
||||
|
||||
unsigned long CSocketUtil::conv_addr(const char *name)
|
||||
{
|
||||
struct hostent *he;
|
||||
int max;
|
||||
unsigned long retval;
|
||||
|
||||
if ((retval = inet_addr(name)) != INADDR_NONE)
|
||||
return retval;
|
||||
|
||||
he = gethostbyname(name);
|
||||
if (he == NULL)
|
||||
return INADDR_NONE;
|
||||
|
||||
for (max = 0; he->h_addr_list[max]; max++) ;
|
||||
if (max == 1)
|
||||
return *((unsigned long *)(he->h_addr_list[0]));
|
||||
else
|
||||
return *((unsigned long *)(he->h_addr_list[rand() % max]));
|
||||
|
||||
}
|
||||
|
||||
|
||||
CString CSocketUtil::get_first_rcts(const char *name)
|
||||
{
|
||||
struct hostent *he;
|
||||
int max;
|
||||
unsigned long retval;
|
||||
CString str_ip;
|
||||
CString sHeadOfAddress;
|
||||
|
||||
if ((retval = inet_addr(name)) != INADDR_NONE)
|
||||
{
|
||||
str_ip = name;
|
||||
return str_ip;
|
||||
}
|
||||
|
||||
he = gethostbyname(name);
|
||||
if (he == NULL)
|
||||
return NULL;
|
||||
|
||||
for (max = 0; he->h_addr_list[max]; max++) ;
|
||||
|
||||
int* end_ips = new int[max];
|
||||
|
||||
for (int i=0; i<max; i++)
|
||||
{
|
||||
|
||||
sockaddr_in sa;
|
||||
sa.sin_family = AF_INET;
|
||||
sa.sin_addr.s_addr = *((unsigned long *)(he->h_addr_list[i]));
|
||||
|
||||
str_ip = inet_ntoa(sa.sin_addr);
|
||||
|
||||
int lastDot = str_ip.ReverseFind('.');
|
||||
sHeadOfAddress = str_ip.Left(lastDot);
|
||||
CString sEndOfAddress = str_ip.Right(str_ip.GetLength() - lastDot -1);
|
||||
end_ips[i] = atoi(sEndOfAddress.GetString());
|
||||
|
||||
}
|
||||
|
||||
for (int i=0; i<max; i++)
|
||||
for (int j=0; j<max-1; j++)
|
||||
if (end_ips[j] > end_ips[j+1])
|
||||
swap(end_ips[j] , end_ips[j+1]);
|
||||
|
||||
char end_ip[5];
|
||||
sprintf(end_ip , "%d" , end_ips[0]);
|
||||
|
||||
CString result_ip;
|
||||
result_ip = sHeadOfAddress + "." + end_ip;
|
||||
|
||||
delete end_ips;
|
||||
return result_ip;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int CSocketUtil::_sh_send(SOCKET s, char *pszBuf, int nLen)
|
||||
{
|
||||
int iSent = 0, nSentLen;
|
||||
fd_set wset;
|
||||
struct timeval tv;
|
||||
|
||||
FD_ZERO(&wset);
|
||||
FD_SET(s, &wset);
|
||||
tv.tv_sec = SOCK_TIMEOUT;
|
||||
tv.tv_usec = 0;
|
||||
do {
|
||||
if (select(static_cast<int>(s + 1), NULL, &wset, NULL, &tv) < 0) break;
|
||||
if (!FD_ISSET(s, &wset)) break;
|
||||
|
||||
nSentLen = send(s, pszBuf + iSent, nLen, 0);
|
||||
|
||||
iSent += nSentLen;
|
||||
nLen -= nSentLen;
|
||||
} while (nLen > 0 && nSentLen > 0);
|
||||
|
||||
return nLen > 0 ? SOCKET_ERROR : iSent;
|
||||
}
|
||||
|
||||
int CSocketUtil::_sh_recv(SOCKET s, char *pszBuf, int nLen)
|
||||
{
|
||||
return recv(s , pszBuf , nLen , NULL);
|
||||
}
|
||||
|
||||
|
||||
int CSocketUtil::_rtxTimer(int sec , SOCKET descriptor)
|
||||
{
|
||||
fd_set fdsetRead;
|
||||
fd_set fdsetWrite;
|
||||
struct timeval tv;
|
||||
|
||||
FD_ZERO(&fdsetRead);
|
||||
FD_ZERO(&fdsetWrite);
|
||||
FD_SET(descriptor, &fdsetRead);
|
||||
FD_SET(descriptor, &fdsetWrite);
|
||||
|
||||
tv.tv_sec = sec;
|
||||
tv.tv_usec = 0;
|
||||
|
||||
return (::select(descriptor + 1, &fdsetRead, &fdsetWrite, NULL, &tv));
|
||||
}
|
||||
|
||||
BOOL CSocketUtil::MessagePump(int nSleepDuration)
|
||||
{
|
||||
MSG msg;
|
||||
|
||||
if(nSleepDuration > 0)
|
||||
Sleep(nSleepDuration);
|
||||
|
||||
try
|
||||
{
|
||||
while(::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
|
||||
{
|
||||
if(AfxGetApp()->PumpMessage())
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
#pragma once
|
||||
|
||||
class CSocketUtil
|
||||
{
|
||||
public:
|
||||
CSocketUtil(void);
|
||||
~CSocketUtil(void);
|
||||
|
||||
public:
|
||||
|
||||
static int _sh_send(SOCKET s, char *buf, int len);
|
||||
static int _sh_recv(SOCKET s, char *buf, int len);
|
||||
int _rtxTimer(int sec , SOCKET descriptor);
|
||||
CString get_first_rcts(const char *name);
|
||||
unsigned long conv_addr(const char *name);
|
||||
|
||||
BOOL MessagePump(int nSleepDuration);
|
||||
|
||||
};
|
||||
@@ -0,0 +1,50 @@
|
||||
#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];
|
||||
// Download Àü¿ë¹öÁ¯À» À§Çؼ Ãß°¡
|
||||
char szRCTSAddress[128];
|
||||
char szTransGuid[32];
|
||||
|
||||
char name_01[64];
|
||||
char phone_01[64];
|
||||
char mail_01[64];
|
||||
|
||||
char name_02[64];
|
||||
char phone_02[64];
|
||||
char mail_02[64];
|
||||
|
||||
char name_03[64];
|
||||
char phone_03[64];
|
||||
char mail_03[64];
|
||||
|
||||
int nWritePolicy;
|
||||
|
||||
bool bLogDir;
|
||||
bool bLogUpload;
|
||||
|
||||
} TRANPARAM_STRUCT, *PTRANPARAM_STRUCT;
|
||||
|
||||
typedef struct _TRANS_ADD_INFO {
|
||||
char szFileName[2048];
|
||||
char bFolder;
|
||||
}TADDINFO , *PTADDINFO;
|
||||
|
||||
enum TRANPARAM_ACTION {
|
||||
TPA_UPLOAD = 0,
|
||||
TPA_DOWNLOAD,
|
||||
};
|
||||
|
||||
#define EXECUTE_PARAM "$CONSOLE$"
|
||||
|
||||
#define WMU_TRANSFER_DLG_CLOSE (WM_USER + 777)
|
||||
@@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type='text/xsl' href='_UpgradeReport_Files/UpgradeReport.xslt'?><UpgradeLog>
|
||||
<Properties><Property Name="Solution" Value="ConsoleApp">
|
||||
</Property><Property Name="솔루션 파일" Value="E:\ICS from younghwan\01. Legacy\ICS_1_0\ConsoleApp(DN)\ConsoleApp.sln">
|
||||
</Property><Property Name="사용자 옵션 파일" Value="E:\ICS from younghwan\01. Legacy\ICS_1_0\ConsoleApp(DN)\ConsoleApp.suo">
|
||||
</Property><Property Name="Date" Value="2009년 7월 2일 목요일">
|
||||
</Property><Property Name="Time" Value="오후 19:21">
|
||||
</Property></Properties><Event ErrorLevel="0" Project="" Source="ConsoleApp.sln" Description="파일을 E:\ICS from younghwan\01. Legacy\ICS_1_0\ConsoleApp(DN)\ConsoleApp.sln.old(으)로 백업했습니다.">
|
||||
</Event><Event ErrorLevel="0" Project="" Source="ConsoleApp.suo" Description="파일을 E:\ICS from younghwan\01. Legacy\ICS_1_0\ConsoleApp(DN)\ConsoleApp.suo.old(으)로 백업했습니다.">
|
||||
</Event><Event ErrorLevel="0" Project="ConsoleApp" Source="ConsoleApp.vcproj" Description="Visual C++에서는 이제 C 및 C++ 라이브러리를 더욱 안전하게 사용할 수 있습니다. 이를 위해 새 함수 및 향상된 함수, 추가 검사 및 유효성 검사, 내부 디자인 변경 등이 제공됩니다. 이러한 라이브러리는 기본적으로 사용하도록 설정됩니다. 프로젝트를 빌드할 때 안전하지 않은 함수 또는 매개 변수에 대한 경고가 표시될 수 있습니다. 경고에서는 일반적으로 더 안전한 다른 코딩 스타일 또는 함수를 제안합니다. 코드를 보다 안전하게 만들려면 이러한 경고에 따라 수정하는 것이 좋습니다. 자세한 내용은 설명서에서 'CRT의 보안 향상' 및 '확인된 반복기'를 검색하면 볼 수 있습니다.">
|
||||
</Event><Event ErrorLevel="0" Project="ConsoleApp" Source="ConsoleApp.vcproj" Description="ISO 표준 C++와의 호환성을 높이기 위해 C/C++ 컴파일러의 기본 설정이 수정되었습니다. 변경된 내용에는 표준 C++에서 for 루프 범위 지정 및 네이티브 형식 wchar_t 지원이 포함됩니다. 이러한 변경 사항으로 인해 기존 코드를 컴파일하려면 코드를 수정하거나 기존 컴파일러 옵션을 변경해야 할 수 있습니다.">
|
||||
</Event><Event ErrorLevel="1" Project="ConsoleApp" Source="ConsoleApp.vcproj" Description="Visual C++ 프로젝트가 기본적으로 포함 Windows SxS 매니페스트를 만들어야 하는 요구 사항 때문에 매니페스트 도구를 사용한 빌드에서는 프로젝트의 매니페스트 파일이 자동으로 제외됩니다. 매니페스트 파일에 포함된 종속성 정보를 소스 코드에서 포함된 헤더 파일의 "#pragma comment(linker,"<insert dependency here>")"로 변환하는 것이 좋습니다. 프로젝트가 이미 리소스 파일(.rc)을 통해 RT_MANIFEST 리소스 섹션에 매니페스트를 포함하고 있으면 이 줄을 주석 처리해야 프로젝트가 올바로 빌드됩니다.">
|
||||
</Event><Event ErrorLevel="1" Project="ConsoleApp" Source="ConsoleApp.vcproj" Description="C++ 컴파일러 규칙이 변경되어 프로젝트를 오류 없이 빌드하려면 코드를 변경해야 합니다. C++ 컴파일러의 이전 버전에서는 멤버 함수 이름(예: MemberFunctionName)으로 멤버 함수의 포인터를 지정할 수 있었습니다. C++ 표준에서는 주소 연산자(예: &ClassName::MemberFunctionName)를 사용하는 정규화된 이름이 필요합니다. Windows Forms 디자이너에서 사용하는 폼 또는 컨트롤이 프로젝트에 포함되어 있는 경우 디자이너에서 생성한 코드는 이벤트 처리기에 사용된 대리자 구문의 비호환 구문을 사용하므로 InitializeComponent에 포함되어 있는 코드를 변경해야 합니다.">
|
||||
</Event><Event ErrorLevel="0" Project="ConsoleApp" Source="ConsoleApp.vcproj" Description="프로젝트 파일을 'E:\ICS from younghwan\01. Legacy\ICS_1_0\ConsoleApp(DN)\ConsoleApp.vcproj.7.10.old'(으)로 백업했습니다.">
|
||||
</Event><Event ErrorLevel="0" Project="ConsoleApp" Source="ConsoleApp.vcproj" Description="프로젝트가 업그레이드되었습니다.">
|
||||
</Event><Event ErrorLevel="3" Project="ConsoleApp" Source="ConsoleApp.vcproj" Description="Converted">
|
||||
</Event><Event ErrorLevel="0" Project="CommLib" Source="..\CommLib\CommLib.vcproj" Description="Visual C++에서는 이제 C 및 C++ 라이브러리를 더욱 안전하게 사용할 수 있습니다. 이를 위해 새 함수 및 향상된 함수, 추가 검사 및 유효성 검사, 내부 디자인 변경 등이 제공됩니다. 이러한 라이브러리는 기본적으로 사용하도록 설정됩니다. 프로젝트를 빌드할 때 안전하지 않은 함수 또는 매개 변수에 대한 경고가 표시될 수 있습니다. 경고에서는 일반적으로 더 안전한 다른 코딩 스타일 또는 함수를 제안합니다. 코드를 보다 안전하게 만들려면 이러한 경고에 따라 수정하는 것이 좋습니다. 자세한 내용은 설명서에서 'CRT의 보안 향상' 및 '확인된 반복기'를 검색하면 볼 수 있습니다.">
|
||||
</Event><Event ErrorLevel="0" Project="CommLib" Source="..\CommLib\CommLib.vcproj" Description="ISO 표준 C++와의 호환성을 높이기 위해 C/C++ 컴파일러의 기본 설정이 수정되었습니다. 변경된 내용에는 표준 C++에서 for 루프 범위 지정 및 네이티브 형식 wchar_t 지원이 포함됩니다. 이러한 변경 사항으로 인해 기존 코드를 컴파일하려면 코드를 수정하거나 기존 컴파일러 옵션을 변경해야 할 수 있습니다.">
|
||||
</Event><Event ErrorLevel="1" Project="CommLib" Source="..\CommLib\CommLib.vcproj" Description="Visual C++ 프로젝트가 기본적으로 포함 Windows SxS 매니페스트를 만들어야 하는 요구 사항 때문에 매니페스트 도구를 사용한 빌드에서는 프로젝트의 매니페스트 파일이 자동으로 제외됩니다. 매니페스트 파일에 포함된 종속성 정보를 소스 코드에서 포함된 헤더 파일의 "#pragma comment(linker,"<insert dependency here>")"로 변환하는 것이 좋습니다. 프로젝트가 이미 리소스 파일(.rc)을 통해 RT_MANIFEST 리소스 섹션에 매니페스트를 포함하고 있으면 이 줄을 주석 처리해야 프로젝트가 올바로 빌드됩니다.">
|
||||
</Event><Event ErrorLevel="1" Project="CommLib" Source="..\CommLib\CommLib.vcproj" Description="C++ 컴파일러 규칙이 변경되어 프로젝트를 오류 없이 빌드하려면 코드를 변경해야 합니다. C++ 컴파일러의 이전 버전에서는 멤버 함수 이름(예: MemberFunctionName)으로 멤버 함수의 포인터를 지정할 수 있었습니다. C++ 표준에서는 주소 연산자(예: &ClassName::MemberFunctionName)를 사용하는 정규화된 이름이 필요합니다. Windows Forms 디자이너에서 사용하는 폼 또는 컨트롤이 프로젝트에 포함되어 있는 경우 디자이너에서 생성한 코드는 이벤트 처리기에 사용된 대리자 구문의 비호환 구문을 사용하므로 InitializeComponent에 포함되어 있는 코드를 변경해야 합니다.">
|
||||
</Event><Event ErrorLevel="0" Project="CommLib" Source="..\CommLib\CommLib.vcproj" Description="프로젝트 파일을 'E:\ICS from younghwan\01. Legacy\ICS_1_0\CommLib\CommLib.vcproj.7.10.old'(으)로 백업했습니다.">
|
||||
</Event><Event ErrorLevel="0" Project="CommLib" Source="..\CommLib\CommLib.vcproj" Description="프로젝트가 업그레이드되었습니다.">
|
||||
</Event><Event ErrorLevel="3" Project="CommLib" Source="..\CommLib\CommLib.vcproj" Description="Converted">
|
||||
</Event><Event ErrorLevel="0" Project="ConsoleTransfer" Source="..\ConsoleTransfer(DN)\ConsoleTransfer.vcproj" Description="Visual C++에서는 이제 C 및 C++ 라이브러리를 더욱 안전하게 사용할 수 있습니다. 이를 위해 새 함수 및 향상된 함수, 추가 검사 및 유효성 검사, 내부 디자인 변경 등이 제공됩니다. 이러한 라이브러리는 기본적으로 사용하도록 설정됩니다. 프로젝트를 빌드할 때 안전하지 않은 함수 또는 매개 변수에 대한 경고가 표시될 수 있습니다. 경고에서는 일반적으로 더 안전한 다른 코딩 스타일 또는 함수를 제안합니다. 코드를 보다 안전하게 만들려면 이러한 경고에 따라 수정하는 것이 좋습니다. 자세한 내용은 설명서에서 'CRT의 보안 향상' 및 '확인된 반복기'를 검색하면 볼 수 있습니다.">
|
||||
</Event><Event ErrorLevel="0" Project="ConsoleTransfer" Source="..\ConsoleTransfer(DN)\ConsoleTransfer.vcproj" Description="ISO 표준 C++와의 호환성을 높이기 위해 C/C++ 컴파일러의 기본 설정이 수정되었습니다. 변경된 내용에는 표준 C++에서 for 루프 범위 지정 및 네이티브 형식 wchar_t 지원이 포함됩니다. 이러한 변경 사항으로 인해 기존 코드를 컴파일하려면 코드를 수정하거나 기존 컴파일러 옵션을 변경해야 할 수 있습니다.">
|
||||
</Event><Event ErrorLevel="1" Project="ConsoleTransfer" Source="..\ConsoleTransfer(DN)\ConsoleTransfer.vcproj" Description="Visual C++ 프로젝트가 기본적으로 포함 Windows SxS 매니페스트를 만들어야 하는 요구 사항 때문에 매니페스트 도구를 사용한 빌드에서는 프로젝트의 매니페스트 파일이 자동으로 제외됩니다. 매니페스트 파일에 포함된 종속성 정보를 소스 코드에서 포함된 헤더 파일의 "#pragma comment(linker,"<insert dependency here>")"로 변환하는 것이 좋습니다. 프로젝트가 이미 리소스 파일(.rc)을 통해 RT_MANIFEST 리소스 섹션에 매니페스트를 포함하고 있으면 이 줄을 주석 처리해야 프로젝트가 올바로 빌드됩니다.">
|
||||
</Event><Event ErrorLevel="1" Project="ConsoleTransfer" Source="..\ConsoleTransfer(DN)\ConsoleTransfer.vcproj" Description="C++ 컴파일러 규칙이 변경되어 프로젝트를 오류 없이 빌드하려면 코드를 변경해야 합니다. C++ 컴파일러의 이전 버전에서는 멤버 함수 이름(예: MemberFunctionName)으로 멤버 함수의 포인터를 지정할 수 있었습니다. C++ 표준에서는 주소 연산자(예: &ClassName::MemberFunctionName)를 사용하는 정규화된 이름이 필요합니다. Windows Forms 디자이너에서 사용하는 폼 또는 컨트롤이 프로젝트에 포함되어 있는 경우 디자이너에서 생성한 코드는 이벤트 처리기에 사용된 대리자 구문의 비호환 구문을 사용하므로 InitializeComponent에 포함되어 있는 코드를 변경해야 합니다.">
|
||||
</Event><Event ErrorLevel="0" Project="ConsoleTransfer" Source="..\ConsoleTransfer(DN)\ConsoleTransfer.vcproj" Description="프로젝트 파일을 'E:\ICS from younghwan\01. Legacy\ICS_1_0\ConsoleTransfer(DN)\ConsoleTransfer.vcproj.7.10.old'(으)로 백업했습니다.">
|
||||
</Event><Event ErrorLevel="0" Project="ConsoleTransfer" Source="..\ConsoleTransfer(DN)\ConsoleTransfer.vcproj" Description="프로젝트가 업그레이드되었습니다.">
|
||||
</Event><Event ErrorLevel="3" Project="ConsoleTransfer" Source="..\ConsoleTransfer(DN)\ConsoleTransfer.vcproj" Description="Converted">
|
||||
</Event><Event ErrorLevel="0" Project="ConsoleUpdater" Source="..\ConsoleUpdater(DN)\ConsoleUpdater.vcproj" Description="Visual C++에서는 이제 C 및 C++ 라이브러리를 더욱 안전하게 사용할 수 있습니다. 이를 위해 새 함수 및 향상된 함수, 추가 검사 및 유효성 검사, 내부 디자인 변경 등이 제공됩니다. 이러한 라이브러리는 기본적으로 사용하도록 설정됩니다. 프로젝트를 빌드할 때 안전하지 않은 함수 또는 매개 변수에 대한 경고가 표시될 수 있습니다. 경고에서는 일반적으로 더 안전한 다른 코딩 스타일 또는 함수를 제안합니다. 코드를 보다 안전하게 만들려면 이러한 경고에 따라 수정하는 것이 좋습니다. 자세한 내용은 설명서에서 'CRT의 보안 향상' 및 '확인된 반복기'를 검색하면 볼 수 있습니다.">
|
||||
</Event><Event ErrorLevel="0" Project="ConsoleUpdater" Source="..\ConsoleUpdater(DN)\ConsoleUpdater.vcproj" Description="ISO 표준 C++와의 호환성을 높이기 위해 C/C++ 컴파일러의 기본 설정이 수정되었습니다. 변경된 내용에는 표준 C++에서 for 루프 범위 지정 및 네이티브 형식 wchar_t 지원이 포함됩니다. 이러한 변경 사항으로 인해 기존 코드를 컴파일하려면 코드를 수정하거나 기존 컴파일러 옵션을 변경해야 할 수 있습니다.">
|
||||
</Event><Event ErrorLevel="1" Project="ConsoleUpdater" Source="..\ConsoleUpdater(DN)\ConsoleUpdater.vcproj" Description="Visual C++ 프로젝트가 기본적으로 포함 Windows SxS 매니페스트를 만들어야 하는 요구 사항 때문에 매니페스트 도구를 사용한 빌드에서는 프로젝트의 매니페스트 파일이 자동으로 제외됩니다. 매니페스트 파일에 포함된 종속성 정보를 소스 코드에서 포함된 헤더 파일의 "#pragma comment(linker,"<insert dependency here>")"로 변환하는 것이 좋습니다. 프로젝트가 이미 리소스 파일(.rc)을 통해 RT_MANIFEST 리소스 섹션에 매니페스트를 포함하고 있으면 이 줄을 주석 처리해야 프로젝트가 올바로 빌드됩니다.">
|
||||
</Event><Event ErrorLevel="1" Project="ConsoleUpdater" Source="..\ConsoleUpdater(DN)\ConsoleUpdater.vcproj" Description="C++ 컴파일러 규칙이 변경되어 프로젝트를 오류 없이 빌드하려면 코드를 변경해야 합니다. C++ 컴파일러의 이전 버전에서는 멤버 함수 이름(예: MemberFunctionName)으로 멤버 함수의 포인터를 지정할 수 있었습니다. C++ 표준에서는 주소 연산자(예: &ClassName::MemberFunctionName)를 사용하는 정규화된 이름이 필요합니다. Windows Forms 디자이너에서 사용하는 폼 또는 컨트롤이 프로젝트에 포함되어 있는 경우 디자이너에서 생성한 코드는 이벤트 처리기에 사용된 대리자 구문의 비호환 구문을 사용하므로 InitializeComponent에 포함되어 있는 코드를 변경해야 합니다.">
|
||||
</Event><Event ErrorLevel="0" Project="ConsoleUpdater" Source="..\ConsoleUpdater(DN)\ConsoleUpdater.vcproj" Description="프로젝트 파일을 'E:\ICS from younghwan\01. Legacy\ICS_1_0\ConsoleUpdater(DN)\ConsoleUpdater.vcproj.7.10.old'(으)로 백업했습니다.">
|
||||
</Event><Event ErrorLevel="0" Project="ConsoleUpdater" Source="..\ConsoleUpdater(DN)\ConsoleUpdater.vcproj" Description="프로젝트가 업그레이드되었습니다.">
|
||||
</Event><Event ErrorLevel="3" Project="ConsoleUpdater" Source="..\ConsoleUpdater(DN)\ConsoleUpdater.vcproj" Description="Converted">
|
||||
</Event><Event ErrorLevel="0" Project="" Source="ConsoleApp.sln" Description="솔루션을 변환했습니다.">
|
||||
</Event><Event ErrorLevel="3" Project="" Source="ConsoleApp.sln" Description="Converted">
|
||||
</Event></UpgradeLog>
|
||||
@@ -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();
|
||||
};
|
||||
@@ -0,0 +1,283 @@
|
||||
// WebDlg.cpp : 구현 파일입니다.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ConsoleApp.h"
|
||||
#include "WebDlg.h"
|
||||
#include ".\webdlg.h"
|
||||
#include "Mshtml.h"
|
||||
|
||||
// CWebDlg 대화 상자입니다.
|
||||
LPDISPATCH glpDisp = NULL; // global LPDISPATCH, can also
|
||||
// be of class scope
|
||||
|
||||
|
||||
|
||||
IMPLEMENT_DYNAMIC(CWebDlg, CDialog)
|
||||
CWebDlg::CWebDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CWebDlg::IDD, pParent)
|
||||
{
|
||||
}
|
||||
|
||||
CWebDlg::~CWebDlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CWebDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_EXPLORER1, m_web);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CWebDlg, CDialog)
|
||||
ON_WM_CLOSE()
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CWebDlg 메시지 처리기입니다.
|
||||
BEGIN_EVENTSINK_MAP(CWebDlg, CDialog)
|
||||
ON_EVENT(CWebDlg, IDC_EXPLORER1, 259, DocumentCompleteExplorer1, VTS_DISPATCH VTS_PVARIANT)
|
||||
ON_EVENT(CWebDlg, IDC_EXPLORER1, 251, NewWindow2Explorer1, VTS_PDISPATCH VTS_PBOOL)
|
||||
ON_EVENT(CWebDlg, IDC_EXPLORER1, 263, WindowClosingExplorer1, VTS_BOOL VTS_PBOOL)
|
||||
ON_EVENT(CWebDlg, IDC_EXPLORER1, 252, NavigateComplete2Explorer1, VTS_DISPATCH VTS_PVARIANT)
|
||||
END_EVENTSINK_MAP()
|
||||
|
||||
void CWebDlg::DocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT* URL)
|
||||
{
|
||||
long width;
|
||||
long height;
|
||||
|
||||
if (m_nType == 5)
|
||||
{
|
||||
long width = 627;
|
||||
long height = 675;
|
||||
|
||||
int cx = GetSystemMetrics(SM_CXSCREEN);
|
||||
int cy = GetSystemMetrics(SM_CYSCREEN);
|
||||
|
||||
m_web.MoveWindow(0, 0, width, height, TRUE);
|
||||
MoveWindow(cx/2 - width /2,cy /2 - height/2,width, height);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// if (glpDisp && glpDisp == pDisp)
|
||||
{
|
||||
// if the LPDISPATCH are same, that means
|
||||
// it is the final DocumentComplete. Reset glpDisp
|
||||
TRACE("Document is done downloading");
|
||||
glpDisp = NULL;
|
||||
|
||||
IDispatch* pDocDispatch = NULL ;
|
||||
pDocDispatch = m_web.get_Document();
|
||||
|
||||
IHTMLDocument2* pHTMLDoc = NULL;
|
||||
IHTMLTextContainer *pText = NULL;
|
||||
|
||||
pDocDispatch->QueryInterface(IID_IHTMLDocument2,(void**)&pHTMLDoc);
|
||||
|
||||
IHTMLElement* pHTEMLElement = NULL;
|
||||
IHTMLElement *lpParentElm;
|
||||
|
||||
pHTMLDoc->get_body(&pHTEMLElement);
|
||||
|
||||
pHTEMLElement->get_parentElement(&lpParentElm);
|
||||
BSTR bstr;
|
||||
lpParentElm->get_outerHTML(&bstr);
|
||||
|
||||
CString sData;
|
||||
sData = bstr;
|
||||
|
||||
int curPos= 0;
|
||||
|
||||
CString sTemp = sData.Tokenize("$%^&",curPos);
|
||||
|
||||
if(!sTemp.IsEmpty())
|
||||
{
|
||||
sTemp= sData.Tokenize("$%^&",curPos);
|
||||
|
||||
if(!sTemp.IsEmpty())
|
||||
{
|
||||
int iPos=0;
|
||||
width = atol(sTemp.Tokenize(",",iPos));
|
||||
height = atol(sTemp.Tokenize(",",iPos));
|
||||
|
||||
int cx = GetSystemMetrics(SM_CXSCREEN);
|
||||
int cy = GetSystemMetrics(SM_CYSCREEN);
|
||||
|
||||
if(width != 0 && height != 0)
|
||||
{
|
||||
m_web.MoveWindow(0, 0, width, height, TRUE);
|
||||
MoveWindow(cx/2 - width /2,cy /2 - height/2,width, height);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
SysFreeString (bstr);
|
||||
// CComQIPtr<IHTMLElement2> element = pHTEMLElement;
|
||||
|
||||
// if(element)
|
||||
// {
|
||||
// element->get_clientHeight(&height);
|
||||
// element->get_clientWidth(&width);
|
||||
|
||||
// int cx = GetSystemMetrics(SM_CXSCREEN);
|
||||
// int cy = GetSystemMetrics(SM_CYSCREEN);
|
||||
|
||||
// m_web.MoveWindow(0, 0, width, height, TRUE);
|
||||
// MoveWindow(cx/2 - width /2,cy /2 - height/2,width, height);
|
||||
// }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void CWebDlg::NewWindow2Explorer1(LPDISPATCH* ppDisp, BOOL* Cancel)
|
||||
{
|
||||
m_pWebDlg = new CWebDlg();
|
||||
m_pWebDlg->Create(IDD_WEB_DLG,GetDesktopWindow());
|
||||
m_pWebDlg->m_web.put_RegisterAsBrowser(TRUE);
|
||||
*ppDisp = m_pWebDlg->m_web.get_Application();
|
||||
|
||||
CString strTitle;
|
||||
GetWindowText(strTitle);
|
||||
m_pWebDlg->SetWindowText(strTitle);
|
||||
m_pWebDlg->ShowWindow(TRUE);
|
||||
}
|
||||
|
||||
BOOL CWebDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
|
||||
}
|
||||
|
||||
int CWebDlg::GetPage(WEBDLG_TYPE nFlag,CString sCP,CString sUser,CString strPath)
|
||||
{
|
||||
CString strURL;
|
||||
CString strTitle;
|
||||
CString sData;
|
||||
CString strHeader = _T("Content-Type: application/x-www-form-urlencoded\r\n");
|
||||
|
||||
m_nType = nFlag;
|
||||
|
||||
switch(nFlag)
|
||||
{
|
||||
case MAN_TRAFFIC:
|
||||
strURL = URL_MAN_TRAFFIC;
|
||||
strTitle = "컨텐츠 통계";
|
||||
sData.Format("p=%s!%s",sCP,sUser);
|
||||
break;
|
||||
case MAN_FOLDER:
|
||||
strURL = URL_MAN_FOLDER;
|
||||
strTitle = "권한 관리";
|
||||
sData.Format("p=%s!%s",sCP,sUser);
|
||||
break;
|
||||
case MAN_USER:
|
||||
strURL = URL_MAN_USER;
|
||||
strTitle = "사용자 관리";
|
||||
sData.Format("p=%s!%s",sCP,sUser);
|
||||
break;
|
||||
case MAN_TOP10:
|
||||
strURL = URL_MAN_TOP10;
|
||||
strTitle = "이미지 호스팅 Top10";
|
||||
sData.Format("p=%s!%s",sCP,sUser);
|
||||
break;
|
||||
case MAN_FILE_STAT:
|
||||
strURL = URL_MAN_FILE_STAT;
|
||||
strTitle = "파일 통계";
|
||||
sData.Format("p=%s!%s",sCP,strPath);
|
||||
break;
|
||||
case MAN_FILE_PRO:
|
||||
strURL = URL_MAN_FILE_PRO;
|
||||
strTitle = "파일 속성";
|
||||
sData.Format("p=%s!%s",sCP,strPath);
|
||||
break;
|
||||
case MAN_NOTICE:
|
||||
strURL = URL_MAN_NOTICE;
|
||||
strTitle = "공지 사항";
|
||||
sData.Format("p=%s!%s",sCP,sUser);
|
||||
break;
|
||||
case MAN_COUPON:
|
||||
strURL = URL_MAN_COUPON;
|
||||
strTitle = "쿠폰정보";
|
||||
sData.Format("p=%s",sCP);
|
||||
break;
|
||||
case MAN_TRAFIC_STAT:
|
||||
strURL = URL_MAN_TRAFIC_STAT;
|
||||
strTitle = "트래픽 이용내역";
|
||||
sData.Format("p=%s",sCP);
|
||||
break;
|
||||
case MAN_FINDID:
|
||||
strURL = URL_MAN_FINDID;
|
||||
strTitle = "아이디/비밀번호찾기";
|
||||
break;
|
||||
case MAN_DISTINFO:
|
||||
strURL = URL_MAN_DISTINFO;
|
||||
strTitle = "배포현황조회";
|
||||
sData.Format("p=%s!%s!%s",sCP,sUser,strPath);
|
||||
break;
|
||||
}
|
||||
|
||||
SetWindowText(strTitle);
|
||||
|
||||
VARIANT vHeader;
|
||||
vHeader.vt = VT_BSTR;
|
||||
vHeader.bstrVal = strHeader.AllocSysString();
|
||||
|
||||
SAFEARRAY FAR *sfPost = NULL;
|
||||
SAFEARRAYBOUND bound;
|
||||
bound.cElements = sData.GetLength();
|
||||
bound.lLbound = 0;
|
||||
sfPost = SafeArrayCreate(VT_UI1,1,&bound);
|
||||
|
||||
for (long lIndex = 0; lIndex < (signed)bound.cElements;lIndex++)
|
||||
{
|
||||
SafeArrayPutElement(sfPost,&lIndex, sData.GetBuffer(bound.cElements) + lIndex);
|
||||
}
|
||||
|
||||
sData.ReleaseBuffer();
|
||||
|
||||
VARIANT vaPost;
|
||||
vaPost.vt = VT_ARRAY;
|
||||
vaPost.parray = sfPost;
|
||||
|
||||
m_web.Navigate(strURL, 0 , NULL, &vaPost,&vHeader);
|
||||
// m_web.Navigate(strURL, 0 , NULL, NULL,&vHeader);
|
||||
|
||||
SafeArrayDestroy(sfPost);
|
||||
SysFreeString(vHeader.bstrVal);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CWebDlg::PostNcDestroy()
|
||||
{
|
||||
CDialog::PostNcDestroy();
|
||||
delete this;
|
||||
}
|
||||
|
||||
void CWebDlg::OnClose()
|
||||
{
|
||||
CDialog::OnClose();
|
||||
}
|
||||
|
||||
void CWebDlg::OnCancel()
|
||||
{
|
||||
DestroyWindow();
|
||||
}
|
||||
|
||||
void CWebDlg::WindowClosingExplorer1(BOOL IsChildWindow, BOOL* Cancel)
|
||||
{
|
||||
PostMessage(WM_CLOSE,0,0);
|
||||
// TODO: 여기에 메시지 처리기 코드를 추가합니다.
|
||||
}
|
||||
|
||||
void CWebDlg::NavigateComplete2Explorer1(LPDISPATCH pDisp, VARIANT* URL)
|
||||
{
|
||||
// Check if glpDisp is NULL. If NULL, that means it is
|
||||
// the top level NavigateComplete2. Save the LPDISPATCH
|
||||
if (!glpDisp)
|
||||
glpDisp = pDisp;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
#pragma once
|
||||
#include "explorer1.h"
|
||||
|
||||
#define URL_MAN_FOLDER "https://kpm.ktspeedway.co.kr/cp_manage/main_cp_folder_auth.php"
|
||||
#define URL_MAN_USER "https://kpm.ktspeedway.co.kr/cp_manage/cp_member_list.php"
|
||||
#define URL_MAN_TRAFFIC "https://kpm.ktspeedway.co.kr/traffic_manage/traffic_main.php?info_type=day"
|
||||
#define URL_MAN_TOP10 "https://kpm.ktspeedway.co.kr/traffic_manage/chart_top10.php?info_type=r1"
|
||||
#define URL_MAN_FILE_STAT "https://kpm.ktspeedway.co.kr/traffic_manage/file_detail.php?p=%s"
|
||||
#define URL_MAN_FILE_PRO "http://kpm.ktspeedway.co.kr/traffic_manage/file_property.php?p=%s"
|
||||
#define URL_MAN_NOTICE "https://kpm.ktspeedway.co.kr/notice/view_content.php?p=%s"
|
||||
#define URL_MAN_COUPON "https://kpm.ktspeedway.co.kr/traffic_manage/coupon_history.php?p=%s"
|
||||
#define URL_MAN_TRAFIC_STAT "http://kpm.ktspeedway.co.kr/traffic_manage/traffic_stats.php?p=%s"
|
||||
#define URL_MAN_FINDID "http://kpm.ktspeedway.co.kr/cp_manage/find_info.php"
|
||||
|
||||
#define URL_MAN_DISTINFO "http://www.ktsystemhosting.com:8080/sp/manage/manage_server_list.html"
|
||||
|
||||
// CWebDlg 대화 상자입니다.
|
||||
enum WEBDLG_TYPE {
|
||||
MAN_TRAFFIC = 0,
|
||||
MAN_FOLDER,
|
||||
MAN_USER,
|
||||
MAN_TOP10,
|
||||
MAN_FILE_STAT,
|
||||
MAN_FILE_PRO,
|
||||
MAN_NOTICE,
|
||||
MAN_COUPON,
|
||||
MAN_TRAFIC_STAT,
|
||||
MAN_FINDID,
|
||||
MAN_DISTINFO
|
||||
};
|
||||
|
||||
class CWebDlg : public CDialog
|
||||
{
|
||||
DECLARE_DYNAMIC(CWebDlg)
|
||||
|
||||
public:
|
||||
CWebDlg(CWnd* pParent = NULL); // 표준 생성자입니다.
|
||||
virtual ~CWebDlg();
|
||||
|
||||
// 대화 상자 데이터입니다.
|
||||
enum { IDD = IDD_WEB_DLG };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
public:
|
||||
CExplorer1 m_web;
|
||||
CWebDlg* m_pWebDlg;
|
||||
int m_nType;
|
||||
DECLARE_EVENTSINK_MAP()
|
||||
void DocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT* URL);
|
||||
void NewWindow2Explorer1(LPDISPATCH* ppDisp, BOOL* Cancel);
|
||||
virtual BOOL OnInitDialog();
|
||||
public:
|
||||
int GetPage(WEBDLG_TYPE nFlag,CString sCP,CString sUser,CString strPath=_T(""));
|
||||
protected:
|
||||
virtual void PostNcDestroy();
|
||||
public:
|
||||
afx_msg void OnClose();
|
||||
protected:
|
||||
virtual void OnCancel();
|
||||
public:
|
||||
void WindowClosingExplorer1(BOOL IsChildWindow, BOOL* Cancel);
|
||||
void NavigateComplete2Explorer1(LPDISPATCH pDisp, VARIANT* URL);
|
||||
};
|
||||
@@ -0,0 +1,809 @@
|
||||
#include "stdafx.h"
|
||||
#include "WebUtil.h"
|
||||
#include "Wininet.h"
|
||||
#include "atlenc.h"
|
||||
#include "../CommLib/commlib.h"
|
||||
|
||||
#pragma comment( lib, "Wininet.lib" )
|
||||
#import <msxml.dll>
|
||||
#include <comutil.h>
|
||||
#include ".\webutil.h"
|
||||
|
||||
CWebUtil::CWebUtil()
|
||||
{
|
||||
}
|
||||
|
||||
CWebUtil::~CWebUtil()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
int CWebUtil::kp_process_errors(int nError,MODIFY_TYPE Type)
|
||||
{
|
||||
switch(nError)
|
||||
{
|
||||
case UNDEFINED_ERROR: // 알수 없는 오류
|
||||
AfxMessageBox(_T("메타서버 오류 : 알수없는 오류"));
|
||||
break;
|
||||
case NOADMIT_SET_FAIL: // 무인증 요청 실패
|
||||
AfxMessageBox(_T("메타서버 오류 : 무인증 요청 실패"));
|
||||
break;
|
||||
case ADMIT_SET_FAIL: // 무인증 해제 실패
|
||||
AfxMessageBox(_T("메타서버 오류 : 무인증 해제 실패"));
|
||||
break;
|
||||
case LOGIN_FAIL_NOID: // 로그인 실패 : 아이디 없음
|
||||
AfxMessageBox(_T("메타서버 오류 : 해당 아이디가 존재하지 않습니다."));
|
||||
break;
|
||||
case LOGIN_FAIL_NOPASSWD: // 로그인 실패 : 패스워드 틀림
|
||||
AfxMessageBox(_T("메타서버 오류 : 비밀번호가 잘못 되었습니다."));
|
||||
break;
|
||||
case CANNOT_WRITE: // 파일 업로드 권한 없음
|
||||
AfxMessageBox(_T("메타서버 오류 : 파일 업로드 권한 없음"));
|
||||
break;
|
||||
case NO_QUOTA: // 파일 업로드 용량 없음
|
||||
AfxMessageBox(_T("메타서버 오류 : 파일 업로드 용량 없음"));
|
||||
break;
|
||||
case TARGET_FILE_EXIST: // 파일 수정 불가 : 대상 파일이 이미 존재함
|
||||
AfxMessageBox(_T("메타서버 오류 : 파일 수정 불가 : 대상 파일이 이미 존재함"));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return nError;
|
||||
}
|
||||
|
||||
|
||||
PCLFILE_STRUCTEX CWebUtil::kp_parse_file_list_struct(CString sData, unsigned int *count)
|
||||
{
|
||||
PCLFILE_STRUCTEX pclf = NULL;
|
||||
|
||||
MSXML::IXMLDOMDocumentPtr pDoc;
|
||||
|
||||
try
|
||||
{
|
||||
pDoc.CreateInstance(__uuidof(DOMDocument));
|
||||
HRESULT hr = pDoc->loadXML(_bstr_t(sData));
|
||||
|
||||
if(VARIANT_TRUE == hr)
|
||||
{
|
||||
MSXML::IXMLDOMElementPtr pRecordSetInfo;
|
||||
MSXML::IXMLDOMNodeListPtr pRecordSet;
|
||||
MSXML::IXMLDOMElementPtr pRecordInfo;
|
||||
MSXML::IXMLDOMNodeListPtr pFieldList;
|
||||
MSXML::IXMLDOMElementPtr pFieldInfo;
|
||||
|
||||
CString szRecordCount = _T("0");
|
||||
|
||||
pRecordSetInfo = pDoc->selectSingleNode("//filelist");
|
||||
if(pRecordSetInfo)
|
||||
pRecordSet = pRecordSetInfo->childNodes;
|
||||
|
||||
szRecordCount = pRecordSetInfo->getAttribute("count");
|
||||
int nCount = atol(kp_get_unbase64_data(szRecordCount));
|
||||
|
||||
if (nCount ==0)
|
||||
return pclf;
|
||||
|
||||
pclf = new CLFILE_STRUCTEX[nCount];
|
||||
|
||||
*count = nCount;
|
||||
|
||||
for(int i = 0; i <= pRecordSet->length; i++)
|
||||
{
|
||||
pRecordInfo = pRecordSet->item[i];
|
||||
if(NULL == pRecordInfo) continue;
|
||||
|
||||
pFieldList = pRecordInfo->childNodes;
|
||||
if(NULL == pFieldList) continue;
|
||||
|
||||
CString szName = kp_get_decoded_data(kp_get_unbase64_data(pRecordInfo->getAttribute("name")));
|
||||
CString szFlag = kp_get_decoded_data(kp_get_unbase64_data(pRecordInfo->getAttribute("flag")));
|
||||
|
||||
if(szFlag[0] == 'D')
|
||||
pclf[i].attr = CLFILEATTR_FOLDER;
|
||||
else
|
||||
pclf[i].attr = 0;
|
||||
|
||||
strcpy(pclf[i].path,szName);
|
||||
|
||||
for(int j = 0; j < pFieldList->length; j++)
|
||||
{
|
||||
pFieldInfo = pFieldList->item[j];
|
||||
|
||||
if(NULL == pFieldInfo) break;
|
||||
|
||||
CString szNodeName = pFieldInfo->nodeName;
|
||||
CString szTemp = pFieldInfo->text;
|
||||
CString szValue = kp_get_decoded_data(kp_get_unbase64_data(szTemp));
|
||||
|
||||
if (szNodeName == "size")
|
||||
pclf[i].size = _atoi64(szValue);
|
||||
|
||||
else if (szNodeName == "updateip")
|
||||
strcpy(pclf[i].ip,szValue);
|
||||
else if (szNodeName == "updatetime")
|
||||
{
|
||||
CTime fTime((time_t)atol(szValue));
|
||||
struct tm* osTime;
|
||||
|
||||
osTime = fTime.GetLocalTm(NULL);
|
||||
|
||||
sprintf(pclf[i].lastModified,"%04d-%02d-%02d %s %02d:%02d:%02d",
|
||||
osTime->tm_year+1900,
|
||||
osTime->tm_mon +1,
|
||||
osTime->tm_mday,
|
||||
osTime->tm_hour > 12 ? "오후" : "오전",
|
||||
osTime->tm_hour > 12 ? osTime->tm_hour - 12 : osTime->tm_hour,
|
||||
osTime->tm_min,
|
||||
osTime->tm_sec);
|
||||
}
|
||||
else if (szNodeName == "hit_today")
|
||||
pclf[i].hit_today = atol(szValue);
|
||||
else if (szNodeName == "hit_yesterday")
|
||||
pclf[i].hit_yesterday = atol(szValue);
|
||||
else if (szNodeName == "hit_avr")
|
||||
pclf[i].hit_avr = atol(szValue);
|
||||
else if (szNodeName == "per_success")
|
||||
pclf[i].per_success = atol(szValue);
|
||||
else if (szNodeName == "total_size")
|
||||
pclf[i].total_size = _atoi64(szValue);
|
||||
else if (szNodeName == "used_size")
|
||||
pclf[i].used_size = _atoi64(szValue);
|
||||
else if (szNodeName == "traffic")
|
||||
pclf[i].traffic = _atoi64(szValue);
|
||||
else if (szNodeName == "today_traffic")
|
||||
pclf[i].today_traffic = _atoi64(szValue);
|
||||
else if (szNodeName == "is_service")
|
||||
strncpy(pclf[i].service_status, szValue , 2);
|
||||
else if (szNodeName == "backup")
|
||||
strcpy(pclf[i].backup_path, szValue);
|
||||
// strcpy(pclf[i].backup_path, "/TEMP/szValue/");
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(CException* )
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return pclf;
|
||||
}
|
||||
|
||||
PCLFILE_STRUCTEX CWebUtil::kp_get_file_list(const char *path, unsigned int depth, unsigned int *count)
|
||||
{
|
||||
CString strTemp;
|
||||
CString sModNum;
|
||||
CString strPath;
|
||||
|
||||
if (path[0] == 0x00)
|
||||
strPath.Format(_T("/"));
|
||||
else
|
||||
strPath.Format(_T("%s"), path);
|
||||
|
||||
switch(depth)
|
||||
{
|
||||
case 2: // 서비스정보
|
||||
sModNum = _T("10");
|
||||
break;
|
||||
case 1: // 현재 레벨의 파일 리스트
|
||||
sModNum = _T("3");
|
||||
break;
|
||||
case 0: // 자기 자신 정보
|
||||
sModNum = _T("9");
|
||||
break;
|
||||
}
|
||||
|
||||
strTemp = kp_get_crypted_data(sModNum) + DELIM +
|
||||
kp_get_crypted_data(m_cpid) + DELIM +
|
||||
kp_get_crypted_data(m_loginid) + DELIM +
|
||||
kp_get_crypted_data(strPath);
|
||||
|
||||
|
||||
TRACE(_T("\nkp_get_file_list : %s | %s | %s \n"),m_cpid,m_loginid,strPath);
|
||||
|
||||
strTemp = kp_recv_data_http(_T("p=") + kp_get_base64_data(strTemp),true);
|
||||
|
||||
strTemp.Trim();
|
||||
|
||||
// strTemp = kp_get_unbase64_data(strTemp);
|
||||
|
||||
return kp_parse_file_list_struct(strTemp,count);
|
||||
}
|
||||
|
||||
void CWebUtil::kp_free_file_list(PCLFILE_STRUCTEX pclf)
|
||||
{
|
||||
if (!pclf)
|
||||
return;
|
||||
|
||||
delete []pclf;
|
||||
}
|
||||
|
||||
int CWebUtil::kp_init(CString cp_id,CString cp_user_id, CString pass)
|
||||
{
|
||||
m_cpid = cp_id;
|
||||
m_loginid = cp_user_id;
|
||||
m_pass = pass;
|
||||
|
||||
return KP_ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
CString CWebUtil::kp_get_crypted_data(CString strData)
|
||||
{
|
||||
return kp_get_base64_data(kp_get_encoded_data(strData));
|
||||
}
|
||||
|
||||
int CWebUtil::kp_set_annoy(CString sPath,BOOL bSet)
|
||||
{
|
||||
CString strTemp;
|
||||
|
||||
strTemp = kp_get_crypted_data(_T("1")) + DELIM +
|
||||
kp_get_crypted_data(sPath) + DELIM +
|
||||
kp_get_crypted_data(bSet ? _T("1") : _T("0"));
|
||||
/*
|
||||
strTemp.Format(_T("%s%s%s%s%s"),
|
||||
kp_get_crypted_data(_T("1")),DELIM,
|
||||
kp_get_crypted_data(sPath),DELIM,
|
||||
kp_get_crypted_data(bSet ? _T("1") : _T("0")));
|
||||
*/
|
||||
TRACE(_T("\nkp_set_annoy : %s | %s\n"),sPath,bSet ? _T("1") : _T("0"));
|
||||
|
||||
strTemp = kp_recv_data_http(_T("p=") + kp_get_base64_data(strTemp),true);
|
||||
|
||||
strTemp.Trim();
|
||||
|
||||
return kp_process_errors(atol(strTemp));
|
||||
}
|
||||
|
||||
int CWebUtil::kp_chk_login(BOOL bisNetdrive)
|
||||
{
|
||||
CString strTemp;
|
||||
|
||||
strTemp = kp_get_crypted_data(_T("2")) + DELIM +
|
||||
kp_get_crypted_data(m_cpid) + DELIM +
|
||||
kp_get_crypted_data(m_loginid) + DELIM +
|
||||
kp_get_crypted_data(m_pass) + DELIM +
|
||||
kp_get_crypted_data(bisNetdrive ? _T("1") : _T(""));
|
||||
|
||||
// if(!bisNetdrive)
|
||||
// strTemp += kp_get_crypted_data(_T("1");
|
||||
|
||||
TRACE(_T("\nkp_chk_login : %s | %s | %s\n"),m_cpid,m_loginid,m_pass);
|
||||
|
||||
strTemp = kp_recv_data_http(_T("p=") + kp_get_base64_data(strTemp),true);
|
||||
|
||||
strTemp.Trim();
|
||||
|
||||
return kp_process_errors(atol(strTemp));
|
||||
}
|
||||
|
||||
int CWebUtil::kp_chk_upload(CString sPath,CString sFileName,LARGE_INTEGER nSize,BOOL bDir)
|
||||
{
|
||||
CString strTemp;
|
||||
CString strSize;
|
||||
|
||||
strSize.Format(_T("%I64d"),nSize.QuadPart);
|
||||
|
||||
strTemp = kp_get_crypted_data(_T("4")) + DELIM +
|
||||
kp_get_crypted_data(m_cpid) + DELIM +
|
||||
kp_get_crypted_data(m_loginid) + DELIM +
|
||||
kp_get_crypted_data(sPath) + DELIM +
|
||||
kp_get_crypted_data(sFileName) + DELIM +
|
||||
kp_get_crypted_data(bDir?_T("D"):_T("F")) + DELIM +
|
||||
kp_get_crypted_data(strSize);
|
||||
/*
|
||||
strTemp.Format(_T("%s%s%s%s%s%s%s%s%s%s%s%s%s"),
|
||||
kp_get_crypted_data(_T("4")),DELIM,
|
||||
kp_get_crypted_data(m_cpid),DELIM,
|
||||
kp_get_crypted_data(m_loginid),DELIM,
|
||||
kp_get_crypted_data(sPath),DELIM,
|
||||
kp_get_crypted_data(sFileName),DELIM,
|
||||
kp_get_crypted_data(bDir?_T("D"):_T("F")),DELIM,
|
||||
kp_get_crypted_data(strSize));
|
||||
*/
|
||||
TRACE(_T("\nkp_chk_upload : %s | %s | %s | %s | %s\n"),m_cpid,m_loginid,sPath,sFileName,strSize);
|
||||
|
||||
strTemp = kp_recv_data_http(_T("p=") + kp_get_base64_data(strTemp),true);
|
||||
|
||||
strTemp.Trim();
|
||||
return kp_process_errors(atol(strTemp));
|
||||
}
|
||||
|
||||
int CWebUtil::kp_set_start_upload(CString sPath, CString sFileName, LARGE_INTEGER nSize,BOOL bIsDir, BOOL bOverWrite)
|
||||
{
|
||||
CString strTemp;
|
||||
CString strSize;
|
||||
|
||||
strSize.Format(_T("%I64d"),nSize.QuadPart);
|
||||
|
||||
strTemp = kp_get_crypted_data(_T("5")) + DELIM +
|
||||
kp_get_crypted_data(m_cpid) + DELIM +
|
||||
kp_get_crypted_data(m_loginid) + DELIM +
|
||||
kp_get_crypted_data(sPath) + DELIM +
|
||||
kp_get_crypted_data(sFileName) + DELIM +
|
||||
kp_get_crypted_data(strSize) + DELIM +
|
||||
kp_get_crypted_data(bIsDir?_T("D"):_T("F")) + DELIM +
|
||||
kp_get_crypted_data(bOverWrite?_T("1"):_T("0"));
|
||||
/*
|
||||
strTemp.Format(_T("%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"),
|
||||
kp_get_crypted_data(_T("5")),DELIM,
|
||||
kp_get_crypted_data(m_cpid),DELIM,
|
||||
kp_get_crypted_data(m_loginid),DELIM,
|
||||
kp_get_crypted_data(sPath),DELIM,
|
||||
kp_get_crypted_data(sFileName),DELIM,
|
||||
kp_get_crypted_data(strSize),DELIM,
|
||||
kp_get_crypted_data(bIsDir?_T("D"):_T("F")),DELIM,
|
||||
kp_get_crypted_data(bOverWrite?_T("1"):_T("0"))
|
||||
);
|
||||
*/
|
||||
TRACE(_T("\nkp_set_start_upload : %s | %s | %s | %s | %s | %s | %s\n"),
|
||||
m_cpid,m_loginid,sPath,sFileName,strSize,bIsDir?_T("D"):_T("F"),bOverWrite?_T("1"):_T("0"));
|
||||
|
||||
strTemp = kp_recv_data_http(_T("p=") + kp_get_base64_data(strTemp),true);
|
||||
|
||||
strTemp.Trim();
|
||||
return kp_process_errors(atol(strTemp));
|
||||
}
|
||||
|
||||
int CWebUtil::kp_set_end_upload(CString sPath, CString sFileName, LARGE_INTEGER nSize,BOOL bSuccess)
|
||||
{
|
||||
CString strTemp;
|
||||
CString strSize;
|
||||
|
||||
strSize.Format(_T("%I64d"),nSize.QuadPart);
|
||||
|
||||
strTemp = kp_get_crypted_data(_T("6")) + DELIM +
|
||||
kp_get_crypted_data(m_cpid) + DELIM +
|
||||
kp_get_crypted_data(m_loginid) + DELIM +
|
||||
kp_get_crypted_data(sPath) + DELIM +
|
||||
kp_get_crypted_data(sFileName) + DELIM +
|
||||
kp_get_crypted_data(strSize) + DELIM +
|
||||
kp_get_crypted_data(bSuccess?_T("1"):_T("0"));
|
||||
/*
|
||||
strTemp.Format(_T("%s%s%s%s%s%s%s%s%s%s%s%s%s"),
|
||||
kp_get_crypted_data(_T("6")),DELIM,
|
||||
kp_get_crypted_data(m_cpid),DELIM,
|
||||
kp_get_crypted_data(m_loginid),DELIM,
|
||||
kp_get_crypted_data(sPath),DELIM,
|
||||
kp_get_crypted_data(sFileName),DELIM,
|
||||
kp_get_crypted_data(strSize),DELIM,
|
||||
kp_get_crypted_data(bSuccess?_T("1"):_T("0")));
|
||||
*/
|
||||
TRACE(_T("\nkp_set_end_upload : %s | %s | %s | %s | %s\n"),
|
||||
m_cpid,m_loginid,sPath,sFileName,strSize);
|
||||
|
||||
strTemp = kp_recv_data_http(_T("p=") + kp_get_base64_data(strTemp),true);
|
||||
|
||||
strTemp.Trim();
|
||||
return kp_process_errors(atol(strTemp));
|
||||
}
|
||||
|
||||
int CWebUtil::kp_set_start_modify(CString sSPath, CString sSFileName, LARGE_INTEGER nSSize,
|
||||
CString sDPath, CString sDFileName, LARGE_INTEGER nDSize, MODIFY_TYPE Type)
|
||||
{
|
||||
CString strTemp;
|
||||
CString strSSize;
|
||||
CString strDSize;
|
||||
CString sFlag;
|
||||
|
||||
strSSize.Format(_T("%I64d"),nSSize.QuadPart);
|
||||
strDSize.Format(_T("%I64d"),nDSize.QuadPart);
|
||||
|
||||
strTemp = kp_get_crypted_data(_T("7")) + DELIM +
|
||||
kp_get_crypted_data(m_cpid) + DELIM +
|
||||
kp_get_crypted_data(m_loginid) + DELIM +
|
||||
kp_get_crypted_data(sSPath) + DELIM +
|
||||
kp_get_crypted_data(sSFileName) + DELIM +
|
||||
kp_get_crypted_data(strSSize) + DELIM +
|
||||
kp_get_crypted_data(sDPath) + DELIM +
|
||||
kp_get_crypted_data(sDFileName) + DELIM +
|
||||
kp_get_crypted_data(strDSize) + DELIM +
|
||||
kp_get_crypted_data(modify_types[Type]);
|
||||
/*
|
||||
strTemp.Format(_T("%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"),
|
||||
kp_get_crypted_data(_T("7")),DELIM,
|
||||
kp_get_crypted_data(m_cpid),DELIM,
|
||||
kp_get_crypted_data(m_loginid),DELIM,
|
||||
kp_get_crypted_data(sSPath),DELIM,
|
||||
kp_get_crypted_data(sSFileName),DELIM,
|
||||
kp_get_crypted_data(strSSize),DELIM,
|
||||
kp_get_crypted_data(sDPath),DELIM,
|
||||
kp_get_crypted_data(sDFileName),DELIM,
|
||||
kp_get_crypted_data(strDSize),DELIM,
|
||||
kp_get_crypted_data(modify_types[Type]));
|
||||
*/
|
||||
TRACE(_T("\nkp_set_start_modify : %s | %s | %s | %s | %s | %s | %s | %s | %s\n"),
|
||||
m_cpid,m_loginid,sSPath,sSFileName,strSSize,sDPath,sDFileName,strDSize,modify_types[Type]);
|
||||
|
||||
strTemp = kp_recv_data_http(_T("p=") + kp_get_base64_data(strTemp),true);
|
||||
|
||||
strTemp.Trim();
|
||||
return kp_process_errors(atol(strTemp),Type);
|
||||
}
|
||||
|
||||
int CWebUtil::kp_set_end_modify(CString sSPath, CString sSFileName, LARGE_INTEGER nSSize,
|
||||
CString sDPath, CString sDFileName, LARGE_INTEGER nDSize, MODIFY_TYPE Type)
|
||||
{
|
||||
CString strTemp;
|
||||
CString strSSize;
|
||||
CString strDSize;
|
||||
CString sFlag;
|
||||
|
||||
strSSize.Format(_T("%I64d"),nSSize.QuadPart);
|
||||
strDSize.Format(_T("%I64d"),nDSize.QuadPart);
|
||||
|
||||
strTemp = kp_get_crypted_data(_T("8")) + DELIM +
|
||||
kp_get_crypted_data(m_cpid) + DELIM +
|
||||
kp_get_crypted_data(m_loginid) + DELIM +
|
||||
kp_get_crypted_data(sSPath) + DELIM +
|
||||
kp_get_crypted_data(sSFileName) + DELIM +
|
||||
kp_get_crypted_data(strSSize) + DELIM +
|
||||
kp_get_crypted_data(sDPath) + DELIM +
|
||||
kp_get_crypted_data(sDFileName) + DELIM +
|
||||
kp_get_crypted_data(strDSize) + DELIM +
|
||||
kp_get_crypted_data(modify_types[Type]);
|
||||
/*
|
||||
strTemp.Format(_T("%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"),
|
||||
kp_get_crypted_data(_T("8")),DELIM,
|
||||
kp_get_crypted_data(m_cpid),DELIM,
|
||||
kp_get_crypted_data(m_loginid),DELIM,
|
||||
kp_get_crypted_data(sSPath),DELIM,
|
||||
kp_get_crypted_data(sSFileName),DELIM,
|
||||
kp_get_crypted_data(strSSize),DELIM,
|
||||
kp_get_crypted_data(sDPath),DELIM,
|
||||
kp_get_crypted_data(sDFileName),DELIM,
|
||||
kp_get_crypted_data(strDSize),DELIM,
|
||||
kp_get_crypted_data(modify_types[Type]));
|
||||
*/
|
||||
TRACE(_T("\nkp_set_end_modify : %s | %s | %s | %s | %s | %s | %s | %s | %s\n"),
|
||||
m_cpid,m_loginid,sSPath,sSFileName,strSSize,sDPath,sDFileName,strDSize,modify_types[Type]);
|
||||
|
||||
strTemp = kp_recv_data_http(_T("p=") + kp_get_base64_data(strTemp),true);
|
||||
|
||||
strTemp.Trim();
|
||||
return kp_process_errors(atol(strTemp),Type);
|
||||
}
|
||||
|
||||
CString CWebUtil::kp_get_encoded_data(CString strData)
|
||||
{
|
||||
char szEncoded[MAX_PATH << 1];
|
||||
char* pszEncoded = szEncoded;
|
||||
CString strRet;
|
||||
|
||||
LPCSTR pszURL = strData.GetBuffer();
|
||||
|
||||
while (*pszURL != NULL) {
|
||||
if ((*pszURL >= 'a' && *pszURL <= 'z') || (*pszURL >= 'A' && *pszURL <= 'Z')
|
||||
|| (*pszURL >= '0' && *pszURL <= '9') || *pszURL == '/')
|
||||
*pszEncoded = (char)*pszURL;
|
||||
else {
|
||||
*pszEncoded++ = '%';
|
||||
|
||||
char szBuf[10];
|
||||
sprintf(szBuf, _T("%02X"), *pszURL);
|
||||
int nBufLen = (int)strlen(szBuf);
|
||||
*pszEncoded++ = szBuf[nBufLen - 2];
|
||||
*pszEncoded = szBuf[nBufLen - 1];
|
||||
}
|
||||
|
||||
pszEncoded++;
|
||||
pszURL++;
|
||||
}
|
||||
*pszEncoded = NULL;
|
||||
|
||||
strRet = szEncoded;
|
||||
|
||||
return strData;
|
||||
}
|
||||
|
||||
#define BUFFER_SIZE 1024
|
||||
|
||||
CString CWebUtil::kp_get_decoded_data(CString strData)
|
||||
{
|
||||
TCHAR szOut[BUFFER_SIZE], szHex[3];
|
||||
|
||||
ZeroMemory(szOut, sizeof(szOut));
|
||||
|
||||
for (int i = 0, j = 0; strData[i]; i++, j++) {
|
||||
if (strData[i] == '%') {
|
||||
szHex[0] = strData[++i];
|
||||
szHex[1] = strData[++i];
|
||||
szHex[2] = 0;
|
||||
sscanf((char *)szHex, "%x", &szOut[j]);
|
||||
} else {
|
||||
szOut[j] = strData[i];
|
||||
}
|
||||
}
|
||||
|
||||
CString sRet = szOut;
|
||||
|
||||
return strData;
|
||||
}
|
||||
|
||||
|
||||
CString CWebUtil::kp_get_base64_data(CString strData)
|
||||
{
|
||||
CString strRet;
|
||||
|
||||
int nDstLen = BEncodeGetRequiredLength(strData.GetLength(),sizeof(char));
|
||||
|
||||
Base64Encode((BYTE*)strData.GetBuffer(), strData.GetLength(), strRet.GetBuffer(nDstLen), &nDstLen);
|
||||
strRet.ReleaseBuffer(nDstLen);
|
||||
|
||||
return strRet;
|
||||
}
|
||||
|
||||
CString CWebUtil::kp_get_unbase64_data(CString strData)
|
||||
{
|
||||
CString strRet;
|
||||
|
||||
int nDstLen = Base64DecodeGetRequiredLength(strData.GetLength());
|
||||
|
||||
Base64Decode(strData.GetBuffer(),strData.GetLength(),(BYTE*)strRet.GetBuffer(nDstLen),&nDstLen);
|
||||
strRet.ReleaseBuffer(nDstLen);
|
||||
|
||||
return strRet;
|
||||
}
|
||||
|
||||
|
||||
CString CWebUtil::kp_recv_data_http(CString strParam,BOOL bssl)
|
||||
{
|
||||
CString strRet;
|
||||
DWORD dwFlags = 0 ;
|
||||
HINTERNET hInternetConnect;
|
||||
HINTERNET hOpenRequest;
|
||||
HINTERNET hInternetRoot;
|
||||
|
||||
TRACE(_T("\nPARAM : %s\n"),strParam);
|
||||
|
||||
hInternetRoot = InternetOpen(_T("KPOST"),INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
|
||||
|
||||
if(bssl)
|
||||
{
|
||||
hInternetConnect = InternetConnect(hInternetRoot,KPOST_WEBIP,
|
||||
INTERNET_DEFAULT_HTTPS_PORT,"","",INTERNET_SERVICE_HTTP,0,0);
|
||||
dwFlags = INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_NO_CACHE_WRITE |INTERNET_FLAG_FORMS_SUBMIT |INTERNET_FLAG_SECURE;
|
||||
}
|
||||
else
|
||||
{
|
||||
hInternetConnect = InternetConnect(hInternetRoot,KPOST_WEBIP,
|
||||
_HTTP_PORT,"","",INTERNET_SERVICE_HTTP,0,0);
|
||||
dwFlags = INTERNET_FLAG_IGNORE_CERT_CN_INVALID|INTERNET_FLAG_IGNORE_CERT_DATE_INVALID;
|
||||
}
|
||||
hOpenRequest = HttpOpenRequest(hInternetConnect,_T("POST"),KPOST_WEBREF,HTTP_VERSION,"",NULL,dwFlags,0);
|
||||
|
||||
dwFlags = SECURITY_FLAG_IGNORE_UNKNOWN_CA|
|
||||
SECURITY_FLAG_IGNORE_REVOCATION|
|
||||
SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTP|
|
||||
SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPS|
|
||||
SECURITY_FLAG_IGNORE_CERT_DATE_INVALID|
|
||||
SECURITY_FLAG_IGNORE_CERT_CN_INVALID;
|
||||
|
||||
InternetSetOption (hOpenRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, sizeof(dwFlags));
|
||||
|
||||
char szPostData[2048] = {0};
|
||||
lstrcpy(szPostData, strParam);
|
||||
|
||||
// post header
|
||||
char szLen[MAX_PATH] = {0};
|
||||
char szHeader[2048] = {0};
|
||||
|
||||
sprintf(szLen, _T("%d"), lstrlen(szPostData));
|
||||
lstrcpy(szHeader, _T("Accept: text/*\r\n"));
|
||||
lstrcat(szHeader, _T("User-Agent: Mozilla/4.0 (compatible; MSIE 5.0;* Windows NT)\r\n"));
|
||||
lstrcat(szHeader, _T("Content-type: application/x-www-form-urlencoded\r\n"));
|
||||
lstrcat(szHeader, _T("Content-length: "));
|
||||
lstrcat(szHeader, szLen);
|
||||
lstrcat(szHeader, _T("\r\n\n"));
|
||||
|
||||
HttpAddRequestHeaders(hOpenRequest, szHeader, -1L, HTTP_ADDREQ_FLAG_ADD);
|
||||
|
||||
BOOL bSendRequest = HttpSendRequest(hOpenRequest,NULL,0,szPostData,lstrlen(szPostData));
|
||||
|
||||
|
||||
char szBuf[1024+1] = {0};
|
||||
DWORD dwSize = 0;
|
||||
|
||||
InternetReadFile( hOpenRequest,szBuf,sizeof(szBuf)-1,&dwSize);
|
||||
strRet += szBuf;
|
||||
|
||||
memset(szBuf,0x00,sizeof(szBuf));
|
||||
|
||||
while(dwSize)
|
||||
{
|
||||
dwSize = 0;
|
||||
InternetReadFile( hOpenRequest,szBuf,sizeof(szBuf)-1,&dwSize);
|
||||
if(dwSize)
|
||||
{
|
||||
szBuf[dwSize] = 0x00;
|
||||
strRet += szBuf;
|
||||
}
|
||||
|
||||
memset(szBuf,0x00,sizeof(szBuf));
|
||||
}
|
||||
|
||||
|
||||
BOOL bRet = InternetCloseHandle(hOpenRequest);
|
||||
bRet = InternetCloseHandle(hInternetConnect);
|
||||
bRet = InternetCloseHandle(hInternetRoot);
|
||||
|
||||
strRet.Trim();
|
||||
|
||||
TRACE(_T("\nRECV : %s\n"),strRet);
|
||||
|
||||
return strRet;
|
||||
}
|
||||
|
||||
int CWebUtil::kp_set_backup(CString sSrcPath,CString sFlag)
|
||||
{
|
||||
CString strTemp;
|
||||
|
||||
strTemp = kp_get_crypted_data(_T("11")) + DELIM +
|
||||
kp_get_crypted_data(m_cpid) + DELIM +
|
||||
kp_get_crypted_data(sSrcPath) + DELIM +
|
||||
kp_get_crypted_data(sFlag);
|
||||
/*
|
||||
strTemp.Format(_T("%s%s%s%s%s%s%s"),
|
||||
kp_get_crypted_data(_T("11")),DELIM,
|
||||
kp_get_crypted_data(m_cpid),DELIM,
|
||||
kp_get_crypted_data(sSrcPath),DELIM,
|
||||
kp_get_crypted_data(sFlag));
|
||||
*/
|
||||
TRACE(_T("\nkp_set_backup : %s | %s | %s\n"),m_cpid,sSrcPath,sFlag);
|
||||
|
||||
strTemp = kp_recv_data_http(_T("p=") + kp_get_base64_data(strTemp),true);
|
||||
|
||||
strTemp.Trim();
|
||||
|
||||
return kp_process_errors(atol(strTemp));
|
||||
}
|
||||
|
||||
int CWebUtil::kp_set_backup_path(CString sBackupPath)
|
||||
{
|
||||
CString strTemp;
|
||||
|
||||
strTemp.Format(_T("%s%s%s%s%s%s%s"),
|
||||
kp_get_crypted_data(_T("13")) + DELIM +
|
||||
kp_get_crypted_data(m_cpid) + DELIM +
|
||||
kp_get_crypted_data(m_loginid) + DELIM +
|
||||
kp_get_crypted_data(sBackupPath));
|
||||
/*
|
||||
strTemp.Format(_T("%s%s%s%s%s%s%s"),
|
||||
kp_get_crypted_data(_T("13")),DELIM,
|
||||
kp_get_crypted_data(m_cpid),DELIM,
|
||||
kp_get_crypted_data(m_loginid),DELIM,
|
||||
kp_get_crypted_data(sBackupPath));
|
||||
*/
|
||||
TRACE(_T("\nkp_set_backup_path : %s | %s | %s\n"),m_cpid,m_loginid, sBackupPath);
|
||||
|
||||
strTemp = kp_recv_data_http(_T("p=") + kp_get_base64_data(strTemp),true);
|
||||
|
||||
strTemp.Trim();
|
||||
|
||||
return kp_process_errors(atol(strTemp));
|
||||
}
|
||||
|
||||
int CWebUtil::kp_chk_notice()
|
||||
{
|
||||
CString strTemp;
|
||||
|
||||
strTemp = kp_get_crypted_data(_T("12")) + DELIM +
|
||||
kp_get_crypted_data(m_cpid) + DELIM +
|
||||
kp_get_crypted_data(m_loginid);
|
||||
/*
|
||||
strTemp.Format(_T("%s%s%s%s%s"),
|
||||
kp_get_crypted_data(_T("12")),DELIM,
|
||||
kp_get_crypted_data(m_cpid),DELIM,
|
||||
kp_get_crypted_data(m_loginid));
|
||||
*/
|
||||
TRACE(_T("\nkp_chk_notice : %s\n"),m_cpid);
|
||||
|
||||
strTemp = kp_recv_data_http(_T("p=") + kp_get_base64_data(strTemp),true);
|
||||
|
||||
strTemp.Trim();
|
||||
|
||||
return kp_process_errors(atol(strTemp));
|
||||
}
|
||||
|
||||
CString CWebUtil::kp_get_backup_path()
|
||||
{
|
||||
CString strTemp;
|
||||
|
||||
strTemp = kp_get_crypted_data(_T("14")) + DELIM +
|
||||
kp_get_crypted_data(m_cpid) + DELIM +
|
||||
kp_get_crypted_data(m_loginid);
|
||||
/*
|
||||
strTemp.Format(_T("%s%s%s%s%s"),
|
||||
kp_get_crypted_data(_T("14")),DELIM,
|
||||
kp_get_crypted_data(m_cpid),DELIM,
|
||||
kp_get_crypted_data(m_loginid));
|
||||
*/
|
||||
TRACE(_T("\n kp_get_backup_path : %s | %s\n"),m_cpid,m_loginid);
|
||||
|
||||
strTemp = kp_get_unbase64_data(kp_recv_data_http(_T("p=") + kp_get_base64_data(strTemp),true));
|
||||
|
||||
strTemp.Trim();
|
||||
|
||||
return strTemp;
|
||||
}
|
||||
|
||||
int CWebUtil::kp_sync_data()
|
||||
{
|
||||
CString strTemp;
|
||||
|
||||
strTemp = kp_get_crypted_data(_T("15")) + DELIM + kp_get_crypted_data(m_cpid);
|
||||
|
||||
TRACE(_T("\n kp_sync_data : %s\n"),m_cpid);
|
||||
|
||||
strTemp = kp_get_unbase64_data(kp_recv_data_http(_T("p=") + kp_get_base64_data(strTemp),true));
|
||||
|
||||
strTemp.Trim();
|
||||
|
||||
return kp_process_errors(atol(strTemp));
|
||||
|
||||
}
|
||||
|
||||
int CWebUtil::kp_get_sync_time()
|
||||
{
|
||||
CString strTemp;
|
||||
|
||||
strTemp = kp_get_crypted_data(_T("16")) + DELIM + kp_get_crypted_data(m_cpid);
|
||||
|
||||
TRACE(_T("\n kp_get_sync_time : %s\n"),m_cpid);
|
||||
|
||||
strTemp = kp_recv_data_http(_T("p=") + kp_get_base64_data(strTemp),true);
|
||||
|
||||
strTemp.Trim();
|
||||
|
||||
return kp_process_errors(atol(strTemp));
|
||||
}
|
||||
|
||||
int CWebUtil::kp_file_opt_log(PTF_LOG_STURCT ptflog_info)
|
||||
{
|
||||
CString strTemp;
|
||||
CString str_action;
|
||||
CString str_file_flag;
|
||||
|
||||
// if (0==ptflog_info->action) str_action="M";
|
||||
// if (0==ptflog_info->file_flag) str_file_flag = "F";
|
||||
|
||||
strTemp = kp_get_crypted_data(_T("1")) + DELIM +
|
||||
kp_get_crypted_data(ptflog_info->sp_user_id) + DELIM +
|
||||
kp_get_crypted_data(ptflog_info->vol_name) + DELIM +
|
||||
kp_get_crypted_data(ptflog_info->s_file) + DELIM +
|
||||
kp_get_crypted_data(ptflog_info->t_file) + DELIM +
|
||||
kp_get_crypted_data(CString(ptflog_info->action)) + DELIM +
|
||||
kp_get_crypted_data(CString(ptflog_info->file_flag));
|
||||
|
||||
TRACE(_T("\n kp_get_sync_time : %s\n"),m_cpid);
|
||||
|
||||
strTemp = kp_recv_data_http(_T("p=") + kp_get_base64_data(strTemp),false);
|
||||
|
||||
strTemp.Trim();
|
||||
|
||||
return kp_process_errors(atol(strTemp));
|
||||
}
|
||||
|
||||
int CWebUtil::kp_send_mail(CString mail1 , CString mail2 , CString mail3 , CString file_name)
|
||||
{
|
||||
CString strTemp;
|
||||
|
||||
strTemp = kp_get_crypted_data(_T("2")) + DELIM +
|
||||
kp_get_crypted_data(mail1) + DELIM +
|
||||
kp_get_crypted_data(mail2) + DELIM +
|
||||
kp_get_crypted_data(mail3) + DELIM +
|
||||
kp_get_crypted_data(file_name);
|
||||
|
||||
TRACE(_T("\n kp_get_sync_time : %s\n"),m_cpid);
|
||||
|
||||
strTemp = _T("p=") + kp_get_base64_data(strTemp);
|
||||
|
||||
strTemp = kp_recv_data_http( strTemp ,false);
|
||||
|
||||
strTemp.Trim();
|
||||
|
||||
return kp_process_errors(atol(strTemp));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,150 @@
|
||||
#pragma once
|
||||
|
||||
typedef struct {
|
||||
char path[2048];
|
||||
__int64 size;
|
||||
char lastModified[32];
|
||||
unsigned int attr;
|
||||
char source[128];
|
||||
int hit_today;
|
||||
int hit_yesterday;
|
||||
int hit_avr;
|
||||
int per_success;
|
||||
__int64 total_size;
|
||||
__int64 used_size;
|
||||
__int64 traffic;
|
||||
__int64 today_traffic;
|
||||
char service_status[2];
|
||||
char ip[16];
|
||||
char backup_path[2048];
|
||||
} CLFILE_STRUCTEX, *PCLFILE_STRUCTEX;
|
||||
|
||||
typedef struct {
|
||||
char sp_user_id[255];
|
||||
char vol_name[255];
|
||||
char s_file[255];
|
||||
char t_file[255];
|
||||
char action;
|
||||
char file_flag;
|
||||
} TF_LOG_STURCT, *PTF_LOG_STURCT;
|
||||
|
||||
#define KP_ERROR_SUCCESS 0
|
||||
#define KP_ERROR_ERROR -1
|
||||
#define UNDEFINED_ERROR 1000
|
||||
|
||||
#define NOADMIT_SET_FAIL 1001
|
||||
#define NOADMIT_SET_SUCCESS 1010
|
||||
|
||||
#define ADMIT_SET_FAIL 1101
|
||||
#define ADMIT_SET_SUCCESS 1110
|
||||
|
||||
#define LOGIN_FAIL_NOID 2001
|
||||
#define LOGIN_FAIL_NOPASSWD 2002
|
||||
#define LOGIN_FAIL_NETDRV 2003 // 2006.12.19 Ãß°¡
|
||||
#define LOGIN_SUCCESS_NOCPD 2009
|
||||
#define LOGIN_SUCCESS_EXCPD 2010
|
||||
#define LOGIN_SUCCESS_NOCPD_ADMIN 2011
|
||||
#define LOGIN_SUCCESS_EXCPD_ADMIN 2012
|
||||
#define LOGIN_SUCCESS_NOCPD_SVC_ADMIN 2013 // 2006.11.30 Ãß°¡
|
||||
#define LOGIN_SUCCESS_EXCPD_SVC_ADMIN 2014 // 2006.11.30 Ãß°¡
|
||||
#define LOGIN_SUCCESS_NETDRV 2015 // 2006.12.19 Ãß°¡
|
||||
|
||||
#define CANNOT_WRITE 4001
|
||||
#define NO_QUOTA 4002
|
||||
#define UPLOAD_WORKING 4003
|
||||
#define CAN_WRITE 4010
|
||||
#define CAN_OVER_WRITE 4009
|
||||
|
||||
#define WRITE_WORKING 5001
|
||||
#define WRITE_BEGIN 5010
|
||||
#define WRITE_END 6010
|
||||
|
||||
#define MODIFY_WORKING 7001
|
||||
#define MODIFY_BEGIN 7010
|
||||
#define TARGET_FILE_EXIST 7002
|
||||
#define MODIFY_END 8010
|
||||
|
||||
#define SET_BACKUP 1110
|
||||
|
||||
#define NOTICE_SHOW 1210
|
||||
#define NOTICE_HIDE 1209
|
||||
|
||||
#define SYNC_SUCCESS 1510 // 2006.12.19 Ãß°¡
|
||||
|
||||
#define DELIM "!"
|
||||
#define FILE_TYPE_D "D"
|
||||
#define FILE_TYPE_F "F"
|
||||
|
||||
#define KPOST_WEBIP _T("www.ktsystemhosting.com")
|
||||
#define KPOST_WEBREF _T("/sp/getlogs/modules/")
|
||||
#define _HTTP_PORT 8080
|
||||
|
||||
//#define KPOST_WEBREF "modules/test.php"
|
||||
|
||||
static TCHAR *modify_types[] = {_T("R"), //Rename
|
||||
_T("D"), //Delete
|
||||
_T("M"), //Move
|
||||
_T("C"), //Copy
|
||||
_T("A") //Append
|
||||
};
|
||||
|
||||
class CWebUtil
|
||||
{
|
||||
public:
|
||||
static enum MODIFY_TYPE {
|
||||
MOD_RENAME,
|
||||
MOD_DELETE,
|
||||
MOD_MOVE,
|
||||
MOD_COPY,
|
||||
MOD_APPEND,
|
||||
MOD_UNKNOWN
|
||||
};
|
||||
|
||||
public:
|
||||
CWebUtil();
|
||||
virtual ~CWebUtil();
|
||||
|
||||
PCLFILE_STRUCTEX kp_get_file_list(
|
||||
const char *path, // Path
|
||||
unsigned int depth, // 0 : itself
|
||||
// 1 : 1 depth children
|
||||
// 2 : all children
|
||||
unsigned int *count); // File count
|
||||
|
||||
void kp_free_file_list(
|
||||
PCLFILE_STRUCTEX pclf); // File list pointer
|
||||
|
||||
int kp_init(CString cp_id,CString cp_user_id, CString pass);
|
||||
int kp_set_annoy(CString sPath,BOOL bSet);
|
||||
int kp_chk_login(BOOL bisNetdrive = FALSE);
|
||||
int kp_chk_upload(CString sPath,CString sFileName,LARGE_INTEGER nSize,BOOL bDir);
|
||||
int kp_set_start_upload(CString sPath, CString sFileName, LARGE_INTEGER nSize,BOOL bIsDir, BOOL bOverWrite);
|
||||
int kp_set_end_upload(CString sPath, CString sFileName, LARGE_INTEGER nSize,BOOL bSuccess);
|
||||
int kp_set_start_modify(CString sSPath, CString sSFileName, LARGE_INTEGER nSSize,
|
||||
CString sDPath, CString sDFileName, LARGE_INTEGER nDSize, MODIFY_TYPE Type);
|
||||
int kp_set_end_modify(CString sSPath, CString sSFileName, LARGE_INTEGER nSSize,
|
||||
CString sDPath, CString sDFileName, LARGE_INTEGER nDSize, MODIFY_TYPE Type);
|
||||
int kp_set_backup(CString sSrcPath,CString sFlag);
|
||||
int kp_set_backup_path(CString sBackupPath);
|
||||
CString kp_get_backup_path();
|
||||
int kp_chk_notice();
|
||||
int kp_sync_data();
|
||||
int kp_get_sync_time();
|
||||
private:
|
||||
CString m_cpid;
|
||||
CString m_loginid;
|
||||
CString m_pass;
|
||||
CString kp_get_encoded_data(CString strData);
|
||||
CString kp_get_decoded_data(CString strData);
|
||||
CString kp_get_base64_data(CString strData);
|
||||
CString kp_get_unbase64_data(CString strData);
|
||||
CString kp_get_crypted_data(CString strData);
|
||||
CString kp_recv_data_http(CString strParam,BOOL bssl);
|
||||
|
||||
PCLFILE_STRUCTEX kp_parse_file_list_struct(CString sData,unsigned int *count);
|
||||
int kp_process_errors(int nError,MODIFY_TYPE Type = MOD_UNKNOWN);
|
||||
public:
|
||||
int kp_file_opt_log(PTF_LOG_STURCT);
|
||||
int kp_send_mail(CString , CString , CString , CString );
|
||||
|
||||
};
|
||||
@@ -0,0 +1,207 @@
|
||||
BODY
|
||||
{
|
||||
BACKGROUND-COLOR: white;
|
||||
FONT-FAMILY: "Verdana", sans-serif;
|
||||
FONT-SIZE: 100%;
|
||||
MARGIN-LEFT: 0px;
|
||||
MARGIN-TOP: 0px
|
||||
}
|
||||
P
|
||||
{
|
||||
FONT-FAMILY: "Verdana", sans-serif;
|
||||
FONT-SIZE: 70%;
|
||||
LINE-HEIGHT: 12pt;
|
||||
MARGIN-BOTTOM: 0px;
|
||||
MARGIN-LEFT: 10px;
|
||||
MARGIN-TOP: 10px
|
||||
}
|
||||
.note
|
||||
{
|
||||
BACKGROUND-COLOR: #ffffff;
|
||||
COLOR: #336699;
|
||||
FONT-FAMILY: "Verdana", sans-serif;
|
||||
FONT-SIZE: 100%;
|
||||
MARGIN-BOTTOM: 0px;
|
||||
MARGIN-LEFT: 0px;
|
||||
MARGIN-TOP: 0px;
|
||||
PADDING-RIGHT: 10px
|
||||
}
|
||||
.infotable
|
||||
{
|
||||
BACKGROUND-COLOR: #f0f0e0;
|
||||
BORDER-BOTTOM: #ffffff 0px solid;
|
||||
BORDER-COLLAPSE: collapse;
|
||||
BORDER-LEFT: #ffffff 0px solid;
|
||||
BORDER-RIGHT: #ffffff 0px solid;
|
||||
BORDER-TOP: #ffffff 0px solid;
|
||||
FONT-SIZE: 70%;
|
||||
MARGIN-LEFT: 10px
|
||||
}
|
||||
.issuetable
|
||||
{
|
||||
BACKGROUND-COLOR: #ffffe8;
|
||||
BORDER-COLLAPSE: collapse;
|
||||
COLOR: #000000;
|
||||
FONT-SIZE: 100%;
|
||||
MARGIN-BOTTOM: 10px;
|
||||
MARGIN-LEFT: 13px;
|
||||
MARGIN-TOP: 0px
|
||||
}
|
||||
.issuetitle
|
||||
{
|
||||
BACKGROUND-COLOR: #ffffff;
|
||||
BORDER-BOTTOM: #dcdcdc 1px solid;
|
||||
BORDER-TOP: #dcdcdc 1px;
|
||||
COLOR: #003366;
|
||||
FONT-WEIGHT: normal
|
||||
}
|
||||
.header
|
||||
{
|
||||
BACKGROUND-COLOR: #cecf9c;
|
||||
BORDER-BOTTOM: #ffffff 1px solid;
|
||||
BORDER-LEFT: #ffffff 1px solid;
|
||||
BORDER-RIGHT: #ffffff 1px solid;
|
||||
BORDER-TOP: #ffffff 1px solid;
|
||||
COLOR: #000000;
|
||||
FONT-WEIGHT: bold
|
||||
}
|
||||
.issuehdr
|
||||
{
|
||||
BACKGROUND-COLOR: #E0EBF5;
|
||||
BORDER-BOTTOM: #dcdcdc 1px solid;
|
||||
BORDER-TOP: #dcdcdc 1px solid;
|
||||
COLOR: #000000;
|
||||
FONT-WEIGHT: normal
|
||||
}
|
||||
.issuenone
|
||||
{
|
||||
BACKGROUND-COLOR: #ffffff;
|
||||
BORDER-BOTTOM: 0px;
|
||||
BORDER-LEFT: 0px;
|
||||
BORDER-RIGHT: 0px;
|
||||
BORDER-TOP: 0px;
|
||||
COLOR: #000000;
|
||||
FONT-WEIGHT: normal
|
||||
}
|
||||
.content
|
||||
{
|
||||
BACKGROUND-COLOR: #e7e7ce;
|
||||
BORDER-BOTTOM: #ffffff 1px solid;
|
||||
BORDER-LEFT: #ffffff 1px solid;
|
||||
BORDER-RIGHT: #ffffff 1px solid;
|
||||
BORDER-TOP: #ffffff 1px solid;
|
||||
PADDING-LEFT: 3px
|
||||
}
|
||||
.issuecontent
|
||||
{
|
||||
BACKGROUND-COLOR: #ffffff;
|
||||
BORDER-BOTTOM: #dcdcdc 1px solid;
|
||||
BORDER-TOP: #dcdcdc 1px solid;
|
||||
PADDING-LEFT: 3px
|
||||
}
|
||||
A:link
|
||||
{
|
||||
COLOR: #cc6633;
|
||||
TEXT-DECORATION: underline
|
||||
}
|
||||
A:visited
|
||||
{
|
||||
COLOR: #cc6633;
|
||||
}
|
||||
A:active
|
||||
{
|
||||
COLOR: #cc6633;
|
||||
}
|
||||
A:hover
|
||||
{
|
||||
COLOR: #cc3300;
|
||||
TEXT-DECORATION: underline
|
||||
}
|
||||
H1
|
||||
{
|
||||
BACKGROUND-COLOR: #003366;
|
||||
BORDER-BOTTOM: #336699 6px solid;
|
||||
COLOR: #ffffff;
|
||||
FONT-SIZE: 130%;
|
||||
FONT-WEIGHT: normal;
|
||||
MARGIN: 0em 0em 0em -20px;
|
||||
PADDING-BOTTOM: 8px;
|
||||
PADDING-LEFT: 30px;
|
||||
PADDING-TOP: 16px
|
||||
}
|
||||
H2
|
||||
{
|
||||
COLOR: #000000;
|
||||
FONT-SIZE: 80%;
|
||||
FONT-WEIGHT: bold;
|
||||
MARGIN-BOTTOM: 3px;
|
||||
MARGIN-LEFT: 10px;
|
||||
MARGIN-TOP: 20px;
|
||||
PADDING-LEFT: 0px
|
||||
}
|
||||
H3
|
||||
{
|
||||
COLOR: #000000;
|
||||
FONT-SIZE: 80%;
|
||||
FONT-WEIGHT: bold;
|
||||
MARGIN-BOTTOM: -5px;
|
||||
MARGIN-LEFT: 10px;
|
||||
MARGIN-TOP: 20px
|
||||
}
|
||||
H4
|
||||
{
|
||||
COLOR: #000000;
|
||||
FONT-SIZE: 70%;
|
||||
FONT-WEIGHT: bold;
|
||||
MARGIN-BOTTOM: 0px;
|
||||
MARGIN-TOP: 15px;
|
||||
PADDING-BOTTOM: 0px
|
||||
}
|
||||
UL
|
||||
{
|
||||
COLOR: #000000;
|
||||
FONT-SIZE: 70%;
|
||||
LIST-STYLE: square;
|
||||
MARGIN-BOTTOM: 0pt;
|
||||
MARGIN-TOP: 0pt
|
||||
}
|
||||
OL
|
||||
{
|
||||
COLOR: #000000;
|
||||
FONT-SIZE: 70%;
|
||||
LIST-STYLE: square;
|
||||
MARGIN-BOTTOM: 0pt;
|
||||
MARGIN-TOP: 0pt
|
||||
}
|
||||
LI
|
||||
{
|
||||
LIST-STYLE: square;
|
||||
MARGIN-LEFT: 0px
|
||||
}
|
||||
.expandable
|
||||
{
|
||||
CURSOR: hand
|
||||
}
|
||||
.expanded
|
||||
{
|
||||
color: black
|
||||
}
|
||||
.collapsed
|
||||
{
|
||||
DISPLAY: none
|
||||
}
|
||||
.foot
|
||||
{
|
||||
BACKGROUND-COLOR: #ffffff;
|
||||
BORDER-BOTTOM: #cecf9c 1px solid;
|
||||
BORDER-TOP: #cecf9c 2px solid
|
||||
}
|
||||
.settings
|
||||
{
|
||||
MARGIN-LEFT: 25PX;
|
||||
}
|
||||
.help
|
||||
{
|
||||
TEXT-ALIGN: right;
|
||||
margin-right: 10px;
|
||||
}
|
||||
@@ -0,0 +1,232 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
|
||||
|
||||
<xsl:key name="ProjectKey" match="Event" use="@Project"/>
|
||||
|
||||
<xsl:template match="Events" mode="createProjects">
|
||||
<projects>
|
||||
<xsl:for-each select="Event">
|
||||
<!--xsl:sort select="@Project" order="descending"/-->
|
||||
<xsl:if test="(1=position()) or (preceding-sibling::*[1]/@Project != @Project)">
|
||||
|
||||
<xsl:variable name="ProjectName" select="@Project"/>
|
||||
|
||||
<project>
|
||||
<xsl:attribute name="name">
|
||||
<xsl:value-of select="@Project"/>
|
||||
</xsl:attribute>
|
||||
|
||||
<xsl:if test="@Project=''">
|
||||
<xsl:attribute name="solution">
|
||||
<xsl:value-of select="@Solution"/>
|
||||
</xsl:attribute>
|
||||
</xsl:if>
|
||||
|
||||
<xsl:for-each select="key('ProjectKey', $ProjectName)">
|
||||
<!--xsl:sort select="@Source" /-->
|
||||
<xsl:if test="(1=position()) or (preceding-sibling::*[1]/@Source != @Source)">
|
||||
|
||||
<source>
|
||||
<xsl:attribute name="name">
|
||||
<xsl:value-of select="@Source"/>
|
||||
</xsl:attribute>
|
||||
|
||||
<xsl:variable name="Source">
|
||||
<xsl:value-of select="@Source"/>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:for-each select="key('ProjectKey', $ProjectName)[ @Source = $Source ]">
|
||||
|
||||
<event>
|
||||
<xsl:attribute name="error-level">
|
||||
<xsl:value-of select="@ErrorLevel"/>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="description">
|
||||
<xsl:value-of select="@Description"/>
|
||||
</xsl:attribute>
|
||||
</event>
|
||||
</xsl:for-each>
|
||||
</source>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
|
||||
</project>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
</projects>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="projects">
|
||||
<xsl:for-each select="project">
|
||||
<xsl:sort select="@Name" order="ascending"/>
|
||||
<h2>
|
||||
<xsl:if test="@solution">솔루션: <xsl:value-of select="@solution"/></xsl:if>
|
||||
<xsl:if test="not(@solution)">프로젝트: <xsl:value-of select="@name"/>
|
||||
<xsl:for-each select="source">
|
||||
<xsl:variable name="Hyperlink" select="@name"/>
|
||||
<xsl:for-each select="event[@error-level='4']">
|
||||
<A class="note"><xsl:attribute name="HREF"><xsl:value-of select="$Hyperlink"/></xsl:attribute><xsl:value-of select="@description"/></A>
|
||||
</xsl:for-each>
|
||||
</xsl:for-each>
|
||||
</xsl:if>
|
||||
</h2>
|
||||
|
||||
<table cellpadding="2" cellspacing="0" width="98%" border="1" bordercolor="white" class="infotable">
|
||||
<tr>
|
||||
<td nowrap="1" class="header" _locID="Filename">파일 이름</td>
|
||||
<td nowrap="1" class="header" _locID="Status">상태</td>
|
||||
<td nowrap="1" class="header" _locID="Errors">오류</td>
|
||||
<td nowrap="1" class="header" _locID="Warnings">경고</td>
|
||||
</tr>
|
||||
|
||||
<xsl:for-each select="source">
|
||||
<xsl:sort select="@name" order="ascending"/>
|
||||
<xsl:variable name="source-id" select="generate-id(.)"/>
|
||||
|
||||
<xsl:if test="count(event)!=count(event[@error-level='4'])">
|
||||
|
||||
<tr class="row">
|
||||
<td class="content">
|
||||
<A HREF="javascript:"><xsl:attribute name="onClick">javascript:document.images['<xsl:value-of select="$source-id"/>'].click()</xsl:attribute><IMG border="0" alt="expand/collapse section" class="expandable" height="11" onclick="changepic()" src="_UpgradeReport_Files/UpgradeReport_Plus.gif" width="9"><xsl:attribute name="name"><xsl:value-of select="$source-id"/></xsl:attribute><xsl:attribute name="child">src<xsl:value-of select="$source-id"/></xsl:attribute></IMG></A> <xsl:value-of select="@name"/>
|
||||
</td>
|
||||
<td class="content">
|
||||
<xsl:if test="count(event[@error-level='3'])=1">
|
||||
<xsl:for-each select="event[@error-level='3']">
|
||||
<xsl:if test="@description='Converted'">변환됨</xsl:if>
|
||||
<xsl:if test="@description!='Converted'"><xsl:value-of select="@description"/></xsl:if>
|
||||
</xsl:for-each>
|
||||
</xsl:if>
|
||||
<xsl:if test="count(event[@error-level='3'])!=1 and count(event[@error-level='3' and @description='Converted'])!=0">변환됨
|
||||
</xsl:if>
|
||||
</td>
|
||||
<td class="content"><xsl:value-of select="count(event[@error-level='2'])"/></td>
|
||||
<td class="content"><xsl:value-of select="count(event[@error-level='1'])"/></td>
|
||||
</tr>
|
||||
|
||||
<tr class="collapsed" bgcolor="#ffffff">
|
||||
<xsl:attribute name="id">src<xsl:value-of select="$source-id"/></xsl:attribute>
|
||||
|
||||
<td colspan="7">
|
||||
<table width="97%" border="1" bordercolor="#dcdcdc" rules="cols" class="issuetable">
|
||||
<tr>
|
||||
<td colspan="7" class="issuetitle" _locID="ConversionIssues">변환 문제점 - <xsl:value-of select="@name"/>:</td>
|
||||
</tr>
|
||||
|
||||
<xsl:for-each select="event[@error-level!='3']">
|
||||
<xsl:if test="@error-level!='4'">
|
||||
<tr>
|
||||
<td class="issuenone" style="border-bottom:solid 1 lightgray">
|
||||
<xsl:value-of select="@description"/>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
|
||||
<tr valign="top">
|
||||
<td class="foot">
|
||||
<xsl:if test="count(source)!=1">
|
||||
<xsl:value-of select="count(source)"/> 파일
|
||||
</xsl:if>
|
||||
<xsl:if test="count(source)=1">
|
||||
1 파일
|
||||
</xsl:if>
|
||||
</td>
|
||||
<td class="foot">
|
||||
변환됨: <xsl:value-of select="count(source/event[@error-level='3' and @description='Converted'])"/><BR/>
|
||||
변환되지 않음 <xsl:value-of select="count(source) - count(source/event[@error-level='3' and @description='Converted'])"/>
|
||||
</td>
|
||||
<td class="foot"><xsl:value-of select="count(source/event[@error-level='2'])"/></td>
|
||||
<td class="foot"><xsl:value-of select="count(source/event[@error-level='1'])"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="Property">
|
||||
<xsl:if test="@Name!='Date' and @Name!='Time' and @Name!='LogNumber' and @Name!='Solution'">
|
||||
<tr><td nowrap="1"><b><xsl:value-of select="@Name"/>: </b><xsl:value-of select="@Value"/></td></tr>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="UpgradeLog">
|
||||
<html>
|
||||
<head>
|
||||
<META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-8"/>
|
||||
<link rel="stylesheet" href="_UpgradeReport_Files\UpgradeReport.css"/>
|
||||
<title>변환 보고서
|
||||
<xsl:if test="Properties/Property[@Name='LogNumber']">
|
||||
<xsl:value-of select="Properties/Property[@Name='LogNumber']/@Value"/>
|
||||
</xsl:if>
|
||||
</title>
|
||||
<script language="javascript">
|
||||
function outliner () {
|
||||
oMe = window.event.srcElement
|
||||
//get child element
|
||||
var child = document.all[event.srcElement.getAttribute("child",false)];
|
||||
//if child element exists, expand or collapse it.
|
||||
if (null != child)
|
||||
child.className = child.className == "collapsed" ? "expanded" : "collapsed";
|
||||
}
|
||||
|
||||
function changepic() {
|
||||
uMe = window.event.srcElement;
|
||||
var check = uMe.src.toLowerCase();
|
||||
if (check.lastIndexOf("upgradereport_plus.gif") != -1)
|
||||
{
|
||||
uMe.src = "_UpgradeReport_Files/UpgradeReport_Minus.gif"
|
||||
}
|
||||
else
|
||||
{
|
||||
uMe.src = "_UpgradeReport_Files/UpgradeReport_Plus.gif"
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body topmargin="0" leftmargin="0" rightmargin="0" onclick="outliner();">
|
||||
<h1 _locID="ConversionReport">변환 보고서 - <xsl:value-of select="Properties/Property[@Name='Solution']/@Value"/></h1>
|
||||
|
||||
<p><span class="note">
|
||||
<b>변환 시간:</b> <xsl:value-of select="Properties/Property[@Name='Date']/@Value"/> <xsl:value-of select="Properties/Property[@Name='Time']/@Value"/><br/>
|
||||
</span></p>
|
||||
|
||||
<xsl:variable name="SortedEvents">
|
||||
<Events>
|
||||
<xsl:for-each select="Event">
|
||||
<xsl:sort select="@Project" order="ascending"/>
|
||||
<xsl:sort select="@Source" order="ascending"/>
|
||||
<xsl:sort select="@ErrorLevel" order="ascending"/>
|
||||
<Event>
|
||||
<xsl:attribute name="Project"><xsl:value-of select="@Project"/> </xsl:attribute>
|
||||
<xsl:attribute name="Solution"><xsl:value-of select="/UpgradeLog/Properties/Property[@Name='Solution']/@Value"/> </xsl:attribute>
|
||||
<xsl:attribute name="Source"><xsl:value-of select="@Source"/> </xsl:attribute>
|
||||
<xsl:attribute name="ErrorLevel"><xsl:value-of select="@ErrorLevel"/> </xsl:attribute>
|
||||
<xsl:attribute name="Description"><xsl:value-of select="@Description"/> </xsl:attribute>
|
||||
</Event>
|
||||
</xsl:for-each>
|
||||
</Events>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="Projects">
|
||||
<xsl:apply-templates select="msxsl:node-set($SortedEvents)/*" mode="createProjects"/>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:apply-templates select="msxsl:node-set($Projects)/*"/>
|
||||
|
||||
<p></p><p>
|
||||
<table class="note">
|
||||
<tr>
|
||||
<td nowrap="1">
|
||||
<b>변환 설정</b>
|
||||
</td>
|
||||
</tr>
|
||||
<xsl:apply-templates select="Properties"/>
|
||||
</table></p>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
After Width: | Height: | Size: 69 B |
|
After Width: | Height: | Size: 71 B |
@@ -0,0 +1,19 @@
|
||||
// 컴퓨터에서 Microsoft Visual C++를 사용하여 생성한 IDispatch 래퍼 클래스입니다.
|
||||
|
||||
// 참고: 이 파일의 내용을 수정하지 마십시오. Microsoft Visual C++에서
|
||||
// 이 클래스를 다시 생성할 때 수정한 내용을 덮어씁니다.
|
||||
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "explorer1.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CExplorer1
|
||||
|
||||
IMPLEMENT_DYNCREATE(CExplorer1, CWnd)
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CExplorer1 속성입니다.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CExplorer1 작업입니다.
|
||||
@@ -0,0 +1,516 @@
|
||||
#pragma once
|
||||
|
||||
// 컴퓨터에서 Microsoft Visual C++를 사용하여 생성한 IDispatch 래퍼 클래스입니다.
|
||||
|
||||
// 참고: 이 파일의 내용을 수정하지 마십시오. Microsoft Visual C++에서
|
||||
// 이 클래스를 다시 생성할 때 수정한 내용을 덮어씁니다.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CExplorer1 래퍼 클래스입니다.
|
||||
|
||||
class CExplorer1 : public CWnd
|
||||
{
|
||||
protected:
|
||||
DECLARE_DYNCREATE(CExplorer1)
|
||||
public:
|
||||
CLSID const& GetClsid()
|
||||
{
|
||||
static CLSID const clsid
|
||||
= { 0x8856F961, 0x340A, 0x11D0, { 0xA9, 0x6B, 0x0, 0xC0, 0x4F, 0xD7, 0x5, 0xA2 } };
|
||||
return clsid;
|
||||
}
|
||||
virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle,
|
||||
const RECT& rect, CWnd* pParentWnd, UINT nID,
|
||||
CCreateContext* pContext = NULL)
|
||||
{
|
||||
return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID);
|
||||
}
|
||||
|
||||
BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd,
|
||||
UINT nID, CFile* pPersist = NULL, BOOL bStorage = FALSE,
|
||||
BSTR bstrLicKey = NULL)
|
||||
{
|
||||
return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
|
||||
pPersist, bStorage, bstrLicKey);
|
||||
}
|
||||
|
||||
// 특성
|
||||
public:
|
||||
enum
|
||||
{
|
||||
CSC_UPDATECOMMANDS = -1,
|
||||
CSC_NAVIGATEFORWARD = 1,
|
||||
CSC_NAVIGATEBACK = 2
|
||||
}CommandStateChangeConstants;
|
||||
enum
|
||||
{
|
||||
OLECMDID_OPEN = 1,
|
||||
OLECMDID_NEW = 2,
|
||||
OLECMDID_SAVE = 3,
|
||||
OLECMDID_SAVEAS = 4,
|
||||
OLECMDID_SAVECOPYAS = 5,
|
||||
OLECMDID_PRINT = 6,
|
||||
OLECMDID_PRINTPREVIEW = 7,
|
||||
OLECMDID_PAGESETUP = 8,
|
||||
OLECMDID_SPELL = 9,
|
||||
OLECMDID_PROPERTIES = 10,
|
||||
OLECMDID_CUT = 11,
|
||||
OLECMDID_COPY = 12,
|
||||
OLECMDID_PASTE = 13,
|
||||
OLECMDID_PASTESPECIAL = 14,
|
||||
OLECMDID_UNDO = 15,
|
||||
OLECMDID_REDO = 16,
|
||||
OLECMDID_SELECTALL = 17,
|
||||
OLECMDID_CLEARSELECTION = 18,
|
||||
OLECMDID_ZOOM = 19,
|
||||
OLECMDID_GETZOOMRANGE = 20,
|
||||
OLECMDID_UPDATECOMMANDS = 21,
|
||||
OLECMDID_REFRESH = 22,
|
||||
OLECMDID_STOP = 23,
|
||||
OLECMDID_HIDETOOLBARS = 24,
|
||||
OLECMDID_SETPROGRESSMAX = 25,
|
||||
OLECMDID_SETPROGRESSPOS = 26,
|
||||
OLECMDID_SETPROGRESSTEXT = 27,
|
||||
OLECMDID_SETTITLE = 28,
|
||||
OLECMDID_SETDOWNLOADSTATE = 29,
|
||||
OLECMDID_STOPDOWNLOAD = 30,
|
||||
OLECMDID_ONTOOLBARACTIVATED = 31,
|
||||
OLECMDID_FIND = 32,
|
||||
OLECMDID_DELETE = 33,
|
||||
OLECMDID_HTTPEQUIV = 34,
|
||||
OLECMDID_HTTPEQUIV_DONE = 35,
|
||||
OLECMDID_ENABLE_INTERACTION = 36,
|
||||
OLECMDID_ONUNLOAD = 37,
|
||||
OLECMDID_PROPERTYBAG2 = 38,
|
||||
OLECMDID_PREREFRESH = 39,
|
||||
OLECMDID_SHOWSCRIPTERROR = 40,
|
||||
OLECMDID_SHOWMESSAGE = 41,
|
||||
OLECMDID_SHOWFIND = 42,
|
||||
OLECMDID_SHOWPAGESETUP = 43,
|
||||
OLECMDID_SHOWPRINT = 44,
|
||||
OLECMDID_CLOSE = 45,
|
||||
OLECMDID_ALLOWUILESSSAVEAS = 46,
|
||||
OLECMDID_DONTDOWNLOADCSS = 47,
|
||||
OLECMDID_UPDATEPAGESTATUS = 48,
|
||||
OLECMDID_PRINT2 = 49,
|
||||
OLECMDID_PRINTPREVIEW2 = 50,
|
||||
OLECMDID_SETPRINTTEMPLATE = 51,
|
||||
OLECMDID_GETPRINTTEMPLATE = 52,
|
||||
OLECMDID_PAGEACTIONBLOCKED = 55,
|
||||
OLECMDID_PAGEACTIONUIQUERY = 56,
|
||||
OLECMDID_FOCUSVIEWCONTROLS = 57,
|
||||
OLECMDID_FOCUSVIEWCONTROLSQUERY = 58,
|
||||
OLECMDID_SHOWPAGEACTIONMENU = 59
|
||||
}OLECMDID;
|
||||
enum
|
||||
{
|
||||
OLECMDF_SUPPORTED = 1,
|
||||
OLECMDF_ENABLED = 2,
|
||||
OLECMDF_LATCHED = 4,
|
||||
OLECMDF_NINCHED = 8,
|
||||
OLECMDF_INVISIBLE = 16,
|
||||
OLECMDF_DEFHIDEONCTXTMENU = 32
|
||||
}OLECMDF;
|
||||
enum
|
||||
{
|
||||
OLECMDEXECOPT_DODEFAULT = 0,
|
||||
OLECMDEXECOPT_PROMPTUSER = 1,
|
||||
OLECMDEXECOPT_DONTPROMPTUSER = 2,
|
||||
OLECMDEXECOPT_SHOWHELP = 3
|
||||
}OLECMDEXECOPT;
|
||||
enum
|
||||
{
|
||||
READYSTATE_UNINITIALIZED = 0,
|
||||
READYSTATE_LOADING = 1,
|
||||
READYSTATE_LOADED = 2,
|
||||
READYSTATE_INTERACTIVE = 3,
|
||||
READYSTATE_COMPLETE = 4
|
||||
}tagREADYSTATE;
|
||||
enum
|
||||
{
|
||||
secureLockIconUnsecure = 0,
|
||||
secureLockIconMixed = 1,
|
||||
secureLockIconSecureUnknownBits = 2,
|
||||
secureLockIconSecure40Bit = 3,
|
||||
secureLockIconSecure56Bit = 4,
|
||||
secureLockIconSecureFortezza = 5,
|
||||
secureLockIconSecure128Bit = 6
|
||||
}SecureLockIconConstants;
|
||||
enum
|
||||
{
|
||||
SWC_EXPLORER = 0,
|
||||
SWC_BROWSER = 1,
|
||||
SWC_3RDPARTY = 2,
|
||||
SWC_CALLBACK = 4
|
||||
}ShellWindowTypeConstants;
|
||||
enum
|
||||
{
|
||||
SWFO_NEEDDISPATCH = 1,
|
||||
SWFO_INCLUDEPENDING = 2,
|
||||
SWFO_COOKIEPASSED = 4
|
||||
}ShellWindowFindWindowOptions;
|
||||
|
||||
|
||||
// 작업
|
||||
public:
|
||||
|
||||
// IWebBrowser2
|
||||
|
||||
// Functions
|
||||
//
|
||||
|
||||
void GoBack()
|
||||
{
|
||||
InvokeHelper(0x64, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
|
||||
}
|
||||
void GoForward()
|
||||
{
|
||||
InvokeHelper(0x65, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
|
||||
}
|
||||
void GoHome()
|
||||
{
|
||||
InvokeHelper(0x66, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
|
||||
}
|
||||
void GoSearch()
|
||||
{
|
||||
InvokeHelper(0x67, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
|
||||
}
|
||||
void Navigate(LPCTSTR URL, VARIANT * Flags, VARIANT * TargetFrameName, VARIANT * PostData, VARIANT * Headers)
|
||||
{
|
||||
static BYTE parms[] = VTS_BSTR VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT ;
|
||||
InvokeHelper(0x68, DISPATCH_METHOD, VT_EMPTY, NULL, parms, URL, Flags, TargetFrameName, PostData, Headers);
|
||||
}
|
||||
void Refresh()
|
||||
{
|
||||
InvokeHelper(DISPID_REFRESH, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
|
||||
}
|
||||
void Refresh2(VARIANT * Level)
|
||||
{
|
||||
static BYTE parms[] = VTS_PVARIANT ;
|
||||
InvokeHelper(0x69, DISPATCH_METHOD, VT_EMPTY, NULL, parms, Level);
|
||||
}
|
||||
void Stop()
|
||||
{
|
||||
InvokeHelper(0x6a, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
|
||||
}
|
||||
LPDISPATCH get_Application()
|
||||
{
|
||||
LPDISPATCH result;
|
||||
InvokeHelper(0xc8, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
LPDISPATCH get_Parent()
|
||||
{
|
||||
LPDISPATCH result;
|
||||
InvokeHelper(0xc9, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
LPDISPATCH get_Container()
|
||||
{
|
||||
LPDISPATCH result;
|
||||
InvokeHelper(0xca, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
LPDISPATCH get_Document()
|
||||
{
|
||||
LPDISPATCH result;
|
||||
InvokeHelper(0xcb, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
BOOL get_TopLevelContainer()
|
||||
{
|
||||
BOOL result;
|
||||
InvokeHelper(0xcc, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
CString get_Type()
|
||||
{
|
||||
CString result;
|
||||
InvokeHelper(0xcd, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
long get_Left()
|
||||
{
|
||||
long result;
|
||||
InvokeHelper(0xce, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
void put_Left(long newValue)
|
||||
{
|
||||
static BYTE parms[] = VTS_I4 ;
|
||||
InvokeHelper(0xce, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
|
||||
}
|
||||
long get_Top()
|
||||
{
|
||||
long result;
|
||||
InvokeHelper(0xcf, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
void put_Top(long newValue)
|
||||
{
|
||||
static BYTE parms[] = VTS_I4 ;
|
||||
InvokeHelper(0xcf, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
|
||||
}
|
||||
long get_Width()
|
||||
{
|
||||
long result;
|
||||
InvokeHelper(0xd0, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
void put_Width(long newValue)
|
||||
{
|
||||
static BYTE parms[] = VTS_I4 ;
|
||||
InvokeHelper(0xd0, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
|
||||
}
|
||||
long get_Height()
|
||||
{
|
||||
long result;
|
||||
InvokeHelper(0xd1, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
void put_Height(long newValue)
|
||||
{
|
||||
static BYTE parms[] = VTS_I4 ;
|
||||
InvokeHelper(0xd1, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
|
||||
}
|
||||
CString get_LocationName()
|
||||
{
|
||||
CString result;
|
||||
InvokeHelper(0xd2, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
CString get_LocationURL()
|
||||
{
|
||||
CString result;
|
||||
InvokeHelper(0xd3, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
BOOL get_Busy()
|
||||
{
|
||||
BOOL result;
|
||||
InvokeHelper(0xd4, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
void Quit()
|
||||
{
|
||||
InvokeHelper(0x12c, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
|
||||
}
|
||||
void ClientToWindow(long * pcx, long * pcy)
|
||||
{
|
||||
static BYTE parms[] = VTS_PI4 VTS_PI4 ;
|
||||
InvokeHelper(0x12d, DISPATCH_METHOD, VT_EMPTY, NULL, parms, pcx, pcy);
|
||||
}
|
||||
void PutProperty(LPCTSTR Property, VARIANT vtValue)
|
||||
{
|
||||
static BYTE parms[] = VTS_BSTR VTS_VARIANT ;
|
||||
InvokeHelper(0x12e, DISPATCH_METHOD, VT_EMPTY, NULL, parms, Property, &vtValue);
|
||||
}
|
||||
VARIANT GetProperty(LPCTSTR Property)
|
||||
{
|
||||
VARIANT result;
|
||||
static BYTE parms[] = VTS_BSTR ;
|
||||
InvokeHelper(0x12f, DISPATCH_METHOD, VT_VARIANT, (void*)&result, parms, Property);
|
||||
return result;
|
||||
}
|
||||
CString get_Name()
|
||||
{
|
||||
CString result;
|
||||
InvokeHelper(0x0, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
long get_HWND()
|
||||
{
|
||||
long result;
|
||||
InvokeHelper(DISPID_HWND, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
CString get_FullName()
|
||||
{
|
||||
CString result;
|
||||
InvokeHelper(0x190, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
CString get_Path()
|
||||
{
|
||||
CString result;
|
||||
InvokeHelper(0x191, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
BOOL get_Visible()
|
||||
{
|
||||
BOOL result;
|
||||
InvokeHelper(0x192, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
void put_Visible(BOOL newValue)
|
||||
{
|
||||
static BYTE parms[] = VTS_BOOL ;
|
||||
InvokeHelper(0x192, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
|
||||
}
|
||||
BOOL get_StatusBar()
|
||||
{
|
||||
BOOL result;
|
||||
InvokeHelper(0x193, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
void put_StatusBar(BOOL newValue)
|
||||
{
|
||||
static BYTE parms[] = VTS_BOOL ;
|
||||
InvokeHelper(0x193, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
|
||||
}
|
||||
CString get_StatusText()
|
||||
{
|
||||
CString result;
|
||||
InvokeHelper(0x194, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
void put_StatusText(LPCTSTR newValue)
|
||||
{
|
||||
static BYTE parms[] = VTS_BSTR ;
|
||||
InvokeHelper(0x194, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
|
||||
}
|
||||
long get_ToolBar()
|
||||
{
|
||||
long result;
|
||||
InvokeHelper(0x195, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
void put_ToolBar(long newValue)
|
||||
{
|
||||
static BYTE parms[] = VTS_I4 ;
|
||||
InvokeHelper(0x195, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
|
||||
}
|
||||
BOOL get_MenuBar()
|
||||
{
|
||||
BOOL result;
|
||||
InvokeHelper(0x196, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
void put_MenuBar(BOOL newValue)
|
||||
{
|
||||
static BYTE parms[] = VTS_BOOL ;
|
||||
InvokeHelper(0x196, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
|
||||
}
|
||||
BOOL get_FullScreen()
|
||||
{
|
||||
BOOL result;
|
||||
InvokeHelper(0x197, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
void put_FullScreen(BOOL newValue)
|
||||
{
|
||||
static BYTE parms[] = VTS_BOOL ;
|
||||
InvokeHelper(0x197, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
|
||||
}
|
||||
void Navigate2(VARIANT * URL, VARIANT * Flags, VARIANT * TargetFrameName, VARIANT * PostData, VARIANT * Headers)
|
||||
{
|
||||
static BYTE parms[] = VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT ;
|
||||
InvokeHelper(0x1f4, DISPATCH_METHOD, VT_EMPTY, NULL, parms, URL, Flags, TargetFrameName, PostData, Headers);
|
||||
}
|
||||
long QueryStatusWB(long cmdID)
|
||||
{
|
||||
long result;
|
||||
static BYTE parms[] = VTS_I4 ;
|
||||
InvokeHelper(0x1f5, DISPATCH_METHOD, VT_I4, (void*)&result, parms, cmdID);
|
||||
return result;
|
||||
}
|
||||
void ExecWB(long cmdID, long cmdexecopt, VARIANT * pvaIn, VARIANT * pvaOut)
|
||||
{
|
||||
static BYTE parms[] = VTS_I4 VTS_I4 VTS_PVARIANT VTS_PVARIANT ;
|
||||
InvokeHelper(0x1f6, DISPATCH_METHOD, VT_EMPTY, NULL, parms, cmdID, cmdexecopt, pvaIn, pvaOut);
|
||||
}
|
||||
void ShowBrowserBar(VARIANT * pvaClsid, VARIANT * pvarShow, VARIANT * pvarSize)
|
||||
{
|
||||
static BYTE parms[] = VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT ;
|
||||
InvokeHelper(0x1f7, DISPATCH_METHOD, VT_EMPTY, NULL, parms, pvaClsid, pvarShow, pvarSize);
|
||||
}
|
||||
long get_ReadyState()
|
||||
{
|
||||
long result;
|
||||
InvokeHelper(DISPID_READYSTATE, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
BOOL get_Offline()
|
||||
{
|
||||
BOOL result;
|
||||
InvokeHelper(0x226, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
void put_Offline(BOOL newValue)
|
||||
{
|
||||
static BYTE parms[] = VTS_BOOL ;
|
||||
InvokeHelper(0x226, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
|
||||
}
|
||||
BOOL get_Silent()
|
||||
{
|
||||
BOOL result;
|
||||
InvokeHelper(0x227, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
void put_Silent(BOOL newValue)
|
||||
{
|
||||
static BYTE parms[] = VTS_BOOL ;
|
||||
InvokeHelper(0x227, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
|
||||
}
|
||||
BOOL get_RegisterAsBrowser()
|
||||
{
|
||||
BOOL result;
|
||||
InvokeHelper(0x228, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
void put_RegisterAsBrowser(BOOL newValue)
|
||||
{
|
||||
static BYTE parms[] = VTS_BOOL ;
|
||||
InvokeHelper(0x228, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
|
||||
}
|
||||
BOOL get_RegisterAsDropTarget()
|
||||
{
|
||||
BOOL result;
|
||||
InvokeHelper(0x229, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
void put_RegisterAsDropTarget(BOOL newValue)
|
||||
{
|
||||
static BYTE parms[] = VTS_BOOL ;
|
||||
InvokeHelper(0x229, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
|
||||
}
|
||||
BOOL get_TheaterMode()
|
||||
{
|
||||
BOOL result;
|
||||
InvokeHelper(0x22a, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
void put_TheaterMode(BOOL newValue)
|
||||
{
|
||||
static BYTE parms[] = VTS_BOOL ;
|
||||
InvokeHelper(0x22a, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
|
||||
}
|
||||
BOOL get_AddressBar()
|
||||
{
|
||||
BOOL result;
|
||||
InvokeHelper(0x22b, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
void put_AddressBar(BOOL newValue)
|
||||
{
|
||||
static BYTE parms[] = VTS_BOOL ;
|
||||
InvokeHelper(0x22b, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
|
||||
}
|
||||
BOOL get_Resizable()
|
||||
{
|
||||
BOOL result;
|
||||
InvokeHelper(0x22c, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
|
||||
return result;
|
||||
}
|
||||
void put_Resizable(BOOL newValue)
|
||||
{
|
||||
static BYTE parms[] = VTS_BOOL ;
|
||||
InvokeHelper(0x22c, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
|
||||
}
|
||||
|
||||
// Properties
|
||||
//
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 7.2 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,21 @@
|
||||
//
|
||||
// SPConsole.RC2 - resources Microsoft Visual C++에서 직접 편집하지 않는 리소스
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#error 이 파일은 Microsoft Visual C++에서 편집할 수 없습니다.
|
||||
#endif //APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// 여기에 수동으로 편집한 리소스를 추가합니다.
|
||||
|
||||
#include "XTToolkitPro.rc"
|
||||
|
||||
/*
|
||||
#include <../../DSControls/Include/XTPVersion.h>
|
||||
|
||||
#if defined(_XTP_STATICLINK) || !defined(_AFXDLL)
|
||||
#include <XTToolkitPro.rc>
|
||||
#endif
|
||||
*/
|
||||
|
After Width: | Height: | Size: 92 KiB |
|
After Width: | Height: | Size: 766 B |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
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 |