www.gusucode.com > VC++个人考勤软件源代码-源码程序 > VC++个人考勤软件源代码-源码程序/code/DualListDialog.cpp
// DualListDialog.cpp : implementation file // Download by http://www.NewXing.com #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;i<monthday;i++) { CString s; s.Format("%d月%2d日 ",mth,i+1); wk = wk1+fmod(i,7); if(wk>7) 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;(j<m_pParentDlg->m_iHoliday) && (m_pParentDlg->m_ArrayHoliday[j]!=n);j++) ; if(j<m_pParentDlg->m_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(); }