⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 leftview.cpp

📁 为学校教导用的排课系统。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// LeftView.cpp : implementation of the CLeftView class
//

#include "stdafx.h"
#include "Lesson.h"

#include "LessonDoc.h"
#include "LeftView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include "TeacherInfoDlg.h"
#include "AddMissionDlg.h"
#include "MainFrm.h"
#include "PageSetDlg.h"
/////////////////////////////////////////////////////////////////////////////
// CLeftView

IMPLEMENT_DYNCREATE(CLeftView, CTreeView)

BEGIN_MESSAGE_MAP(CLeftView, CTreeView)
	//{{AFX_MSG_MAP(CLeftView)
	ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclk)
	ON_NOTIFY_REFLECT(TVN_BEGINLABELEDIT, OnBeginlabeledit)
	ON_NOTIFY_REFLECT(TVN_ENDLABELEDIT, OnEndlabeledit)
	ON_NOTIFY_REFLECT(TVN_SELCHANGED, OnSelchanged)
	ON_WM_KEYDOWN()
	ON_WM_KEYUP()
	ON_COMMAND(ID_ADDTEACHER, OnAddteacher)
	ON_UPDATE_COMMAND_UI(ID_ADDTEACHER, OnUpdateAddteacher)
	ON_COMMAND(ID_FIX, OnFix)
	ON_UPDATE_COMMAND_UI(ID_FIX, OnUpdateFix)
	ON_COMMAND(ID_DELETE, OnDelete)
	ON_UPDATE_COMMAND_UI(ID_DELETE, OnUpdateDelete)
	ON_COMMAND(ID_ADDMISSION, OnAddmission)
	ON_UPDATE_COMMAND_UI(ID_ADDMISSION, OnUpdateAddmission)
	ON_COMMAND(ID_FILE_PRINT_SETUP, OnFilePrintSetup)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CTreeView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CTreeView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CTreeView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLeftView construction/destruction

CLeftView::CLeftView()
{
	// TODO: add construction code here

}

CLeftView::~CLeftView()
{
}

BOOL CLeftView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CTreeView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CLeftView drawing

void CLeftView::OnDraw(CDC* pDC)
{
	CLessonDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	// TODO: add draw code for native data here
}


/////////////////////////////////////////////////////////////////////////////
// CLeftView printing

BOOL CLeftView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	CLessonDoc * pDoc =GetDocument();
	if(pDoc->m_Print.PrePrinting(pInfo))
		return DoPreparePrinting(pInfo);
	else
	{
		MessageBox("对不起!\n\n未注册版本不享有打印功能","未注册",MB_ICONERROR);
		return NULL;
	}
}

void CLeftView::OnPrint(CDC* pDC, CPrintInfo* pInfo) 
{
	// TODO: Add your specialized code here and/or call the base class
	CLessonDoc * pDoc =GetDocument();
	pDoc->m_Print.Print(pDC,pInfo);
	
	CTreeView::OnPrint(pDC, pInfo);
}

void CLeftView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CLeftView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

void CLeftView::OnInitialUpdate()
{
	CTreeView::OnInitialUpdate();

	// TODO: You may populate your TreeView with items by directly accessing
	//  its tree control through a call to GetTreeCtrl().
}

/////////////////////////////////////////////////////////////////////////////
// CLeftView diagnostics

#ifdef _DEBUG
void CLeftView::AssertValid() const
{
	CTreeView::AssertValid();
}

void CLeftView::Dump(CDumpContext& dc) const
{
	CTreeView::Dump(dc);
}

CLessonDoc* CLeftView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CLessonDoc)));
	return (CLessonDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CLeftView message handlers

BOOL CLeftView::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) 
{
	// TODO: Add your specialized code here and/or call the base class
	dwStyle=dwStyle|TVS_EDITLABELS|TVS_SHOWSELALWAYS;
	return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
}

void CLeftView::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	CLessonDoc * pDoc=GetDocument();
	if(pDoc->m_Info.m_ViewStatus==CLASS_LESSON)
		return;
	OnFix();
	*pResult = 0;
}

void CLeftView::OnBeginlabeledit(NMHDR* pNMHDR, LRESULT* pResult) 
{
	TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
	// TODO: Add your control notification handler code here
	CLessonDoc * pDoc=GetDocument();
	if(pDoc->m_Info.m_ViewStatus!=TEACHER_MISSION)
		*pResult = 1;
	else
		*pResult = 0;
}

void CLeftView::OnEndlabeledit(NMHDR* pNMHDR, LRESULT* pResult) 
{
	TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
	// TODO: Add your control notification handler code here
	CLessonDoc * pDoc=GetDocument();
	if(pDoc->m_Info.m_ViewStatus!=TEACHER_MISSION)
		return;
	HTREEITEM hItem=GetTreeCtrl().GetSelectedItem();
	if(hItem==NULL)return;
	CString oldName,newName;
	oldName=GetTreeCtrl().GetItemText(hItem);
	GetTreeCtrl().GetEditControl()->GetWindowText(newName);
	if(pDoc->GetTeacher(newName)==NULL)
	{
		CTeacher * Teacher=pDoc->GetTeacher(oldName);
		Teacher->m_Name=newName;
		for(int i=Teacher->m_MissionArray.GetSize()-1;i>=0;i--)
			((CMission *)Teacher->m_MissionArray.GetAt(i))->m_Name=newName;
		GetTreeCtrl().SetItemText(hItem,newName);
		pDoc->m_Info.m_SelectTeacherName=newName;
		pDoc->SetModifiedFlag();
	}	
	*pResult = 0;
}

void CLeftView::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	CLessonDoc * pDoc = GetDocument();
	HTREEITEM hItem = GetTreeCtrl().GetSelectedItem();
	CString str;
	if(pDoc->m_Info.m_ViewStatus==TEACHER_MISSION||pDoc->m_Info.m_ViewStatus==TEACHER_LESSON)
	{	
		str = GetTreeCtrl().GetItemText(hItem);
		pDoc->m_Info.m_SelectTeacherName=str;
	}
	else
	{
		str = GetTreeCtrl().GetItemText(hItem);
		hItem=GetTreeCtrl().GetParentItem(hItem);
		if(hItem)//选择的是班级
		{
			pDoc->m_Info.m_SelectClass=atoi(str);
			str=GetTreeCtrl().GetItemText(hItem);
			pDoc->m_Info.m_SelectGrade=atoi(str);
		}
		else//选择的是年级
		{
			pDoc->m_Info.m_SelectClass=0;
			pDoc->m_Info.m_SelectGrade=atoi(str);
		}
	}
	pDoc->UpdateAllViews(pDoc->GetListView());
	*pResult = 0;
}

void CLeftView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
	CLessonDoc * pDoc = GetDocument();
	switch(nChar)
	{
	case 46:
		DelTeacher();
		break;
	case 16:
		m_IsShiftDown=TRUE;
		break;
	case 40:
		if(m_IsShiftDown)
		{
			HTREEITEM hItem=GetTreeCtrl().GetSelectedItem();
			if(hItem==NULL)return;
			CString Name=GetTreeCtrl().GetItemText(hItem);
			CTeacher * teacher=pDoc->GetTeacher(Name);
			int nIndex=pDoc->GetTeacherIndex(Name);
			if(nIndex<pDoc->m_TeacherArray.GetSize()-1)
			{
				HTREEITEM hItemDown=GetTreeCtrl().GetNextVisibleItem(hItem);
				CString NameDown=GetTreeCtrl().GetItemText(hItemDown);
				pDoc->m_TeacherArray.RemoveAt(nIndex);
				pDoc->m_TeacherArray.InsertAt(nIndex+1,teacher);
				GetTreeCtrl().SetItemText(hItem,NameDown);
				GetTreeCtrl().SetItemText(hItemDown,Name);
			}
		}
		break;
	case 38:
		if(m_IsShiftDown)
		{
			HTREEITEM hItem=GetTreeCtrl().GetSelectedItem();
			if(hItem==NULL)return;
			CString Name=GetTreeCtrl().GetItemText(hItem);
			CTeacher * teacher=pDoc->GetTeacher(Name);
			int nIndex=pDoc->GetTeacherIndex(Name);
			if(nIndex>0)
			{
				HTREEITEM hItemUp=GetTreeCtrl().GetPrevVisibleItem(hItem);
				CString NameUp=GetTreeCtrl().GetItemText(hItemUp);
				pDoc->m_TeacherArray.RemoveAt(nIndex);
				pDoc->m_TeacherArray.InsertAt(nIndex-1,teacher);
				GetTreeCtrl().SetItemText(hItem,NameUp);
				GetTreeCtrl().SetItemText(hItemUp,Name);
			}
		}
		break;
	case 33:
		if(m_IsShiftDown)
		{
			HTREEITEM hItem=GetTreeCtrl().GetSelectedItem();
			if(hItem==NULL)return;
			CString Name=GetTreeCtrl().GetItemText(hItem);
			CTeacher * teacher=pDoc->GetTeacher(Name);
			int nIndex=pDoc->GetTeacherIndex(Name);
			pDoc->m_TeacherArray.RemoveAt(nIndex);
			GetTreeCtrl().DeleteItem(hItem);
			pDoc->m_TeacherArray.InsertAt(0,teacher);
			hItem=GetTreeCtrl().GetFirstVisibleItem();
			CString Two=GetTreeCtrl().GetItemText(hItem);
			GetTreeCtrl().SetItemText(hItem,Name);
			GetTreeCtrl().InsertItem(Two,TVI_ROOT,hItem);
		}
		break;
	case 34:
		if(m_IsShiftDown)
		{
			HTREEITEM hItem=GetTreeCtrl().GetSelectedItem();
			if(hItem==NULL)return;
			CString Name=GetTreeCtrl().GetItemText(hItem);
			CTeacher * teacher=pDoc->GetTeacher(Name);
			GetTreeCtrl().DeleteItem(hItem);
			int nIndex=pDoc->GetTeacherIndex(Name);
			pDoc->m_TeacherArray.RemoveAt(nIndex);
			GetTreeCtrl().InsertItem(Name);
			pDoc->m_TeacherArray.Add(teacher);
		}
		break;
	default:
		;
	}
	CTreeView::OnKeyDown(nChar, nRepCnt, nFlags);
}

void CLeftView::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
	if(nChar==16)
		m_IsShiftDown=FALSE;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -