www.pudn.com > StuDAO.rar > StuDAOView.cpp


// StuDAOView.cpp : implementation of the CStuDAOView class 
// 
 
#include "stdafx.h" 
#include "StuDAO.h" 
 
#include "StuDAOSet.h" 
#include "StuDAODoc.h" 
#include "StuDAOView.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CStuDAOView 
 
IMPLEMENT_DYNCREATE(CStuDAOView, CDaoRecordView) 
 
BEGIN_MESSAGE_MAP(CStuDAOView, CDaoRecordView) 
	//{{AFX_MSG_MAP(CStuDAOView) 
	ON_COMMAND(ID_RECORD_FIRST, OnRecordFirst) 
	ON_COMMAND(ID_RECORD_LAST, OnRecordLast) 
	ON_COMMAND(ID_RECORD_NEXT, OnRecordNext) 
	ON_COMMAND(ID_RECORD_PREV, OnRecordPrev) 
	//}}AFX_MSG_MAP 
	// Standard printing commands 
	ON_COMMAND(ID_FILE_PRINT, CDaoRecordView::OnFilePrint) 
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CDaoRecordView::OnFilePrint) 
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CDaoRecordView::OnFilePrintPreview) 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CStuDAOView construction/destruction 
 
CStuDAOView::CStuDAOView() 
	: CDaoRecordView(CStuDAOView::IDD) 
{ 
	//{{AFX_DATA_INIT(CStuDAOView) 
		// NOTE: the ClassWizard will add member initialization here 
	m_pSet = NULL; 
	//}}AFX_DATA_INIT 
	// TODO: add construction code here 
 
} 
 
CStuDAOView::~CStuDAOView() 
{ 
} 
 
void CStuDAOView::DoDataExchange(CDataExchange* pDX) 
{ 
	CDaoRecordView::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CStuDAOView) 
	DDX_Control(pDX, IDC_MSFLEXGRID1, m_FlexGrid); 
	//}}AFX_DATA_MAP 
} 
 
BOOL CStuDAOView::PreCreateWindow(CREATESTRUCT& cs) 
{ 
	// TODO: Modify the Window class or styles here by modifying 
	//  the CREATESTRUCT cs 
 
	return CDaoRecordView::PreCreateWindow(cs); 
} 
 
void CStuDAOView::OnInitialUpdate() 
{ 
	m_pSet = &GetDocument()->m_stuDAOSet; 
	CDaoRecordView::OnInitialUpdate(); 
	GetParentFrame()->RecalcLayout(); 
	ResizeParentToFit(); 
 
	this->Invalidate(); 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CStuDAOView printing 
 
BOOL CStuDAOView::OnPreparePrinting(CPrintInfo* pInfo) 
{ 
	// default preparation 
	return DoPreparePrinting(pInfo); 
} 
 
void CStuDAOView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) 
{ 
	// TODO: add extra initialization before printing 
} 
 
void CStuDAOView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) 
{ 
	// TODO: add cleanup after printing 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CStuDAOView diagnostics 
 
#ifdef _DEBUG 
void CStuDAOView::AssertValid() const 
{ 
	CDaoRecordView::AssertValid(); 
} 
 
void CStuDAOView::Dump(CDumpContext& dc) const 
{ 
	CDaoRecordView::Dump(dc); 
} 
 
CStuDAODoc* CStuDAOView::GetDocument() // non-debug version is inline 
{ 
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CStuDAODoc))); 
	return (CStuDAODoc*)m_pDocument; 
} 
#endif //_DEBUG 
 
///////////////////////////////////////////////////////////////////////////// 
// CStuDAOView database support 
CDaoRecordset* CStuDAOView::OnGetRecordset() 
{ 
	return m_pSet; 
} 
 
 
///////////////////////////////////////////////////////////////////////////// 
// CStuDAOView message handlers 
 
void CStuDAOView::OnDraw(CDC* pDC)  
{ 
	// TODO: Add your specialized code here and/or call the base class 
	CRect rect;			 // 记录视图窗口的客户区大小 
	char lpstrRow[6] = "1";	 //  FlexGrid控件当前行第0列的显示 
	int     iRowCount = 1;         // FlexGrid控件的当前行 
	 
	// 调整FlexGrid控件的大小为整个客户区大小 
	GetClientRect(rect); // 获取视图窗口客户区 
	m_FlexGrid.MoveWindow(rect,TRUE); // 改变FlexGrid控件的位置和大小 
	m_FlexGrid.RedrawWindow(NULL,NULL, 
		RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE); // 重画控件 
 
	// 设置FlexGrid将要显示的总行数和总列数 
	m_FlexGrid.SetCols((m_pSet->m_nFields)+1); 
	m_FlexGrid.SetRows(6); 
 
	// 设置控件所有行的宽度和所有列的高度 
	m_FlexGrid.SetColWidth(-1,1000); 
	m_FlexGrid.SetRowHeight(-1,360); 
 
	// 单独设置控件第0列(序号列)的宽度 
	m_FlexGrid.SetColWidth(0,600); 
	 
	// 设置控件第0行(标题行)个列的显示文本 
	m_FlexGrid.SetRow(0); 
	m_FlexGrid.SetCol(1); 
	m_FlexGrid.SetText("学号"); 
	m_FlexGrid.SetCol(2); 
	m_FlexGrid.SetText("姓名"); 
    m_FlexGrid.SetCol(3); 
	m_FlexGrid.SetText("年龄"); 
	m_FlexGrid.SetCol(4); 
	m_FlexGrid.SetText("籍贯"); 
	m_FlexGrid.SetCol(5); 
	m_FlexGrid.SetText("班级"); 
 
	// 将记录集移动到第一个 
	m_pSet->MoveFirst(); 
 
	// 显示每一个记录集的各个字段 
	while(!m_pSet->IsEOF()) 
	{ 
		// 移动到当前行 
		m_FlexGrid.SetRow(iRowCount); 
		// 在当前行第0列显示行号 
		m_FlexGrid.SetCol(0); 
		itoa(iRowCount,(char*)lpstrRow,6); 
		m_FlexGrid.SetText(lpstrRow); 
 
		// 在当前行第1列显示学生记录的学号字段 
		CString  studentID; 
		studentID.Format("%d",m_pSet->m_StudentID); 
		m_FlexGrid.SetCol(1); 
		m_FlexGrid.SetText(studentID); 
 
		// 在当前行第2列显示学生记录的姓名字段 
		m_FlexGrid.SetCol(2); 
		m_FlexGrid.SetText(m_pSet->m_Name); 
 
		// 在当前行第3列显示学生记录的年龄字段 
		CString  age; 
		age.Format("%d",m_pSet->m_Age); 
		m_FlexGrid.SetCol(3); 
		m_FlexGrid.SetText(age); 
 
		// 在当前行第4列显示学生记录的地址字段 
		m_FlexGrid.SetCol(4); 
		m_FlexGrid.SetText(m_pSet->m_Address); 
 
		// 在当前行第5列显示学生记录的班级字段 
		CString  classID; 
		classID.Format("%d",m_pSet->m_ClassID); 
		m_FlexGrid.SetCol(5); 
		m_FlexGrid.SetText(classID); 
 
		if(!m_pSet->IsEOF())// 如果没有结束,移动到下一行继续显示 
		{ 
			m_pSet->MoveNext(); // 移动到下一个记录 
			iRowCount += 1; // 当前行加1 
		} 
	} 
 
	// 将记录集移动到第一个 
	m_pSet->MoveFirst(); 
 
	// 设置控件的当前选择为第一行第一列 
	m_FlexGrid.SetRow(1); 
	m_FlexGrid.SetCol(1); 
} 
 
void CStuDAOView::OnRecordFirst()  
{ 
	// TODO: Add your command handler code here 
	// 移动FlexGrid控件中的选择到第一行 
	m_FlexGrid.SetRow(1); 
	m_FlexGrid.SetCol(1); 
	m_FlexGrid.SetRowSel(1); 
	m_FlexGrid.SetColSel(m_pSet->m_nFields); 
	 
	// 移动记录集到第一个 
	m_pSet->MoveFirst(); 
} 
 
void CStuDAOView::OnRecordLast()  
{ 
	// TODO: Add your command handler code here 
	// 移动FlexGrid控件中的选择到最后一行 
	m_FlexGrid.SetRow(m_pSet->GetRecordCount()); 
	m_FlexGrid.SetCol(1); 
	m_FlexGrid.SetRowSel(m_pSet->GetRecordCount()); 
	m_FlexGrid.SetColSel(m_pSet->m_nFields); 
 
	// 移动记录集到最后一个 
	m_pSet->MoveLast(); 
} 
 
void CStuDAOView::OnRecordNext()  
{ 
	// TODO: Add your command handler code here 
	int iCurrentRow;  // 记录FlexGrid控件中的当前行 
	iCurrentRow = m_FlexGrid.GetRow(); // 获取FlexGrid控件中的当前行 
	 
	if(iCurrentRowGetRecordCount()) // 如果当前行不是最后一行 
	{ 
		// 移动FlexGrid控件中的选择到下一行 
		m_FlexGrid.SetRow(iCurrentRow+1); 
		m_FlexGrid.SetCol(1); 
		m_FlexGrid.SetRowSel(iCurrentRow+1); 
		m_FlexGrid.SetColSel(m_pSet->m_nFields); 
 
		// 移动到下一个记录集 
		m_pSet->MoveNext(); 
	} 
} 
 
void CStuDAOView::OnRecordPrev()  
{ 
	// TODO: Add your command handler code here 
	int iCurrentRow;  // 记录FlexGrid控件中的当前行 
	iCurrentRow = m_FlexGrid.GetRow(); // 获取FlexGrid控件中的当前行 
	 
	if(iCurrentRow>1) // 如果当前行不是第一行 
	{ 
		// 移动FlexGrid控件中的选择到下一行 
		m_FlexGrid.SetRow(iCurrentRow-1); 
		m_FlexGrid.SetCol(1); 
		m_FlexGrid.SetRowSel(iCurrentRow-1); 
		m_FlexGrid.SetColSel(m_pSet->m_nFields); 
 
		// 移动到上一个记录集 
		m_pSet->MovePrev(); 
	}	 
} 
 
BEGIN_EVENTSINK_MAP(CStuDAOView, CDaoRecordView) 
    //{{AFX_EVENTSINK_MAP(CStuDAOView) 
	//}}AFX_EVENTSINK_MAP 
END_EVENTSINK_MAP()