📄 addmissiondlg.cpp
字号:
// AddMissionDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Lesson.h"
#include "AddMissionDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include "Mission.h"
#include "LessonDoc.h"
#include "MainFrm.h"
/////////////////////////////////////////////////////////////////////////////
// CAddMissionDlg dialog
CAddMissionDlg::CAddMissionDlg(CWnd* pParent /*=NULL*/)
: CDialog(CAddMissionDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CAddMissionDlg)
m_Ad_Num = _T("");
m_Lim_Num = _T("");
m_Num = _T("");
m_Subject = _T("");
m_Grade = _T("");
m_Class = _T("");
m_IsAllCopy = FALSE;
//}}AFX_DATA_INIT
}
void CAddMissionDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAddMissionDlg)
DDX_Control(pDX, IDC_COMBO_SUBJECT, m_Combo_Subject);
DDX_Control(pDX, IDC_COMBO_LIM_WEEK, m_Combo_Lim_Week);
DDX_Control(pDX, IDC_COMBO_GRADE, m_Combo_Grade);
DDX_Control(pDX, IDC_COMBO_FIX_WEEK, m_Combo_Fix_Week);
DDX_Control(pDX, IDC_COMBO_FIX_STANZA, m_Combo_Fix_Stanza);
DDX_Control(pDX, IDC_COMBO_CLASS, m_Combo_Class);
DDX_Control(pDX, IDC_COMBO_AD_STANZA, m_Combo_Ad_Stanza);
DDX_Control(pDX, IDC_LIST, m_List);
DDX_Text(pDX, IDC_EDIT_AD_NUM, m_Ad_Num);
DDX_Text(pDX, IDC_EDIT_LIM_NUM, m_Lim_Num);
DDX_Text(pDX, IDC_EDIT_NUM, m_Num);
DDX_CBString(pDX, IDC_COMBO_SUBJECT, m_Subject);
DDX_CBString(pDX, IDC_COMBO_GRADE, m_Grade);
DDX_CBString(pDX, IDC_COMBO_CLASS, m_Class);
DDX_Check(pDX, IDC_CHECK_ALLCOPY, m_IsAllCopy);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAddMissionDlg, CDialog)
//{{AFX_MSG_MAP(CAddMissionDlg)
ON_CBN_EDITCHANGE(IDC_COMBO_AD_STANZA, OnEditchangeComboAdStanza)
ON_CBN_SELENDOK(IDC_COMBO_AD_STANZA, OnSelendokComboAdStanza)
ON_CBN_EDITCHANGE(IDC_COMBO_CLASS, OnEditchangeComboClass)
ON_CBN_SELENDOK(IDC_COMBO_CLASS, OnSelendokComboClass)
ON_CBN_EDITCHANGE(IDC_COMBO_FIX_STANZA, OnEditchangeComboFixStanza)
ON_CBN_SELENDOK(IDC_COMBO_FIX_STANZA, OnSelendokComboFixStanza)
ON_CBN_EDITCHANGE(IDC_COMBO_FIX_WEEK, OnEditchangeComboFixWeek)
ON_CBN_SELENDOK(IDC_COMBO_FIX_WEEK, OnSelendokComboFixWeek)
ON_CBN_EDITCHANGE(IDC_COMBO_GRADE, OnEditchangeComboGrade)
ON_CBN_SELENDOK(IDC_COMBO_GRADE, OnSelendokComboGrade)
ON_CBN_EDITCHANGE(IDC_COMBO_LIM_WEEK, OnEditchangeComboLimWeek)
ON_CBN_SELENDOK(IDC_COMBO_LIM_WEEK, OnSelendokComboLimWeek)
ON_CBN_EDITCHANGE(IDC_COMBO_SUBJECT, OnEditchangeComboSubject)
ON_CBN_SELENDOK(IDC_COMBO_SUBJECT, OnSelendokComboSubject)
ON_EN_CHANGE(IDC_EDIT_AD_NUM, OnChangeEditAdNum)
ON_EN_CHANGE(IDC_EDIT_LIM_NUM, OnChangeEditLimNum)
ON_EN_CHANGE(IDC_EDIT_NUM, OnChangeEditNum)
ON_LBN_SELCHANGE(IDC_LIST, OnSelchangeList)
ON_BN_CLICKED(IDC_BUTTON_ADD1, OnButtonAdd1)
ON_BN_CLICKED(IDC_BUTTON_ADD2, OnButtonAdd2)
ON_BN_CLICKED(IDC_BUTTON_ADD3, OnButtonAdd3)
ON_BN_CLICKED(IDC_BUTTON_COPY, OnButtonCopy)
ON_BN_CLICKED(IDC_BUTTON_PASTE, OnButtonPaste)
ON_BN_CLICKED(IDC_BUTTON_DEL, OnButtonDel)
ON_BN_CLICKED(IDC_BUTTON_SORT, OnButtonSort)
ON_BN_CLICKED(IDC_CHECK_ALLCOPY, OnCheckAllcopy)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CAddMissionDlg message handlers
void CAddMissionDlg::OnEditchangeComboAdStanza()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
}
void CAddMissionDlg::OnSelendokComboAdStanza()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
}
void CAddMissionDlg::OnEditchangeComboClass()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
}
void CAddMissionDlg::OnSelendokComboClass()
{
// TODO: Add your control notification handler code here
int Pos=m_Combo_Class.GetCurSel();
m_Combo_Class.GetLBText(Pos,m_Class);
UpdateData(FALSE);
}
void CAddMissionDlg::OnEditchangeComboFixStanza()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
}
void CAddMissionDlg::OnSelendokComboFixStanza()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
}
void CAddMissionDlg::OnEditchangeComboFixWeek()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
}
void CAddMissionDlg::OnSelendokComboFixWeek()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
}
void CAddMissionDlg::OnEditchangeComboGrade()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CLessonDoc * pDoc=(CLessonDoc *)pDocument;
for(int i=m_Combo_Class.GetCount()-1;i>=0;i--)
m_Combo_Class.DeleteString(i);
CString str;
for(i=0;i<pDoc->GetClassCount(atoi(m_Grade));i++)
{
str.Format("%d班",i+1);
m_Combo_Class.AddString(str);
}
}
void CAddMissionDlg::OnSelendokComboGrade()
{
// TODO: Add your control notification handler code here
int Pos=m_Combo_Grade.GetCurSel();
m_Combo_Grade.GetLBText(Pos,m_Grade);
UpdateData(FALSE);
CLessonDoc * pDoc=(CLessonDoc *)pDocument;
for(int i=m_Combo_Class.GetCount()-1;i>=0;i--)
m_Combo_Class.DeleteString(i);
CString str;
for(i=0;i<pDoc->GetClassCount(atoi(m_Grade));i++)
{
str.Format("%d班",i+1);
m_Combo_Class.AddString(str);
}
}
void CAddMissionDlg::OnEditchangeComboLimWeek()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
}
void CAddMissionDlg::OnSelendokComboLimWeek()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
}
void CAddMissionDlg::OnEditchangeComboSubject()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
}
void CAddMissionDlg::OnSelendokComboSubject()
{
// TODO: Add your control notification handler code here
int Pos=m_Combo_Subject.GetCurSel();
m_Combo_Subject.GetLBText(Pos,m_Subject);
UpdateData(FALSE);
}
void CAddMissionDlg::OnChangeEditAdNum()
{
UpdateData(TRUE);
}
void CAddMissionDlg::OnChangeEditLimNum()
{
UpdateData(TRUE);
}
void CAddMissionDlg::OnChangeEditNum()
{
UpdateData(TRUE); // TODO: Add your control notification handler code here
}
void CAddMissionDlg::OnSelchangeList()
{
// TODO: Add your control notification handler code here
int nMaxItems=m_List.GetSelCount();
if(nMaxItems>0)
{
GetDlgItem(IDC_BUTTON_COPY)->EnableWindow(1);
GetDlgItem(IDC_BUTTON_DEL)->EnableWindow(1);
}
else
{
GetDlgItem(IDC_BUTTON_COPY)->EnableWindow(0);
GetDlgItem(IDC_BUTTON_DEL)->EnableWindow(0);
}
}
BOOL CAddMissionDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
SetWindowText(m_Head);
if(Mission->m_Grade>0)
{
m_Subject=Mission->m_Subject;
m_Grade.Format("%d年级",Mission->m_Grade);
m_Class.Format("%d班",Mission->m_Class);
m_Num.Format("%d",Mission->m_Num);
for(int i=0;i<Mission->m_Request.GetSize();i++)
m_List.AddString(Mission->m_Request.GetAt(i));
if(m_List.GetCount()>0)
GetDlgItem(IDC_BUTTON_SORT)->EnableWindow(TRUE);
UpdateData(FALSE);
}
//填充科目组合框
CStringArray subjectrarray;
CLessonDoc * pDoc=(CLessonDoc *)pDocument;
for(int i=pDoc->m_TeacherArray.GetSize()-1;i>=0;i--)
{
CTeacher * Teacher=(CTeacher*)pDoc->m_TeacherArray.GetAt(i);
for(int j=Teacher->m_MissionArray.GetSize()-1;j>=0;j--)
{
CMission * Miss=(CMission*)Teacher->m_MissionArray.GetAt(j);
if(!IsInStrArray(Miss->m_Subject,&subjectrarray))
subjectrarray.Add(Miss->m_Subject);
}
}
for(i=0;i<subjectrarray.GetSize();i++)
m_Combo_Subject.AddString(subjectrarray.GetAt(i));
//填充年级组合框
CString Str;
for(i=0;i<pDoc->GetGradeCount();i++)
{
Str.Format("%d年级",i+1);
m_Combo_Grade.AddString(Str);
}
//填充班级组合框
int G=atoi(m_Grade);
if(G>0)
{
for(i=0;i<pDoc->GetClassCount(G);i++)
{
Str.Format("%d班",i+1);
m_Combo_Class.AddString(Str);
}
}
//填充节次组合框
for(i=0;i<pDoc->m_Info.m_Stanza;i++)
{
Str.Format("第%d节",i+1);
m_Combo_Ad_Stanza.AddString(Str);
m_Combo_Fix_Stanza.AddString(Str);
}
//填充星期组合框
for(i=0;i<pDoc->m_Info.m_Week;i++)
{
Str.Format("星期%d",i+1);
m_Combo_Lim_Week.AddString(Str);
m_Combo_Fix_Week.AddString(Str);
}
CLessonApp * pa=(CLessonApp *)AfxGetApp();
if(pa->m_Request.GetSize()>0)
GetDlgItem(IDC_BUTTON_PASTE)->EnableWindow(1);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
BOOL CAddMissionDlg::IsInStrArray(CString Str, CStringArray* Array)
{
for(int i=Array->GetSize()-1;i>=0;i--)
if(!Array->GetAt(i).CompareNoCase(Str))
return TRUE;
return FALSE;
}
void CAddMissionDlg::OnOK()
{
// TODO: Add extra validation here
// CString s;
// s.Format("m_Subject=%s\nm_Grade=%s\nm_Class=%s\nm_Num=%s",m_Subject,m_Grade,m_Class,m_Num);
// MessageBox(s);
CLessonDoc * pDoc=(CLessonDoc *)pDocument;
Mission->m_Name=pDoc->m_Info.m_SelectTeacherName;
Mission->m_Subject=m_Subject;
Mission->m_Grade=atoi(m_Grade);
Mission->m_Class=atoi(m_Class);
Mission->m_Num=atoi(m_Num);
Mission->m_Request.RemoveAll();
Mission->m_pTeacher=pDoc->GetTeacher(pDoc->m_Info.m_SelectTeacherName);
for(int i=0;i<m_List.GetCount();i++)
{
CString str;
m_List.GetText(i,str);
Mission->m_Request.Add(str);
int Week=0,Stanza=0;
if(!str.Left(2).CompareNoCase("固"))
{
str.Delete(0,6);
Week=atoi(str);
str.Delete(0,3);
Stanza=atoi(str);
Mission->m_Sit[Week-1][Stanza-1]=TRUE;
}
}
CDialog::OnOK();
}
void CAddMissionDlg::OnButtonAdd1()
{
// TODO: Add your control notification handler code here
if(m_Combo_Ad_Stanza.GetCurSel()<0)return;
CString str,comstr;
m_Combo_Ad_Stanza.GetLBText(m_Combo_Ad_Stanza.GetCurSel(),str);
str.Format("%s允许%d节",str,atoi(m_Ad_Num));
for(int i=m_List.GetCount()-1;i>=0;i--)
{
m_List.GetText(i,comstr);
if(!str.Left(4).CompareNoCase(comstr.Left(4)))
return;
}
m_List.AddString(str);
GetDlgItem(IDC_BUTTON_SORT)->EnableWindow(TRUE);
}
void CAddMissionDlg::OnButtonAdd2()
{
// TODO: Add your control notification handler code here
if(m_Combo_Lim_Week.GetCurSel()<0)return;
CString str,comstr;
m_Combo_Lim_Week.GetLBText(m_Combo_Lim_Week.GetCurSel(),str);
str.Format("%s允许%d节",str,atoi(m_Lim_Num));
for(int i=m_List.GetCount()-1;i>=0;i--)
{
m_List.GetText(i,comstr);
if(!str.Left(5).CompareNoCase(comstr.Left(5)))
return;
}
m_List.AddString(str);
GetDlgItem(IDC_BUTTON_SORT)->EnableWindow(TRUE);
}
void CAddMissionDlg::OnButtonAdd3()
{
// TODO: Add your control notification handler code here
if(m_Combo_Fix_Week.GetCurSel()<0||m_Combo_Fix_Stanza.GetCurSel()<0)return;
CString str,comstr;int nIndex=0,Week,Stanza;
m_Combo_Fix_Week.GetLBText(m_Combo_Fix_Week.GetCurSel(),str);
str.Delete(0,4);
Week=atoi(str);
m_Combo_Fix_Stanza.GetLBText(m_Combo_Fix_Stanza.GetCurSel(),str);
str.Delete(0,2);
Stanza=atoi(str);
str.Format("固定周%d第%d节",Week,Stanza);
for(int i=m_List.GetCount()-1;i>=0;i--)
{
m_List.GetText(i,comstr);
if(!comstr.Left(4).CompareNoCase("固定"))nIndex++;
if(!str.CompareNoCase(comstr))
return;
}
if(nIndex<atoi(m_Num))
m_List.AddString(str);
str.Format("%d",nIndex);
GetDlgItem(IDC_BUTTON_SORT)->EnableWindow(TRUE);
}
void CAddMissionDlg::OnButtonCopy()
{
// TODO: Add your control notification handler code here
int nMaxItems=m_List.GetSelCount();
int rgIndex[63];
for(int x=0;x<63;x++)rgIndex[x]=-1;
m_List.GetSelItems(nMaxItems,rgIndex);
int nIndex;
CLessonApp * pa=(CLessonApp *)AfxGetApp();
CString str;
pa->m_Request.RemoveAll();
for(int i=0;i<m_List.GetSelCount();i++)
{
nIndex=rgIndex[i];
m_List.GetText(nIndex,str);
pa->m_Request.Add(str);
}
GetDlgItem(IDC_BUTTON_PASTE)->EnableWindow(1);
}
void CAddMissionDlg::OnButtonPaste()
{
// TODO: Add your control notification handler code here
CLessonApp * pa=(CLessonApp *)AfxGetApp();
CString str;BOOL b=1;
for(int i=0;i<pa->m_Request.GetSize();i++)
{
for(int j=0;j<m_List.GetCount();j++)
{
m_List.GetText(j,str);
b=1;
if(!str.Left(2).CompareNoCase("第"))
{
if(!str.Left(3).CompareNoCase(pa->m_Request.GetAt(i).Left(3)))
{
b=0;
break;
}
}
if(!str.Left(2).CompareNoCase("星"))
{
if(!str.Left(5).CompareNoCase(pa->m_Request.GetAt(i).Left(5)))
{
b=0;
break;
}
}
if(!str.Left(2).CompareNoCase("固"))
{
if(!str.CompareNoCase(pa->m_Request.GetAt(i)))
{
b=0;
break;
}
}
}
if(b)
{
m_List.AddString(pa->m_Request.GetAt(i));
GetDlgItem(IDC_BUTTON_SORT)->EnableWindow(TRUE);
}
}
}
void CAddMissionDlg::OnButtonDel()
{
// TODO: Add your control notification handler code here
int rgIndex[63];
for(int x=0;x<63;x++)rgIndex[x]=-1;
int nMaxItems=m_List.GetSelCount();
m_List.GetSelItems(nMaxItems,rgIndex);
int i=0;int nIndex;
for(i=m_List.GetSelCount()-1;i>=0;i--)
{
nIndex=rgIndex[i];
m_List.DeleteString(nIndex);
}
GetDlgItem(IDC_BUTTON_COPY)->EnableWindow(0);
GetDlgItem(IDC_BUTTON_DEL)->EnableWindow(0);
}
void CAddMissionDlg::OnButtonSort()
{
// TODO: Add your control notification handler code here
int Count=m_List.GetCount();CString str1,str2;
for(int nIndex=Count-1;nIndex>=0;nIndex--)
for(int i=nIndex-1;i>=0;i--)
{
m_List.GetText(nIndex,str1);
m_List.GetText(i,str2);
if(str2.CompareNoCase(str1)>0)
{
m_List.DeleteString(nIndex);
m_List.InsertString(nIndex,str2);
m_List.DeleteString(i);
m_List.InsertString(i,str1);
}
}
}
void CAddMissionDlg::OnCheckAllcopy()
{
// TODO: Add your control notification handler code here
UpdateData();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -