// 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::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(); }