myleftview.cpp

来自「一个学生考试成绩管理的半成品」· C++ 代码 · 共 125 行

CPP
125
字号
// MyLeftView.cpp : 实现文件
//

#include "stdafx.h"
#include "ScoreGather.h"
#include "MyLeftView.h"
#include ".\myleftview.h"


// CMyLeftView

IMPLEMENT_DYNCREATE(CMyLeftView, CTreeView)

CMyLeftView::CMyLeftView()
: WindowsType(_T(""))
{
}

CMyLeftView::~CMyLeftView()
{
}

BEGIN_MESSAGE_MAP(CMyLeftView, CTreeView)
	ON_WM_ERASEBKGND()
	ON_NOTIFY_REFLECT(TVN_ITEMEXPANDED, OnTvnItemexpanded)
	ON_NOTIFY_REFLECT(TVN_ITEMEXPANDING, OnTvnItemexpanding)
END_MESSAGE_MAP()


// CMyLeftView 诊断

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

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


// CMyLeftView 消息处理程序

void CMyLeftView::OnInitialUpdate()
{
	CTreeView::OnInitialUpdate();
	::SetWindowLong(m_hWnd,GWL_STYLE,WS_VISIBLE | WS_TABSTOP 
						| WS_CHILD | WS_BORDER| TVS_HASBUTTONS 
						| TVS_LINESATROOT | TVS_HASLINES
						| TVS_DISABLEDRAGDROP|TVS_SHOWSELALWAYS);
	CScoreGatherApp* pApp = (CScoreGatherApp*)AfxGetApp();
	CTreeCtrl *pTreeCtrl= &GetTreeCtrl();
	pTreeCtrl->SetTextColor(RGB(0,0,255));
	pTreeCtrl->SetBkColor(::GetSysColor(COLOR_3DFACE));
	AddTree();
	pTreeCtrl->SortChildren(TVI_ROOT);
}

HTREEITEM CMyLeftView::AddTree(void)
{
	CTreeCtrl* pTreeCtrl = &GetTreeCtrl();
	TV_INSERTSTRUCT TCItem;//插入数据项数据结构
	TCItem.hParent = TVI_ROOT;
	TCItem.hInsertAfter = TVI_LAST;
	TCItem.item.mask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE;//设屏蔽
	CString string;
	string="教学成绩总览";
	TCItem.item.pszText = (LPTSTR)(LPCTSTR)string;
	HTREEITEM hSectionItem = pTreeCtrl->InsertItem(&TCItem);
	CStringArray str;
	str.Add("学生单科成绩");
	str.Add("学生全科成绩");
	str.Add("班级学科成绩");
	str.Add("教师教学成绩");
	str.Add("学生成绩单");
	for(int row=1;row<=5;row++)
		AddMainTree(hSectionItem,str[row-1],row);
	pTreeCtrl->Expand(hSectionItem,TVE_EXPAND);
	return HTREEITEM();
}

HTREEITEM CMyLeftView::AddMainTree(HTREEITEM hSectionItem, CString str, int row)
{
	CTreeCtrl* pCtrl = &GetTreeCtrl();
	TV_INSERTSTRUCT TCItem;
	TCItem.hParent = hSectionItem;
	TCItem.hInsertAfter = TVI_LAST;
	TCItem.item.mask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE;//设屏蔽
	TCItem.item.lParam=row;//序号
	TCItem.item.iImage=row;//正常图标
	TCItem.item.iSelectedImage=row;//选中时图标
	TCItem.item.pszText = (LPTSTR)(LPCTSTR)str;
	hSectionItem = pCtrl->InsertItem(&TCItem);
	return HTREEITEM();
}

BOOL CMyLeftView::OnEraseBkgnd(CDC* pDC)
{
	CBrush brush(::GetSysColor(COLOR_3DFACE));
	CBrush* pOldBrush=pDC->SelectObject(&brush);
	CRect rcClip;
	pDC->GetClipBox(&rcClip);
	pDC->PatBlt(rcClip.left,rcClip.top,rcClip.Width(),rcClip.Height(),PATCOPY);
	pDC->SelectObject(pOldBrush);
	return TRUE;
}

void CMyLeftView::OnTvnItemexpanded(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
	Invalidate();
	SetRedraw(TRUE);
	*pResult = 0;
}

void CMyLeftView::OnTvnItemexpanding(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
	SetRedraw(FALSE);
	*pResult = 0;
}

⌨️ 快捷键说明

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