// PicBar.cpp: implementation of the PicBar class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "LYFZIPManage.h" #include "PicBar.h" #include "ShowPic22.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// PicBar::PicBar() { g_pMainWnd->GetSkin(); m_pParent=NULL; m_time=3; m_nType=1; m_bInit=0; m_pImageRun=NULL; m_pImageStop=NULL; CString version = _T ("Version 1.0"); m_time=AfxGetApp()->GetProfileInt (version, "pictime", 3); m_nType=AfxGetApp()->GetProfileInt (version, "pictype", 1); g_fscalexbak= g_fscalex; g_fscaleybak= g_fscaley; g_fscalex= 1; g_fscaley= 1; } PicBar::~PicBar() { try { g_fscalex= g_fscalexbak; g_fscaley= g_fscaleybak; if(m_pImageRun)delete m_pImageRun;m_pImageRun=NULL; if(m_pImageStop)delete m_pImageStop;m_pImageStop=NULL; CString version = _T ("Version 1.0"); AfxGetApp()->WriteProfileInt (version, "pictime", m_time); AfxGetApp()->WriteProfileInt (version, "pictype", m_nType); } catch(...) { } } void PicBar::OnFSCommand(LPCTSTR command, LPCTSTR args) { } void PicBar::Init() { try { m_bInit=1; CRect rc; GetClientRect(rc); CRgn rgn1, rgn2, rgn3; rgn1.CreateRectRgn (0,0, rc.Width (), rc.Height ()); rgn2.CreateRectRgn (0,0, 10, 10); rgn3. CreateEllipticRgn(0,0,20,20); rgn2.CombineRgn (&rgn2, &rgn3, RGN_DIFF); rgn1.CombineRgn (&rgn1, &rgn2, RGN_DIFF); rgn2.DeleteObject (); rgn3.DeleteObject (); rgn2.CreateRectRgn (0,40, 10, 50); rgn3. CreateEllipticRgn(0,30,20,50); rgn2.CombineRgn (&rgn2, &rgn3, RGN_DIFF); rgn1.CombineRgn (&rgn1, &rgn2, RGN_DIFF); rgn2.DeleteObject (); rgn3.DeleteObject (); rgn2.CreateRectRgn (553,40, 563, 50); rgn3. CreateEllipticRgn(543,30,563,50); rgn2.CombineRgn (&rgn2, &rgn3, RGN_DIFF); rgn1.CombineRgn (&rgn1, &rgn2, RGN_DIFF); rgn2.DeleteObject (); rgn3.DeleteObject (); rgn2.CreateRectRgn (553,0, 563, 10); rgn3. CreateEllipticRgn(543,0,563,20); rgn2.CombineRgn (&rgn2, &rgn3, RGN_DIFF); rgn1.CombineRgn (&rgn1, &rgn2, RGN_DIFF); rgn2.DeleteObject (); rgn3.DeleteObject (); ::SetWindowRgn (m_hWnd, rgn1, 0); rc=m_rcarray.ElementAt (9); rc.bottom =rc.top +13; rc.right =rc.left +13; m_button1.Create("",WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX|BS_FLAT, rc,this,100); rc=m_rcarray.ElementAt (10); rc.bottom =rc.top +13; rc.right =rc.left +13; m_button2.Create("",WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX|BS_FLAT, rc,this,101); rc=m_rcarray.ElementAt (11); rc.bottom =rc.top +13; rc.right =rc.left +13; m_button3.Create("",WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX|BS_FLAT, rc,this,102); rc=m_rcarray.ElementAt (12); rc.bottom =rc.top +13; rc.right =rc.left +13; m_button4.Create("",WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX|BS_FLAT, rc,this,103); if(m_nType==1) m_button1.SetCheck (1); else if(m_nType==2) m_button2.SetCheck (1); else if(m_nType==3) m_button3.SetCheck (1); else if(m_nType==4) m_button4.SetCheck (1); DrawTimes(); MyBmpButton2* m_btn=((MyBmpButton2*)m_picarray.ElementAt (4)); m_pImageRun=m_btn->m_bmp->Clone(); LoadImageFromRes(&m_pImageStop, MAKEINTRESOURCE(IDR_JPG2), _T("JPG")); } catch(...) { } } void PicBar::Destory() { } void PicBar::BtnClick(WPARAM wParam, LPARAM lParam) { int id=lParam; id-=99; switch(id) { case 1: ShowWindow(SW_HIDE); ((ShowPic22*)m_pParent)->KillTimer(6); ((ShowPic22*)m_pParent)->SetTimer(6, 100, NULL); break; case 2: ((ShowPic22*)m_pParent)->Rotate1(); break; case 3: ((ShowPic22*)m_pParent)->Rotate2(); break; case 4: ((ShowPic22*)m_pParent)->Pre(); break; case 5: ((ShowPic22*)m_pParent)->AutoPic(); // if(((ShowPic22*)m_pParent)->m_bauto) // ShowWindow(SW_HIDE); break; case 6: ((ShowPic22*)m_pParent)->Next(); break; case 7: m_time--; m_time=max(1, m_time); DrawTimes(); break; case 8: m_time++; m_time=min(20, m_time); DrawTimes(); break; } } BOOL PicBar::PreTransMsg(MSG* pMsg) { if(pMsg->message==WM_KEYDOWN) { return m_pParent->PreTranslateMessage(pMsg); } else if(pMsg->message==WM_PAINT) { // CDialog::PreTranslateMessage(pMsg); // DrawTimes(); } else if(pMsg->message==WM_MOUSEMOVE) { m_pParent->PreTranslateMessage(pMsg); return CDialog::PreTranslateMessage(pMsg); } else if(pMsg->message==WM_LBUTTONDOWN) { g_bNeedDrawParent=1; CPoint pt; ::GetCursorPos (&pt); ScreenToClient(&pt); if(m_rcarray.ElementAt (9).PtInRect (pt)) { m_button1.SetCheck (!m_button1.GetCheck ()); if(m_button1.GetCheck ()) { m_button2.SetCheck (0); m_button3.SetCheck (0); m_button4.SetCheck (0); } EffectChange(); return 1; } if(m_rcarray.ElementAt (10).PtInRect (pt)) { m_button2.SetCheck (!m_button2.GetCheck ()); if(m_button2.GetCheck ()) { m_button1.SetCheck (0); m_button3.SetCheck (0); m_button4.SetCheck (0); } EffectChange(); return 1; } if(m_rcarray.ElementAt (11).PtInRect (pt)) { m_button3.SetCheck (!m_button3.GetCheck ()); if(m_button3.GetCheck ()) { m_button2.SetCheck (0); m_button1.SetCheck (0); m_button4.SetCheck (0); } EffectChange(); return 1; } if(m_rcarray.ElementAt (12).PtInRect (pt)) { m_button4.SetCheck (!m_button4.GetCheck ()); if(m_button4.GetCheck ()) { m_button2.SetCheck (0); m_button3.SetCheck (0); m_button1.SetCheck (0); } EffectChange(); return 1; } } return CDialog::PreTranslateMessage(pMsg); } void PicBar::EffectChange() { if(m_button1.GetCheck ()) { m_nType=1; ((ShowPic22*)m_pParent)->SetEffect(1); } else if(m_button2.GetCheck ()) { m_nType=2; ((ShowPic22*)m_pParent)->SetEffect(2); } else if(m_button3.GetCheck ()) { m_nType=3; ((ShowPic22*)m_pParent)->SetEffect(3); } else if(m_button4.GetCheck ()) { m_nType=4; ((ShowPic22*)m_pParent)->SetEffect(4); } else { m_nType=0; ((ShowPic22*)m_pParent)->SetEffect(0); } } void PicBar::DrawTimes() { try { Graphics graph(m_pBk); CRect rc=m_rcarray.ElementAt (8); rc.top +=2; rc.left +=5; RectF layoutRect(rc.left , rc.top, rc.Width (), rc.Height ()); CString str; str.Format ("%d", m_time); int leng=str.GetLength (); StringFormat format; format.SetAlignment(StringAlignmentCenter); SolidBrush *Brush=new SolidBrush(Color(255,50,55,69)); graph.FillRectangle (Brush, layoutRect ); delete Brush; Brush=new SolidBrush(Color(255,240,240,240)); Font *g_TimerFont=new Font(L"ËÎÌå", 16); BSTR bstr= str.AllocSysString(); graph.SetTextRenderingHint(TextRenderingHintAntiAlias); graph.DrawString( bstr, leng, g_TimerFont, layoutRect, &format, Brush); delete Brush; delete g_TimerFont; SysFreeString(bstr); Invalidate(); } catch(...) { } } void PicBar::ChangeBtn() { try { if(m_pImageRun==NULL)return; MyBmpButton2* m_btn=((MyBmpButton2*)m_picarray.ElementAt (4)); if(((ShowPic22*)m_pParent)->m_bauto==0) m_btn->ChangePic(m_pImageRun, 0, m_pImageStop, 0); else m_btn->ChangePic(m_pImageStop, 0, m_pImageRun, 0); } catch(...) { } }