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

📄 selectview.cpp

📁 我上载了那么多怎么都说已经有上载的啦
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// SelectView.cpp : implementation file
//

#include "stdafx.h"
#include "GPMIS.h"
#include "SelectView.h"
#include "mainfrm.h"
#include "global.h"
#include "teacher.h"
#include "SheetView.h"
#include "themeView.h"
#include "timeView.h"
#include "scoreView.h"
#include "bcmenu.h"
#include "SpreadSheet.h"
#include "theme.h"
#include "student.h"
#include "TeacherDlg.h"
#include "MailDlg.h"
#include "AssignDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSelectView
extern CGPMISApp theApp;

IMPLEMENT_DYNCREATE(CSelectView, CTreeView)

CSelectView::CSelectView()
{
}

CSelectView::~CSelectView()
{
}


BEGIN_MESSAGE_MAP(CSelectView, CTreeView)
	//{{AFX_MSG_MAP(CSelectView)
	ON_WM_TIMER()
	ON_NOTIFY_REFLECT(NM_CLICK, OnClick)
	ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclk)
	ON_NOTIFY_REFLECT(NM_RCLICK, OnRclick)
	ON_NOTIFY_REFLECT(TVN_SELCHANGED, OnSelchanged)
	ON_WM_CONTEXTMENU()
	ON_COMMAND(ID_EXPORT_THEME, OnExportTheme)
	ON_UPDATE_COMMAND_UI(ID_EXPORT_THEME, OnUpdateExportTheme)
	ON_COMMAND(ID_IMPORT_THEME, OnImportTheme)
	ON_UPDATE_COMMAND_UI(ID_IMPORT_THEME, OnUpdateImportTheme)
	ON_COMMAND(ID_EXPORT_MAIL_THEME, OnExportMailTheme)
	ON_UPDATE_COMMAND_UI(ID_EXPORT_MAIL_THEME, OnUpdateExportMailTheme)
	ON_COMMAND(ID_TEACHER_INFO, OnTeacherInfo)
	ON_UPDATE_COMMAND_UI(ID_TEACHER_INFO, OnUpdateTeacherInfo)
	ON_COMMAND(ID_IMPORT_SHEET, OnImportSheet)
	ON_UPDATE_COMMAND_UI(ID_IMPORT_SHEET, OnUpdateImportSheet)
	ON_COMMAND(ID_EXPORT_SHEET, OnExportSheet)
	ON_UPDATE_COMMAND_UI(ID_EXPORT_SHEET, OnUpdateExportSheet)
	ON_COMMAND(ID_EXPORT_MAIL_SHEET, OnExportMailSheet)
	ON_UPDATE_COMMAND_UI(ID_EXPORT_MAIL_SHEET, OnUpdateExportMailSheet)
	ON_COMMAND(ID_EXPORT_SCORE, OnExportScore)
	ON_UPDATE_COMMAND_UI(ID_EXPORT_SCORE, OnUpdateExportScore)
	ON_COMMAND(ID_IMPORT_SCORE, OnImportScore)
	ON_UPDATE_COMMAND_UI(ID_IMPORT_SCORE, OnUpdateImportScore)
	ON_COMMAND(ID_EXPORT_MAIL_SCORE, OnExportMailScore)
	ON_UPDATE_COMMAND_UI(ID_EXPORT_MAIL_SCORE, OnUpdateExportMailScore)
	ON_COMMAND(ID_SEND_MSG, OnSendMsg)
	ON_UPDATE_COMMAND_UI(ID_SEND_MSG, OnUpdateSendMsg)
	ON_COMMAND(ID_ASSIGN, OnAssign)
	ON_UPDATE_COMMAND_UI(ID_ASSIGN, OnUpdateAssign)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSelectView drawing

void CSelectView::OnDraw(CDC* pDC)
{
	CDocument* pDoc = GetDocument();
	// TODO: add draw code here
}

/////////////////////////////////////////////////////////////////////////////
// CSelectView diagnostics

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

void CSelectView::Dump(CDumpContext& dc) const
{
	CTreeView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CSelectView message handlers

void CSelectView::OnInitialUpdate() 
{
	CTreeView::OnInitialUpdate();
	
	// TODO: Add your specialized code here and/or call the base class
	m_pMainFrm = (CMainFrame *)GetParentFrame();
	
	CString s;
	s.LoadString(AFX_IDS_APP_TITLE);
	SetWindowText(s);

	m_pTreeCtrl = (CTreeCtrl*)&GetTreeCtrl();

	m_ToolTip.Create(this);  // Add tooltip to the control
    m_ToolTip.AddTool(CWnd::FromHandle(m_pTreeCtrl->m_hWnd), "",NULL,0);

	DrawTreeItem();

	SetTimer(0x0099,100,NULL);
}

void CSelectView::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	
	CTreeView::OnTimer(nIDEvent);
}

BOOL CSelectView::PreCreateWindow(CREATESTRUCT& cs) 
{
	// TODO: Add your specialized code here and/or call the base class
	BOOL ret = CTreeView::PreCreateWindow(cs);
	cs.style |= TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_SHOWSELALWAYS;
	return ret;
}

BOOL CSelectView::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	if(pMsg->message == WM_MOUSEMOVE && pMsg->hwnd == m_pTreeCtrl->m_hWnd)		
	{
		CPoint point(LOWORD(pMsg->lParam),HIWORD(pMsg->lParam));
		HTREEITEM hItem = m_pTreeCtrl->HitTest(point);			
		if(hItem != NULL)			
		{
			CString text = m_pTreeCtrl->GetItemText(hItem);
			m_ToolTip.UpdateTipText(text,m_pTreeCtrl);	
			m_ToolTip.RelayEvent(pMsg);			
		}			
	}

	return CTreeView::PreTranslateMessage(pMsg);
}

const char* MainCatalog[] = 
{
	"工作进度",
	"分配名单",
	"题目报表",
	"成绩报表",
	"\0"
};

const char* TermItem[] = 
{
	"第七学期",
	"第八学期",
	"\0"
};
const char* SheetItem[] = 
{
	"学生",
	"教师",
	"\0"
};
void CSelectView::DrawTreeItem()
{
	m_bCreating = true;	
	m_bSelected = FALSE;
	
	TV_INSERTSTRUCT TreeCtrlItem;

	HTREEITEM hRoot[5];

	m_pTreeCtrl->DeleteAllItems();

	TreeCtrlItem.hParent = TVI_ROOT;
	TreeCtrlItem.hInsertAfter = TVI_LAST;
	TreeCtrlItem.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_STATE;
	TreeCtrlItem.item.state = TVIS_BOLD;
	TreeCtrlItem.item.stateMask = TVIS_BOLD;
	TreeCtrlItem.item.lParam = 1;

	for(int i = 0; MainCatalog[i][0] != '\0' ; i++)
	{
		TreeCtrlItem.item.iImage = i;
		TreeCtrlItem.item.iSelectedImage = i;
		TreeCtrlItem.item.pszText = (char*)MainCatalog[i];
		hRoot[i] = m_pTreeCtrl->InsertItem(&TreeCtrlItem);
		if( i == 0 )
		{
			InsertSubItem(hRoot[i], TermItem, 1, 1);
		}
		if( i > 0 )
		{
			InsertSheet(hRoot[i], 1, 1);
		}
	}

	m_bCreating = false;	
	SelectView(hRoot[0]);
	m_pTreeCtrl->SelectItem(hRoot[0]);
}

void CSelectView::InsertSheet(HTREEITEM hParentItem, int iImage, int iSelectedImage)
{
	TV_INSERTSTRUCT TreeCtrlItem;

	TreeCtrlItem.item.mask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_STATE;

	TreeCtrlItem.hParent = hParentItem;
	TreeCtrlItem.item.state = 0;
	TreeCtrlItem.hInsertAfter = TVI_LAST;
	TreeCtrlItem.item.iImage = iImage;
	TreeCtrlItem.item.iSelectedImage = iSelectedImage;
	TreeCtrlItem.item.lParam = 0;

	for(int i = 0; SheetItem[i][0] != '\0'; i++)
	{
		TreeCtrlItem.item.pszText = (char*)SheetItem[i];
		HTREEITEM hTreeItem = m_pTreeCtrl->InsertItem(&TreeCtrlItem);
		if( !strcmp(SheetItem[i], SheetItem[0]) )
		{
			InsertClass(hTreeItem, 1, 1);
		}
		if( !strcmp(SheetItem[i], SheetItem[1]) )
		{
			InsertTeacher(hTreeItem, 1, 1);
		}
	}
}

void CSelectView::InsertClass(HTREEITEM hParentItem, int iImage, int iSelectedImage)
{
	TV_INSERTSTRUCT TreeCtrlItem;

	TreeCtrlItem.item.mask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_STATE;

	TreeCtrlItem.hParent = hParentItem;
	TreeCtrlItem.item.state = 0;
	TreeCtrlItem.hInsertAfter = TVI_LAST;
	TreeCtrlItem.item.iImage = iImage;
	TreeCtrlItem.item.iSelectedImage = iSelectedImage;
	TreeCtrlItem.item.lParam = 0;

	CPtrList& classList = CGlobal::GetInstance().m_classList;
	POSITION pos = classList.GetHeadPosition();
	while( pos )
	{
		char* pClass = (char*)classList.GetNext(pos);
		if( pClass )
		{
			char szItem[20];
			strcpy(szItem , pClass);
			TreeCtrlItem.item.pszText = szItem;
			HTREEITEM hTreeItem = m_pTreeCtrl->InsertItem(&TreeCtrlItem);
		}
	}
}

void CSelectView::InsertTeacher(HTREEITEM hParentItem, int iImage, int iSelectedImage)
{
	TV_INSERTSTRUCT TreeCtrlItem;

	TreeCtrlItem.item.mask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_STATE;

	TreeCtrlItem.hParent = hParentItem;
	TreeCtrlItem.item.state = 0;
	TreeCtrlItem.hInsertAfter = TVI_LAST;
	TreeCtrlItem.item.iImage = iImage;
	TreeCtrlItem.item.iSelectedImage = iSelectedImage;
	TreeCtrlItem.item.lParam = 0;

	CTeacherList& teacherList = CGlobal::GetInstance().m_teacherList;
	POSITION pos = teacherList.GetHeadPosition();
	while( pos )
	{
		CTeacher* pTeacher = teacherList.GetNext(pos);
		if( pTeacher )
		{
			char szItem[20];
			strcpy(szItem , pTeacher->GetName());
			TreeCtrlItem.item.pszText = szItem;
			HTREEITEM hTreeItem = m_pTreeCtrl->InsertItem(&TreeCtrlItem);
		}
	}
}

void CSelectView::InsertSubItem(HTREEITEM hParentItem, const char* szItems[], int iImage, int iSelectedImage)
{
	TV_INSERTSTRUCT TreeCtrlItem;

	TreeCtrlItem.item.mask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_STATE;

	TreeCtrlItem.hParent = hParentItem;
	TreeCtrlItem.item.state = 0;
	TreeCtrlItem.hInsertAfter = TVI_LAST;
	TreeCtrlItem.item.iImage = iImage;
	TreeCtrlItem.item.iSelectedImage = iSelectedImage;
	TreeCtrlItem.item.lParam = 0;

	for(int i = 0; szItems[i][0] != '\0'; i++)
	{
		TreeCtrlItem.item.pszText = (char*)szItems[i];
		HTREEITEM hTreeItem = m_pTreeCtrl->InsertItem(&TreeCtrlItem);
	}
}



void CSelectView::OnClick(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	
	*pResult = 0;
}

void CSelectView::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	
	*pResult = 0;
}

void CSelectView::OnRclick(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
/*	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	if(pNMTreeView->itemNew.hItem != NULL && pNMTreeView->itemNew.hItem != pNMTreeView->itemOld.hItem )
	{
		m_hCurrItem = pNMTreeView->itemNew.hItem;

		if( m_hCurrItem )
			SelectView(m_hCurrItem);

		return;
	}
*/
	HTREEITEM hSelectedItem = m_pTreeCtrl->GetSelectedItem();
	CString s = m_pTreeCtrl->GetItemText(hSelectedItem);
	
	DWORD pos = GetMessagePos();
	CPoint point(LOWORD(pos), HIWORD(pos));

	RECT r;
	m_pTreeCtrl->GetItemRect(hSelectedItem, &r, FALSE);

	CPoint pt = point;
	ScreenToClient(&pt);

	if( pt.x < r.left || pt.x > r.right || pt.y < r.top || pt.y > r.bottom)
	{
		return;
	}

	OnContextMenu(AfxGetMainWnd(), point); 

	if( m_hCurrItem )
		m_pTreeCtrl->SelectItem(m_hCurrItem);
	
	*pResult = 0;
}

void CSelectView::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult) 
{
	if( m_bCreating )
		return;

	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	*pResult = 0;
	// TODO: Add your control notification handler code here
	int nCurrViewID = m_pMainFrm->GetCurrentViewID();
	if(pNMTreeView->itemNew.hItem == pNMTreeView->itemOld.hItem)
		return;

	m_hCurrItem = pNMTreeView->itemNew.hItem;

	if( m_hCurrItem )
	{
		SelectView(m_hCurrItem);
	}
	
	*pResult = 0;
}

void CSelectView::OnContextMenu(CWnd* pWnd, CPoint point) 
{
	// TODO: Add your message handler code here
	if( m_strItemText[0] == MainCatalog[1] && m_pMainFrm->GetLevel() == 1 )
	{
		BCMenu menu;
		menu.LoadMenu(IDR_POPUP_MENU);
		menu.LoadToolbar(IDR_TOOLBAR_CONTEXT);		
		CMenu* psubmenu = NULL;
		psubmenu = menu.GetSubMenu(6);

		if( psubmenu )
		{
			psubmenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, AfxGetMainWnd());
		}
	}
	if( m_strItemText[0] == MainCatalog[1] && m_strItemText[1] == SheetItem[1] )
	{
		BCMenu menu;
		menu.LoadMenu(IDR_POPUP_MENU);
		menu.LoadToolbar(IDR_TOOLBAR_CONTEXT);		
		CMenu* psubmenu = NULL;
		psubmenu = menu.GetSubMenu(1);

		if( psubmenu )
		{
			psubmenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, AfxGetMainWnd());
		}
	}
	if( m_strItemText[0] == MainCatalog[2] && m_strItemText[1] == SheetItem[1] )
	{
		BCMenu menu;
		menu.LoadMenu(IDR_POPUP_MENU);
		menu.LoadToolbar(IDR_TOOLBAR_CONTEXT);		
		CMenu* psubmenu = NULL;
		psubmenu = menu.GetSubMenu(0);

		if( psubmenu )
		{
			psubmenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, AfxGetMainWnd());
		}
	}
	if( m_strItemText[0] == MainCatalog[3] && m_strItemText[1] == SheetItem[1] )
	{
		BCMenu menu;
		menu.LoadMenu(IDR_POPUP_MENU);
		menu.LoadToolbar(IDR_TOOLBAR_CONTEXT);		
		CMenu* psubmenu = NULL;
		psubmenu = menu.GetSubMenu(4);

		if( psubmenu )
		{
			psubmenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, AfxGetMainWnd());
		}
	}
	
}

void CSelectView::SelectView(HTREEITEM hItem)
{
	HTREEITEM hParentItem1,hParentItem2,hParentItem3, hParentItem4;
	int nLevel = 1;
	CString strItemText1,strItemText2,strItemText3,strItemText4;

	hParentItem1 = hItem;
	hParentItem2 = m_pTreeCtrl->GetParentItem(hParentItem1);
	strItemText1 = m_pTreeCtrl->GetItemText(hParentItem1);
	
	m_strItemText[0] = strItemText1;
	m_strItemText[1] = "";
	m_strItemText[2] = "";

⌨️ 快捷键说明

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