📄 unittreectrl.cpp
字号:
// UnitTreeCtrl.cpp : implementation file
//
#include "stdafx.h"
#include "sm.h"
#include "unit.h"
#include "class.h"
#include "unitdlg.h"
#include "classdlg.h"
#include "UnitTreeCtrl.h"
#include "smdlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CUnitTreeCtrl
//##ModelId=40A481EF02AF
CUnitTreeCtrl::CUnitTreeCtrl()
{
}
//##ModelId=40A481EF03A9
CUnitTreeCtrl::~CUnitTreeCtrl()
{
}
BEGIN_MESSAGE_MAP(CUnitTreeCtrl, CTreeCtrl)
//{{AFX_MSG_MAP(CUnitTreeCtrl)
ON_WM_CREATE()
ON_WM_CHILDACTIVATE()
ON_WM_CONTEXTMENU()
ON_NOTIFY_REFLECT(NM_RCLICK, OnRclick)
ON_COMMAND(ID_DELETE, OnDelete)
ON_COMMAND(ID_POP_NEW_UNIT, OnPopNewUnit)
ON_COMMAND(ID_POP_NEW_CLASS, OnPopNewClass)
ON_COMMAND(ID_POP_VIEW, OnPopView)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CUnitTreeCtrl message handlers
//##ModelId=40A481EF03BA
int CUnitTreeCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CTreeCtrl::OnCreate(lpCreateStruct) == -1)
return -1;
return 0;
}
//##ModelId=40A481EF03C8
void CUnitTreeCtrl::OnChildActivate()
{
CTreeCtrl::OnChildActivate();
}
//##ModelId=40A481EF02B0
BOOL CUnitTreeCtrl::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
{
return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
}
//##ModelId=40A481EF02D0
BOOL CUnitTreeCtrl::PreCreateWindow(CREATESTRUCT& cs)
{
return CTreeCtrl::PreCreateWindow(cs);
}
//##ModelId=40A481EF03CA
void CUnitTreeCtrl::OnContextMenu(CWnd* pWnd, CPoint point)
{
// TODO: Add your message handler code here
}
//##ModelId=40A481EF03DA
void CUnitTreeCtrl::OnRclick(NMHDR* pNMHDR, LRESULT* pResult)
{
CMenu menu;
CPoint p;
GetCursorPos(&p);
m_MousePoint = p;
ScreenToClient(&m_MousePoint);
menu.LoadMenu(IDR_UNIT_POP_MENU);
menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTBUTTON|TPM_LEFTALIGN, p.x, p.y,this);
*pResult = 0;
}
//##ModelId=40A481F00002
void CUnitTreeCtrl::OnDelete()
{
UnitClassTree *pUnitClassTree = ((CSMDlg*)AfxGetMainWnd())->pUnitClassTree;
HTREEITEM item = HitTest(m_MousePoint);
if(pUnitClassTree->GetType(item)==1)//class
{
if(IDOK==AfxMessageBox("将删除所有相关的学生成绩记录, 慎重!", MB_OKCANCEL ))
{
int id = pUnitClassTree->GetClass(item).ID;
CDaoTableDef td(&theDatabase);
td.Open(_T("class"));
CDaoRecordset RS;
RS.Open(&td);
pUnitClassTree->GetClass(item).Delete(&RS);
pUnitClassTree->DeleteClass(id);
RS.Close();
td.Close();
}
}
else
{
try
{
if(IDOK==AfxMessageBox("将删除所有相关的班级学生成绩记录, 慎重!", MB_OKCANCEL ) )
{
long id = pUnitClassTree->GetParent(pUnitClassTree->GetUnit(item).ID);
CDaoTableDef td(&theDatabase);
td.Open(_T("unit"));
CDaoRecordset RS;
RS.Open(&td);
pUnitClassTree->GetUnit(item).DeleteAssociate(&RS);
pUnitClassTree->GetUnit(item).Delete(&RS);
RS.Close();
td.Close();
pUnitClassTree->ReLoad();
pUnitClassTree->SetSelectUnit(id);
}
}
catch(CException *e)
{
DisplayException(e);
}
}
}
//##ModelId=40A481F0000F
void CUnitTreeCtrl::OnPopNewUnit()
{
UnitClassTree *pUnitClassTree = ((CSMDlg*)AfxGetMainWnd())->pUnitClassTree;
CUnitDlg dlg(pUnitClassTree->GetUnit(HitTest(m_MousePoint)).ID);
try
{
int r = dlg.DoModal();
if(r)
{
pUnitClassTree->ReLoad();
pUnitClassTree->SetSelectUnit(r);
}
}
catch(CException *e)
{
DisplayException(e);
}
}
//##ModelId=40A481F00011
void CUnitTreeCtrl::OnPopNewClass()
{
UnitClassTree *pUnitClassTree = ((CSMDlg*)AfxGetMainWnd())->pUnitClassTree;
CClassDlg dlg(pUnitClassTree->GetUnit(HitTest(m_MousePoint)).ID);
try
{
int r = dlg.DoModal();
if(r)
{
pUnitClassTree->ReLoad();
pUnitClassTree->SetSelectClass(r);
}
}
catch(CException *e)
{
DisplayException(e);
}
}
//##ModelId=40A481F00020
void CUnitTreeCtrl::OnPopView()
{
UnitClassTree *pUnitClassTree = ((CSMDlg*)AfxGetMainWnd())->pUnitClassTree;
HTREEITEM item = HitTest(m_MousePoint);
try
{
if(pUnitClassTree->GetType(item)==1)//class
{
CClassDlg dlg(&pUnitClassTree->GetClass(item));
int id;
if(id=dlg.DoModal())
pUnitClassTree->UpdateClass(id);
}
else
{
CUnitDlg dlg(&(pUnitClassTree->GetUnit(item)));
int r = dlg.DoModal();
if(r)
{
pUnitClassTree->ReLoad();
pUnitClassTree->SetSelectUnit(r);
}
}
}
catch(CException *e)
{
DisplayException(e);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -