148 lines
3.5 KiB
C++
148 lines
3.5 KiB
C++
// ConfigDlg.cpp : 구현 파일입니다.
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "ConfigDlg.h"
|
|
|
|
#include "../SHEUtil.h"
|
|
|
|
|
|
// CConfigDlg 대화 상자입니다.
|
|
|
|
IMPLEMENT_DYNAMIC(CConfigDlg, CDialog)
|
|
CConfigDlg::CConfigDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CConfigDlg::IDD, pParent)
|
|
{
|
|
m_iPage = -1;
|
|
}
|
|
|
|
CConfigDlg::~CConfigDlg()
|
|
{
|
|
for (std::vector<CConfigPage*>::iterator iter = m_dlgVec.begin(); iter != m_dlgVec.end(); iter++)
|
|
delete (*iter);
|
|
}
|
|
|
|
void CConfigDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_TAB, m_tab);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CConfigDlg, CDialog)
|
|
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB, OnTabSelchange)
|
|
ON_BN_CLICKED(IDOK, OnOk)
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
// CConfigDlg 메시지 처리기입니다.
|
|
|
|
BOOL CConfigDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
// TODO: 여기에 추가 초기화 작업을 추가합니다.
|
|
m_tab.InsertItem(0, "전송후 작업");
|
|
m_tab.InsertItem(1, "같은 파일 처리");
|
|
m_tab.InsertItem(2, "기타");
|
|
m_tab.SetItemSize(CSize(130, 17));
|
|
|
|
m_tab.GetClientRect(&m_rcFrame);
|
|
m_rcFrame.left += 1;
|
|
m_rcFrame.top += 20;
|
|
m_rcFrame.right -= 1;
|
|
m_rcFrame.bottom -= 1;
|
|
|
|
if (m_regutil.OpenKey(HKEY_CURRENT_USER, CString(REG_KEY))) {
|
|
m_dlg1.m_nAfterWork = m_regutil.GetNumValue("AfterWork");
|
|
m_dlg1.m_bForceKill = m_regutil.GetNumValue("ForceKill");
|
|
m_dlg2.m_nWritePolicy = m_regutil.GetNumValue("WritePolicy");
|
|
m_dlg3.m_bChkShowAllFile = m_regutil.GetNumValue("ShowAllFile");
|
|
|
|
m_regutil.CloseKey();
|
|
}
|
|
|
|
AddPage(m_dlg1, "전송후 작업");
|
|
AddPage(m_dlg2, "같은 파일 처리");
|
|
AddPage(m_dlg3, "기타");
|
|
|
|
ShowPage(0);
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
|
|
}
|
|
|
|
void CConfigDlg::AddPage(CConfigSubDlg &dlg, LPCTSTR pszCaption)
|
|
{
|
|
CConfigPage *pcp = new CConfigPage();
|
|
pcp->m_pdlg = &dlg;
|
|
pcp->m_nID = dlg.GetID();
|
|
pcp->m_sCaption = pszCaption;
|
|
|
|
m_dlgVec.push_back(pcp);
|
|
|
|
if (!::IsWindow(dlg.m_hWnd))
|
|
dlg.Create(dlg.GetID(), &m_tab);
|
|
}
|
|
|
|
BOOL CConfigDlg::ShowPage(int iPage)
|
|
{
|
|
if (m_tab.GetCurSel() >= 0) {
|
|
CConfigPage* pcp = (CConfigPage*)m_dlgVec[m_tab.GetCurSel()];
|
|
if (!pcp)
|
|
return FALSE;
|
|
|
|
if (pcp->m_pdlg) {
|
|
if (::IsWindow(pcp->m_pdlg->m_hWnd))
|
|
pcp->m_pdlg->ShowWindow(SW_HIDE);
|
|
}
|
|
}
|
|
|
|
CConfigPage* pcp = (CConfigPage*)m_dlgVec[iPage];
|
|
if (!pcp)
|
|
return FALSE;
|
|
|
|
if (pcp->m_pdlg) {
|
|
if (::IsWindow(pcp->m_pdlg->m_hWnd)) {
|
|
pcp->m_pdlg->SetParent(&m_tab);
|
|
pcp->m_pdlg->MoveWindow(m_rcFrame.left, m_rcFrame.top, m_rcFrame.Width(), m_rcFrame.Height());
|
|
pcp->m_pdlg->ShowWindow(SW_SHOW);
|
|
pcp->m_pdlg->RedrawWindow();
|
|
pcp->m_pdlg->SetFocus();
|
|
}
|
|
|
|
m_tab.SetCurSel(iPage);
|
|
|
|
m_iPage = iPage;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CConfigDlg::OnTabSelchange(NMHDR *pNMHDR, LRESULT *pResult)
|
|
{
|
|
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
|
|
ShowPage(m_tab.GetCurSel());
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
void CConfigDlg::OnOk()
|
|
{
|
|
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
|
|
m_dlg1.UpdateData();
|
|
m_dlg2.UpdateData();
|
|
m_dlg3.UpdateData();
|
|
|
|
if (m_regutil.OpenKey(HKEY_CURRENT_USER, CString(REG_KEY))) {
|
|
m_regutil.SetNumValue("AfterWork", m_dlg1.m_nAfterWork);
|
|
m_regutil.SetNumValue("ForceKill", m_dlg1.m_bForceKill);
|
|
m_regutil.SetNumValue("WritePolicy", m_dlg2.m_nWritePolicy);
|
|
m_regutil.SetNumValue("ShowAllFile", m_dlg3.m_bChkShowAllFile);
|
|
|
|
m_regutil.CloseKey();
|
|
}
|
|
|
|
CDialog::OnOK();
|
|
}
|