www.pudn.com > 毕业留念册.rar > ClassmatePage.cpp


// ClassmatePage.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "Browse.h" 
#include "ClassmatePage.h" 
#include "Student.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
#define  CLASSMATE_X   50 
#define  CLASSMATE_Y   220 
///////////////////////////////////////////////////////////////////////////// 
// CClassmatePage property page 
 
IMPLEMENT_DYNCREATE(CClassmatePage, CPropertyPage) 
 
CClassmatePage::CClassmatePage() : CPropertyPage(CClassmatePage::IDD) 
{ 
	//{{AFX_DATA_INIT(CClassmatePage) 
	m_strClass = _T(""); 
	m_Liuyan = _T(""); 
	m_StuIsEmpt=TRUE; 
	m_PicNum=0; 
	//}}AFX_DATA_INIT 
} 
 
CClassmatePage::~CClassmatePage() 
{ 
} 
 
void CClassmatePage::DoDataExchange(CDataExchange* pDX) 
{ 
	CPropertyPage::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CClassmatePage) 
	DDX_Text(pDX, IDC_CLASSMATEINTRO, m_strClass); 
	DDX_Text(pDX, IDC_LIUYAN, m_Liuyan); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CClassmatePage, CPropertyPage) 
	//{{AFX_MSG_MAP(CClassmatePage) 
	ON_WM_ERASEBKGND() 
	ON_WM_CTLCOLOR() 
	ON_WM_PAINT() 
	ON_BN_CLICKED(IDC_FORWORAD_PHOTO, OnForworadPhoto) 
	ON_BN_CLICKED(IDC_NEXT_PHOTO, OnNextPhoto) 
	ON_BN_CLICKED(IDC_PAGEUP, OnPageup) 
	ON_BN_CLICKED(IDC_PAGEDOWN, OnPagedown) 
	ON_WM_TIMER() 
	ON_BN_CLICKED(IDC_REC_PLAY, OnRecPlay) 
	ON_BN_CLICKED(IDC_REC_STOP, OnRecStop) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CClassmatePage message handlers 
 
BOOL CClassmatePage::OnInitDialog()  
{ 
	CPropertyPage::OnInitDialog(); 
//初始化变量 
	//pDC->TextOut(40,70,str); 
	m_Nextbnt.SubclassDlgItem(IDC_PAGEDOWN,this); 
	m_Nextbnt.DrawTransparent(TRUE); 
	m_Fronbnt.SubclassDlgItem(IDC_PAGEUP,this); 
	m_Fronbnt.DrawTransparent(TRUE); 
	m_NextPicbnt.SubclassDlgItem(IDC_NEXT_PHOTO,this); 
	m_NextPicbnt.DrawTransparent(TRUE); 
	m_FronPicbnt.SubclassDlgItem(IDC_FORWORAD_PHOTO,this); 
	m_FronPicbnt.DrawTransparent(TRUE); 
	m_PlayRecbnt.SubclassDlgItem(IDC_REC_PLAY,this); 
	m_PlayRecbnt.DrawTransparent(TRUE); 
	m_StopRecbnt.SubclassDlgItem(IDC_REC_STOP,this); 
	m_StopRecbnt.DrawTransparent(TRUE); 
	if(m_Picture.m_Picture.GetSize()!=0) 
	{ 
		m_Picture.m_Picture.RemoveAll(); 
	} 
	for(int i=0;im_SchoolPhoto.GetSize();i++) 
	{ 
		 
		m_Picture.m_Picture.Add(m_Classe->m_SchoolPhoto[i]); 
	} 
	Show(); 
//	pDC->Rectangle(100,99,170,240); 
//	SetTimer(1,30,NULL); 
	// TODO: Add extra initialization here 
//	GetPicture(); 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
void CClassmatePage::Show(CDC *pDC,CStudent *stu) 
{ 
	CBrush brush(RGB(255,255,255)); 
	CBrush* oldBrush=pDC->SelectObject(&brush); 
	CPen pen(PS_SOLID,1,RGB(251,211,24)); 
	CPen* oldPen=pDC->SelectObject(&pen); 
	pDC->SetBkColor(RGB(255,255,255)); 
	pDC->SetTextColor(RGB(163,83,160)); 
	pDC->Rectangle(254,230,535,370); 
	pDC->TextOut(265,231,"姓名:  "); 
	pDC->TextOut(315,231,stu->m_Name); 
	pDC->TextOut(265,250,"生日:  "); 
	pDC->TextOut(315,250,stu->m_Birthday); 
	pDC->TextOut(265,270,"性别:  "); 
	pDC->TextOut(315,270,stu->m_Sex); 
	pDC->TextOut(265,290,"QQ:  "); 
	pDC->TextOut(345,290,stu->m_QQ); 
	pDC->TextOut(265,310,"固定电话:  "); 
	pDC->TextOut(345,310,stu->m_Tel); 
	pDC->TextOut(265,330,"移动电话:  "); 
	pDC->TextOut(345,330,stu->m_MoveTel); 
	pDC->TextOut(265,350,"电子邮箱:  "); 
	pDC->TextOut(345,350,stu->m_Email); 
	pDC->TextOut(345,380,"照片简介:"); 
	m_Liuyan=stu->m_Liuyan; 
	UpdateData(FALSE); 
//	pDC->TextOut(200,220,"留言:  "); 
//	pDC->TextOut(200,240,stu->m_Liuyan); 
	GetPicture(); 
} 
void CClassmatePage::GetPicture() 
{ 
	if(m_Picture.m_Picture.GetSize()!=0) 
	{ 
 
		int flag=m_Picture.m_Picture[m_Picture.m_Index].mark; 
		m_strClass=m_Picture.m_Picture[m_Picture.m_Index].introduction; 
		int styFrame=m_Picture.m_Picture[m_Picture.m_Index].sFrame; 
		m_Picture.GetPicture(); 
		CDC *pDC=this->GetDC(); 
		CRect m_Rect; 
		GetDlgItem(IDC_SHOWPIC)->GetWindowRect(m_Rect); 
		CPoint p1(CLASSMATE_X,CLASSMATE_Y); 
		CPoint p2(CLASSMATE_X+m_Rect.Width(),CLASSMATE_Y+m_Rect.Height()); 
		m_Rect.SetRect(p1,p2); 
		m_Picture.Show(pDC,m_Rect,flag); 
		m_Picture.ShowFrame(pDC,p1.x,p1.y,m_Rect,styFrame); 
		UpdateData(FALSE); 
	} 
	 
	 
} 
void CClassmatePage::Show() 
{ 
 
	UpdateData(FALSE); 
} 
 
HBRUSH CClassmatePage::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)  
{ 
	HBRUSH hbr = CPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor); 
	 
	// TODO: Change any attributes of the DC here 
    if(nCtlColor==CTLCOLOR_EDIT) 
	{ 
		pDC->SetBkMode(TRANSPARENT); 
		pDC->SetTextColor(RGB(0,0,0)); 
		pDC->SetBkColor(RGB(255,235,255)); 
		HBRUSH b=CreateSolidBrush(RGB(255,235,255)); 
		return b; 
	} 
	 
	if(nCtlColor==CTLCOLOR_STATIC) 
	{ 
		pDC->SetTextColor(RGB(0,0,255)); 
		pDC->SetBkColor(RGB(0,192,0)); 
		HBRUSH b=CreateSolidBrush(RGB(0,192,0)); 
		return b; 
	} 
	// TODO: Return a different brush if the default is not desired 
  
	return hbr; 
} 
 
void CClassmatePage::OnPaint()  
{ 
	CPaintDC dc(this); // device context for painting 
	 
	// TODO: Add your message handler code here 
	CDC *pDC=GetDC(); 
	CStudent *stu=new CStudent(); 
	m_Classe->InItStudentInf(); 
	if(m_Classe->m_Students.GetHeadPosition()!=NULL) 
	{ 
		stu=(CStudent*)m_Classe->GetStudent();	 
		if(m_Picture.m_Picture.GetSize()!=0) 
		{ 
			m_Picture.m_Picture.RemoveAll(); 
		} 
		for(int i=0;im_Picture.GetSize();i++) 
		{ 
	 
			m_Picture.m_Picture.Add(stu->m_Picture[i]); 
		} 
		 
		CDC *pDC=this->GetDC(); 
 
		Show(pDC,stu); 
		m_StuIsEmpt=FALSE; 
	} 
//	ReleaseDC(pDC); 
//	delete stu; 
	// Do not call CPropertyPage::OnPaint() for painting messages 
} 
 
void CClassmatePage::OnForworadPhoto()  
{ 
	// TODO: Add your control notification handler code here 
	if(m_Picture.m_Picture.GetSize()!=0) 
	{ 
		m_Picture.GetFronPicture(); 
		int flag=m_Picture.m_Picture[m_Picture.m_Index].mark; 
		m_strClass=m_Picture.m_Picture[m_Picture.m_Index].introduction; 
		int styFrame=m_Picture.m_Picture[m_Picture.m_Index].sFrame; 
		CDC *pDC=this->GetDC(); 
		CRect m_Rect; 
		GetDlgItem(IDC_SHOWPIC)->GetWindowRect(m_Rect); 
		CPoint p1(CLASSMATE_X,CLASSMATE_Y); 
		CPoint p2(CLASSMATE_X+m_Rect.Width(),CLASSMATE_Y+m_Rect.Height()); 
		m_Rect.SetRect(p1,p2); 
		m_Picture.Show(pDC,m_Rect,flag); 
		m_Picture.ShowFrame(pDC,p1.x,p1.y,m_Rect,styFrame); 
		UpdateData(FALSE); 
		ReleaseDC(pDC); 
	} 
} 
 
void CClassmatePage::OnNextPhoto()  
{ 
	// TODO: Add your control notification handler code here 
	if(m_Picture.m_Picture.GetSize()!=0) 
	{ 
		m_Picture.GetNextPicture(); 
		int flag=m_Picture.m_Picture[m_Picture.m_Index].mark; 
		m_strClass=m_Picture.m_Picture[m_Picture.m_Index].introduction; 
		int styFrame=m_Picture.m_Picture[m_Picture.m_Index].sFrame; 
		CDC *pDC=this->GetDC(); 
		CRect m_Rect; 
		GetDlgItem(IDC_SHOWPIC)->GetWindowRect(m_Rect); 
		CPoint p1(CLASSMATE_X,CLASSMATE_Y); 
		CPoint p2(CLASSMATE_X+m_Rect.Width(),CLASSMATE_Y+m_Rect.Height()); 
		m_Rect.SetRect(p1,p2); 
		m_Picture.Show(pDC,m_Rect,flag); 
		m_Picture.ShowFrame(pDC,p1.x,p1.y,m_Rect,styFrame); 
		UpdateData(FALSE); 
		ReleaseDC(pDC); 
	} 
} 
 
void CClassmatePage::OnPageup()  
{ 
	// TODO: Add your control notification handler code here 
	if(!m_StuIsEmpt) 
	{ 
	    m_Classe->GetFronStudent(m_hWnd); 
		CStudent *stu=new CStudent(); 
		//stu=(CStudent*)m_Classe->m_Students.GetAt(m_Classe->m_Position); 
		stu=(CStudent*)m_Classe->GetStudent();	 
		if(m_Picture.m_Picture.GetSize()!=0) 
		{ 
			m_Picture.m_Picture.RemoveAll(); 
		} 
		for(int i=0;im_Picture.GetSize();i++) 
		{ 
			 
			m_Picture.m_Picture.Add(stu->m_Picture[i]); 
		} 
		CDC *pDC=GetDC(); 
		Show(pDC,stu); 
		ReleaseDC(pDC); 
		delete stu; 
	} 
} 
 
void CClassmatePage::OnPagedown()  
{ 
	// TODO: Add your control notification handler code here 
	if(!m_StuIsEmpt) 
	{ 
		m_Classe->GetNextStudent(m_hWnd); 
		CStudent *stu=new CStudent(); 
		//stu=(CStudent*)m_Classe->m_Students.GetAt(m_Classe->m_Position); 
		stu=(CStudent*)m_Classe->GetStudent();	 
		if(m_Picture.m_Picture.GetSize()!=0) 
		{ 
			m_Picture.m_Picture.RemoveAll(); 
		} 
		for(int i=0;im_Picture.GetSize();i++) 
		{ 
			 
			m_Picture.m_Picture.Add(stu->m_Picture[i]); 
		} 
		CDC *pDC=this->GetDC(); 
		Show(pDC,stu); 
		ReleaseDC(pDC); 
		delete stu; 
	} 
} 
 
void CClassmatePage::OnTimer(UINT nIDEvent)  
{ 
	if(nIDEvent==2) 
	{ 
		if(m_Picture.m_Picture.GetSize()!=0) 
		{ 
			m_PicNum++; 
		//	if(m_PicNum==m_Picture.m_Picture.GetSize()) 
			//	this->KillTimer(2); 
			m_Picture.GetNextPicture(); 
			int flag=m_Picture.m_Picture[m_Picture.m_Index].mark; 
			m_strClass=m_Picture.m_Picture[m_Picture.m_Index].introduction; 
			int styFrame=m_Picture.m_Picture[m_Picture.m_Index].sFrame; 
			CDC *pDC=this->GetDC(); 
			CRect m_Rect; 
			GetDlgItem(IDC_SHOWPIC)->GetWindowRect(m_Rect); 
			CPoint p1(CLASSMATE_X,CLASSMATE_Y); 
			CPoint p2(CLASSMATE_X+m_Rect.Width(),CLASSMATE_Y+m_Rect.Height()); 
			m_Rect.SetRect(p1,p2); 
			m_Picture.Show(pDC,m_Rect,flag); 
			m_Picture.ShowFrame(pDC,p1.x,p1.y,m_Rect,styFrame); 
			UpdateData(FALSE); 
			ReleaseDC(pDC); 
		} 
	} 
	if(nIDEvent==1) 
	{ 
		if(m_PicNum==m_Picture.m_Picture.GetSize()) 
		{ 
			m_PicNum=0; 
 
			if(!m_StuIsEmpt) 
			{ 
				m_Classe->GetNextStudent(m_hWnd); 
				CStudent *stu=new CStudent(); 
				//stu=(CStudent*)m_Classe->m_Students.GetAt(m_Classe->m_Position); 
				stu=(CStudent*)m_Classe->GetStudent();	 
				if(m_Picture.m_Picture.GetSize()!=0) 
				{ 
					m_Picture.m_Picture.RemoveAll(); 
				} 
				for(int i=0;im_Picture.GetSize();i++) 
				{ 
					 
					m_Picture.m_Picture.Add(stu->m_Picture[i]); 
				} 
				CDC *pDC=this->GetDC(); 
				Show(pDC,stu); 
				ReleaseDC(pDC); 
				delete stu; 
			} 
		} 
	} 
	CPropertyPage::OnTimer(nIDEvent); 
} 
BOOL CClassmatePage::OnEraseBkgnd(CDC* pDC) 
{ 
	CDC		memDC; 
	CBitmap MPlayer; 
	if(!MPlayer.LoadBitmap(IDB_BG)) 
		return FALSE; 
	memDC.CreateCompatibleDC(pDC); 
	CBitmap *pOldBmp=memDC.SelectObject(&MPlayer); 
	pDC->BitBlt(0,0,824,563,&memDC,0,0,SRCCOPY); 
	memDC.SelectObject(pOldBmp); 
	return TRUE; 
} 
 
void CClassmatePage::OnRecPlay()  
{ 
	if(!m_StuIsEmpt) 
	{ 
		CStudent *stu=new CStudent(); 
		stu=(CStudent*)m_Classe->GetStudent(); 
		m_WavLiuyan.Load(stu->m_WavLiuyan); 
		m_WavLiuyan.Play(); 
	} 
	// TODO: Add your control notification handler code here 
	 
} 
 
void CClassmatePage::OnRecStop()  
{ 
	m_WavLiuyan.Stop();	 
} 
 
/*void CClassmatePage::OnAtuoplay()  
{ 
	SetTimer(1,1000,NULL); 
	SetTimer(2,3000,NULL); 
	 
	// TODO: Add your control notification handler code here 
	 
}*/