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
}*/