// ComparePhoto.cpp : implementation file // #include "stdafx.h" #include "ylgl.h" #include "ComparePhoto.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CComparePhoto dialog CComparePhoto::CComparePhoto(CWnd* pParent /*=NULL*/) : CDialog(CComparePhoto::IDD, pParent) { //{{AFX_DATA_INIT(CComparePhoto) // NOTE: the ClassWizard will add member initialization here m_pImage=m_pImage2=m_pImage3=m_pImage4=NULL; //}}AFX_DATA_INIT } void CComparePhoto::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CComparePhoto) // NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CComparePhoto, CDialog) //{{AFX_MSG_MAP(CComparePhoto) ON_WM_PAINT() ON_WM_DESTROY() ON_WM_ERASEBKGND() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CComparePhoto message handlers BOOL CComparePhoto::OnEraseBkgnd(CDC* pDC) { // TODO: Add your message handler code here and/or call default return 1; } BOOL CComparePhoto::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here ::LoadImageFromBuf(&m_pImage, m_path1); ::LoadImageFromBuf(&m_pImage2, m_path2); if(m_path3!="")::LoadImageFromBuf(&m_pImage3, m_path3); if(m_path4!="")::LoadImageFromBuf(&m_pImage4, m_path4); int orientation=GetOrientation(m_pImage); if(orientation==8) { m_pImage->RotateFlip( Rotate270FlipNone ); } else if(orientation==6) { m_pImage->RotateFlip( Rotate90FlipNone ); } orientation=GetOrientation(m_pImage2); if(orientation==8) { m_pImage2->RotateFlip( Rotate270FlipNone ); } else if(orientation==6) { m_pImage2->RotateFlip( Rotate90FlipNone ); } orientation=GetOrientation(m_pImage3); if(orientation==8) { m_pImage3->RotateFlip( Rotate270FlipNone ); } else if(orientation==6) { m_pImage3->RotateFlip( Rotate90FlipNone ); } orientation=GetOrientation(m_pImage4); if(orientation==8) { m_pImage4->RotateFlip( Rotate270FlipNone ); } else if(orientation==6) { m_pImage4->RotateFlip( Rotate90FlipNone ); } ::SetWindowPos(m_hWnd,HWND_TOP,0 ,0,g_screenwid,g_screenhei,SWP_SHOWWINDOW); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CComparePhoto::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here try { CRect rc,rc2,rc3,rc4; GetClientRect(rc); rc2=rc; int wid=rc.Width (); int hei=rc.Height (); if(m_pImage && m_pImage2 && m_pImage3==NULL) { rc.right -=wid/2; rc2.left +=wid/2-2; Graphics graph(dc.GetSafeHdc ()); graph.Clear(Color(255,0,0,0)); int width=m_pImage->GetWidth(); int height=m_pImage->GetHeight(); RectFitDes(width, height, rc); Rect destinationRect( rc.left , rc.top , rc.Width (), rc.Height () ); graph.DrawImage(m_pImage, destinationRect, 0,0,width,height,UnitPixel); width=m_pImage2->GetWidth(); height=m_pImage2->GetHeight(); RectFitDes(width, height, rc2); Rect destinationRect2( rc2.left , rc2.top , rc2.Width (), rc2.Height () ); graph.DrawImage(m_pImage2, destinationRect2, 0,0,width,height,UnitPixel); } else if(m_pImage && m_pImage2 && m_pImage3) { rc3=rc;rc4=rc; rc.right -=wid/2; rc.bottom -=hei/2; rc2.left +=wid/2-2; rc2.bottom =rc.bottom; rc3.top=rc.bottom; rc4.top=rc.bottom; rc3.right=rc.right; rc4.left=rc2.left; Graphics graph(dc.GetSafeHdc ()); graph.Clear(Color(255,0,0,0)); int width=m_pImage->GetWidth(); int height=m_pImage->GetHeight(); RectFitDes(width, height, rc); Rect destinationRect( rc.left , rc.top , rc.Width (), rc.Height () ); graph.DrawImage(m_pImage, destinationRect, 0,0,width,height,UnitPixel); width=m_pImage2->GetWidth(); height=m_pImage2->GetHeight(); RectFitDes(width, height, rc2); Rect destinationRect2( rc2.left , rc2.top , rc2.Width (), rc2.Height () ); graph.DrawImage(m_pImage2, destinationRect2, 0,0,width,height,UnitPixel); if(m_pImage3) { width=m_pImage3->GetWidth(); height=m_pImage3->GetHeight(); RectFitDes(width, height, rc3); Rect destinationRect2( rc3.left , rc3.top , rc3.Width (), rc3.Height () ); graph.DrawImage(m_pImage3, destinationRect2, 0,0,width,height,UnitPixel); } if(m_pImage4) { width=m_pImage4->GetWidth(); height=m_pImage4->GetHeight(); RectFitDes(width, height, rc4); Rect destinationRect2( rc4.left , rc4.top , rc4.Width (), rc4.Height () ); graph.DrawImage(m_pImage4, destinationRect2, 0,0,width,height,UnitPixel); } } else { // dc.FillSolidRect (rc, 0); } } catch(...) { } // Do not call CDialog::OnPaint() for painting messages } void CComparePhoto::OnDestroy() { // TODO: Add your message handler code here if(m_pImage)delete m_pImage; if(m_pImage2)delete m_pImage2; if(m_pImage3)delete m_pImage3; if(m_pImage4)delete m_pImage4; CDialog::OnDestroy(); }