// DlgTab.cpp : 구현 파일입니다.
|
//
|
|
#include "stdafx.h"
|
#include "ReviewSystem.h"
|
#include "DlgTab.h"
|
|
|
// CDlgTab 대화 상자입니다.
|
|
IMPLEMENT_DYNAMIC(CDlgTab, CDialog)
|
|
CDlgTab::CDlgTab(CWnd* pParent /*=NULL*/)
|
: CDialog(CDlgTab::IDD, pParent)
|
{
|
|
}
|
|
CDlgTab::~CDlgTab()
|
{
|
m_vecWndPtr.clear();
|
m_vecString.clear();
|
}
|
|
void CDlgTab::DoDataExchange(CDataExchange* pDX)
|
{
|
CDialog::DoDataExchange(pDX);
|
DDX_Control(pDX, IDC_TAB_CONTROL, m_ctrlTabCtrl);
|
}
|
|
|
BEGIN_MESSAGE_MAP(CDlgTab, CDialog)
|
ON_BN_CLICKED(IDOK, &CDlgTab::OnBnClickedOk)
|
ON_BN_CLICKED(IDCANCEL, &CDlgTab::OnBnClickedCancel)
|
ON_WM_SIZE()
|
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB_CONTROL, &CDlgTab::OnTcnSelchangeTabControl)
|
// ON_MESSAGE(UM_PROCESS_STATUS_UPDATE, &CDlgTab::OnProcessStatusUpdate)
|
ON_WM_ERASEBKGND()
|
ON_WM_CTLCOLOR()
|
END_MESSAGE_MAP()
|
|
|
// CDlgTab 메시지 처리기입니다.
|
|
void CDlgTab::OnBnClickedOk()
|
{
|
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
|
//OnOK();
|
}
|
|
void CDlgTab::OnBnClickedCancel()
|
{
|
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
|
//OnCancel();
|
}
|
|
void CDlgTab::InitTabControl()
|
{
|
m_ctrlTabCtrl.DeleteAllItems();
|
|
int nIdx = 0;
|
for (VectorStringIt it=m_vecString.begin(); it!=m_vecString.end(); it++)
|
{
|
m_ctrlTabCtrl.InsertItem(nIdx++, *it);
|
}
|
|
m_ctrlTabCtrl.SetCurSel(0);
|
|
for (int i=0; i<(int)m_vecWndPtr.size(); i++)
|
{
|
if (m_vecWndPtr[i]==NULL) continue;
|
|
if (0==i)
|
{
|
m_vecWndPtr[i]->ShowWindow(SW_SHOW);
|
}
|
else
|
{
|
m_vecWndPtr[i]->ShowWindow(SW_HIDE);
|
}
|
}
|
|
}
|
|
void CDlgTab::AddWndPtr(CWnd *pWnd, const CString& strName)
|
{
|
if (pWnd==NULL) return;
|
pWnd->SetParent(this);
|
m_vecWndPtr.push_back(pWnd);
|
m_vecString.push_back(strName);
|
|
InitTabControl();
|
}
|
|
|
void CDlgTab::OnSize(UINT nType, int cx, int cy)
|
{
|
CDialog::OnSize(nType, cx, cy);
|
|
// TODO: 여기에 메시지 처리기 코드를 추가합니다.
|
if (m_ctrlTabCtrl.GetSafeHwnd())
|
{
|
m_ctrlTabCtrl.SetWindowPos(NULL, 0, 0, cx, cy, SWP_NOZORDER);
|
}
|
}
|
|
void CDlgTab::OnTcnSelchangeTabControl(NMHDR *pNMHDR, LRESULT *pResult)
|
{
|
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
|
int nTabIdx = m_ctrlTabCtrl.GetCurSel();
|
|
SetActiveDialog(nTabIdx);
|
if (nTabIdx == 1)
|
{
|
//taek 여기에서 넣어 볼까?
|
}
|
*pResult = 0;
|
}
|
|
void CDlgTab::SetActiveDialog(int nTabIdx)
|
{
|
if (nTabIdx<0 || nTabIdx>=(int)m_vecWndPtr.size()) return;
|
|
for (int i=0; i<(int)m_vecWndPtr.size(); i++)
|
{
|
if (m_vecWndPtr[i]==NULL) continue;
|
|
if (nTabIdx==i)
|
{
|
m_vecWndPtr[i]->ShowWindow(SW_SHOW);
|
}
|
else
|
{
|
m_vecWndPtr[i]->ShowWindow(SW_HIDE);
|
}
|
}
|
|
m_ctrlTabCtrl.SetCurSel(nTabIdx);
|
}
|
|
BOOL CDlgTab::OnInitDialog()
|
{
|
CDialog::OnInitDialog();
|
|
// TODO: 여기에 추가 초기화 작업을 추가합니다.
|
InitTabControl();
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
|
}
|
|
void CDlgTab::UpdateProcessStatus( int nLineType, int nMachineType, int nProcessStatus, const CGlassResult* pGlassResult )
|
{
|
|
switch(nProcessStatus)
|
{
|
case ProcessLoading:
|
SetActiveDialog(0);
|
break;
|
case ProcessAlignStart:
|
SetActiveDialog(2);
|
break;
|
//case ProcessReadRawFile:
|
|
default:
|
SetActiveDialog(0);
|
break;
|
}
|
}
|
|
|
BOOL CDlgTab::OnEraseBkgnd(CDC* pDC)
|
{
|
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
|
CRect rect;
|
GetClientRect(&rect);
|
__super::OnEraseBkgnd(pDC);
|
pDC->FillSolidRect(rect, RGB(38,38,38) );
|
|
return TRUE;
|
}
|
|
|
HBRUSH CDlgTab::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
|
{
|
HBRUSH hbr = __super::OnCtlColor(pDC, pWnd, nCtlColor);
|
|
CRect rect;
|
CString strClass = _T("");
|
UINT nID = pWnd->GetDlgCtrlID();
|
|
if(nCtlColor == CTLCOLOR_STATIC)
|
{
|
pDC->SetTextColor(RGB(255,255,255));
|
pDC->SetBkColor(RGB(38,38,38));
|
hbr = (HBRUSH)GetStockObject(NULL_BRUSH);
|
}
|
|
|
// TODO: 기본값이 적당하지 않으면 다른 브러시를 반환합니다.
|
return hbr;
|
|
}
|