📄 selectview.cpp
字号:
// 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 + -