www.pudn.com > 个人考勤软件开发实例配套代码.zip > DualListDialog.cpp


// DualListDialog.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "attendance.h" 
#include "DualListDialog.h" 
//#include "math.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CDualListDialog dialog 
 
 
CDualListDialog::CDualListDialog(CWnd* pParent /*=NULL*/) 
	: CDialog(CDualListDialog::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CDualListDialog) 
	//}}AFX_DATA_INIT 
} 
 
 
void CDualListDialog::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CDualListDialog) 
	DDX_Control(pDX, IDOK, m_BtnOk); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CDualListDialog, CDialog) 
	//{{AFX_MSG_MAP(CDualListDialog) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CDualListDialog message handlers 
 
BOOL CDualListDialog::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
	 
	// TODO: Add extra initialization here 
    // ADDED TO DEFAULT THE LISTS. 
    // This code will need to be replaced with your application specific  
    // code that knows what belongs in each list. 
//	if( 
	int mth = m_pParentDlg->sAttend[0].tAmOnDuty.GetMonth(); 
	CString s; 
	s.Format("%d月份工作日、公休日设定",mth); 
	SetWindowText(s); 
	bool bIsCur=m_pParentDlg->sYearTotal[m_pParentDlg->m_iTotalSel].sAttend[0].tAmOnDuty.Format("%Y%m")==m_pParentDlg->m_Time.Format("%Y%m") ?  true : false; 
	m_BtnOk.EnableWindow(bIsCur); 
	 
/*	{ 
		m_BtnAdd.EnableWindow(true); 
		m_BtnRemove.EnableWindow(false); 
		m_BtnRemoveAll.EnableWindow(false); 
	} 
	    m_DualListManager.AddItemToAvailableList(_T("Red"), 0); 
    m_DualListManager.AddItemToAvailableList(_T("Green"), 1); 
    m_DualListManager.AddItemToAvailableList(_T("Blue"), 2); 
    m_DualListManager.AddItemToChoosenList(_T("Yellow"), 3); 
    m_DualListManager.AddItemToChoosenList(_T("Purple"), 4); 
    m_DualListManager.AddItemToChoosenList(_T("Orange"), 5); 
*/	int day = m_pParentDlg->sAttend[0].tAmOnDuty.GetDay(); 
	int wk =m_pParentDlg->sAttend[0].tAmOnDuty.GetDayOfWeek();//1..7 
 
	int year = m_pParentDlg->sAttend[0].tAmOnDuty.GetYear(); 
	//int mth = m_pParentDlg->sAttend[0].tAmOnDuty.GetMonth(); 
	int monthday=MonthDay[mth-1]; 
	if(mth==2 && fmod(year,4)==0) 
		monthday++; 
	int	wks = day/7; 
	int surplus = fmod(day-1,7);//0..6 
 
	int wk1 = surplus>=wk ? wk+7-surplus : wk-surplus; 
	 
	for(int i=0;i7) wk-=7; 
		 
		s += WeekTable[wk-1]; 
		if(m_pParentDlg->m_iHoliday==-1) 
		{ 
		if(wk==1 || wk==7) 
			m_DualListManager.AddItemToChoosenList(s, i); 
		else 
			m_DualListManager.AddItemToAvailableList(s, i); 
		} 
		else 
		{ 
			int n=i+1; 
			for(int j=0;(jm_iHoliday) && (m_pParentDlg->m_ArrayHoliday[j]!=n);j++) 
				; 
			if(jm_iHoliday && m_pParentDlg->m_ArrayHoliday[j]==i+1) 
				m_DualListManager.AddItemToChoosenList(s, i); 
			else if(j==m_pParentDlg->m_iHoliday) 
				m_DualListManager.AddItemToAvailableList(s, i); 
		} 
 
	} 
 
    // ADDED TO INITIALIZE THE MANAGER CLASS 
    m_DualListManager.InitializeControls(this,  
                                         IDC_DLG_LIST_AVAILABLE, 
                                         IDC_DLG_LIST_CHOOSEN,  
                                         IDC_DLG_ADD, 
                                         NULL,//IDC_DLG_ADD_ALL, 
                                         IDC_DLG_REMOVE, 
                                         IDC_DLG_REMOVE_ALL, 
                                         NULL,//IDC_DLG_MOVE_UP, 
                                         NULL, 
										 bIsCur);//IDC_DLG_MOVE_DOWN); 
 
	 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
BOOL CDualListDialog::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)  
{ 
	// TODO: Add your specialized code here and/or call the base class 
    m_DualListManager.ProcessCmdMsg(nID, nCode); 
	 
	return CDialog::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo); 
} 
 
void CDualListDialog::OnOK()  
{ 
	// TODO: Add extra validation here 
	CListBox* pChoosen = (CListBox*)this->GetDlgItem(IDC_DLG_LIST_CHOOSEN); 
	int iCount = pChoosen->GetCount(); 
	m_pParentDlg->m_iHoliday=iCount; 
	m_pParentDlg->m_ArrayHoliday.SetSize(iCount); 
    for(int iIndex = 0; iIndex < iCount; ++iIndex) 
    { 
		//long l=pChoosen->GetItemData(iIndex); 
		//pDlg->m_ArrayHoliday[iIndex] = m_ArrayChoosen[iIndex]+1; 
		m_pParentDlg->m_ArrayHoliday[iIndex] = pChoosen->GetItemData(iIndex)+1; 
		//l=m_pParentDlg->m_ArrayHoliday[iIndex]; 
	} 
	CListBox* pAvailable = (CListBox*)this->GetDlgItem(IDC_DLG_LIST_AVAILABLE); 
	m_pParentDlg->m_iWorkDays = pAvailable->GetCount(); 
	 
	CDialog::OnOK(); 
}