PicBar.cpp 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. // PicBar.cpp: implementation of the PicBar class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "LYFZIPManage.h"
  6. #include "PicBar.h"
  7. #include "ShowPic22.h"
  8. //////////////////////////////////////////////////////////////////////
  9. // Construction/Destruction
  10. //////////////////////////////////////////////////////////////////////
  11. PicBar::PicBar()
  12. {
  13. g_pMainWnd->GetSkin();
  14. m_pParent=NULL;
  15. m_time=3;
  16. m_nType=1;
  17. m_bInit=0;
  18. m_pImageRun=NULL;
  19. m_pImageStop=NULL;
  20. CString version = _T ("Version 1.0");
  21. m_time=AfxGetApp()->GetProfileInt (version, "pictime", 3);
  22. m_nType=AfxGetApp()->GetProfileInt (version, "pictype", 1);
  23. g_fscalexbak= g_fscalex;
  24. g_fscaleybak= g_fscaley;
  25. g_fscalex= 1;
  26. g_fscaley= 1;
  27. }
  28. PicBar::~PicBar()
  29. {
  30. try
  31. {
  32. g_fscalex= g_fscalexbak;
  33. g_fscaley= g_fscaleybak;
  34. if(m_pImageRun)delete m_pImageRun;m_pImageRun=NULL;
  35. if(m_pImageStop)delete m_pImageStop;m_pImageStop=NULL;
  36. CString version = _T ("Version 1.0");
  37. AfxGetApp()->WriteProfileInt (version, "pictime", m_time);
  38. AfxGetApp()->WriteProfileInt (version, "pictype", m_nType);
  39. }
  40. catch(...)
  41. {
  42. }
  43. }
  44. void PicBar::OnFSCommand(LPCTSTR command, LPCTSTR args)
  45. {
  46. }
  47. void PicBar::Init()
  48. {
  49. try
  50. {
  51. m_bInit=1;
  52. CRect rc;
  53. GetClientRect(rc);
  54. CRgn rgn1, rgn2, rgn3;
  55. rgn1.CreateRectRgn (0,0, rc.Width (), rc.Height ());
  56. rgn2.CreateRectRgn (0,0, 10, 10);
  57. rgn3. CreateEllipticRgn(0,0,20,20);
  58. rgn2.CombineRgn (&rgn2, &rgn3, RGN_DIFF);
  59. rgn1.CombineRgn (&rgn1, &rgn2, RGN_DIFF);
  60. rgn2.DeleteObject ();
  61. rgn3.DeleteObject ();
  62. rgn2.CreateRectRgn (0,40, 10, 50);
  63. rgn3. CreateEllipticRgn(0,30,20,50);
  64. rgn2.CombineRgn (&rgn2, &rgn3, RGN_DIFF);
  65. rgn1.CombineRgn (&rgn1, &rgn2, RGN_DIFF);
  66. rgn2.DeleteObject ();
  67. rgn3.DeleteObject ();
  68. rgn2.CreateRectRgn (553,40, 563, 50);
  69. rgn3. CreateEllipticRgn(543,30,563,50);
  70. rgn2.CombineRgn (&rgn2, &rgn3, RGN_DIFF);
  71. rgn1.CombineRgn (&rgn1, &rgn2, RGN_DIFF);
  72. rgn2.DeleteObject ();
  73. rgn3.DeleteObject ();
  74. rgn2.CreateRectRgn (553,0, 563, 10);
  75. rgn3. CreateEllipticRgn(543,0,563,20);
  76. rgn2.CombineRgn (&rgn2, &rgn3, RGN_DIFF);
  77. rgn1.CombineRgn (&rgn1, &rgn2, RGN_DIFF);
  78. rgn2.DeleteObject ();
  79. rgn3.DeleteObject ();
  80. ::SetWindowRgn (m_hWnd, rgn1, 0);
  81. rc=m_rcarray.ElementAt (9);
  82. rc.bottom =rc.top +13;
  83. rc.right =rc.left +13;
  84. m_button1.Create("",WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX|BS_FLAT, rc,this,100);
  85. rc=m_rcarray.ElementAt (10);
  86. rc.bottom =rc.top +13;
  87. rc.right =rc.left +13;
  88. m_button2.Create("",WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX|BS_FLAT, rc,this,101);
  89. rc=m_rcarray.ElementAt (11);
  90. rc.bottom =rc.top +13;
  91. rc.right =rc.left +13;
  92. m_button3.Create("",WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX|BS_FLAT, rc,this,102);
  93. rc=m_rcarray.ElementAt (12);
  94. rc.bottom =rc.top +13;
  95. rc.right =rc.left +13;
  96. m_button4.Create("",WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX|BS_FLAT, rc,this,103);
  97. if(m_nType==1)
  98. m_button1.SetCheck (1);
  99. else if(m_nType==2)
  100. m_button2.SetCheck (1);
  101. else if(m_nType==3)
  102. m_button3.SetCheck (1);
  103. else if(m_nType==4)
  104. m_button4.SetCheck (1);
  105. DrawTimes();
  106. MyBmpButton2* m_btn=((MyBmpButton2*)m_picarray.ElementAt (4));
  107. m_pImageRun=m_btn->m_bmp->Clone();
  108. LoadImageFromRes(&m_pImageStop, MAKEINTRESOURCE(IDR_JPG2), _T("JPG"));
  109. }
  110. catch(...)
  111. {
  112. }
  113. }
  114. void PicBar::Destory()
  115. {
  116. }
  117. void PicBar::BtnClick(WPARAM wParam, LPARAM lParam)
  118. {
  119. int id=lParam;
  120. id-=99;
  121. switch(id)
  122. {
  123. case 1:
  124. ShowWindow(SW_HIDE);
  125. ((ShowPic22*)m_pParent)->KillTimer(6);
  126. ((ShowPic22*)m_pParent)->SetTimer(6, 100, NULL);
  127. break;
  128. case 2:
  129. ((ShowPic22*)m_pParent)->Rotate1();
  130. break;
  131. case 3:
  132. ((ShowPic22*)m_pParent)->Rotate2();
  133. break;
  134. case 4:
  135. ((ShowPic22*)m_pParent)->Pre();
  136. break;
  137. case 5:
  138. ((ShowPic22*)m_pParent)->AutoPic();
  139. // if(((ShowPic22*)m_pParent)->m_bauto)
  140. // ShowWindow(SW_HIDE);
  141. break;
  142. case 6:
  143. ((ShowPic22*)m_pParent)->Next();
  144. break;
  145. case 7:
  146. m_time--;
  147. m_time=max(1, m_time);
  148. DrawTimes();
  149. break;
  150. case 8:
  151. m_time++;
  152. m_time=min(20, m_time);
  153. DrawTimes();
  154. break;
  155. }
  156. }
  157. BOOL PicBar::PreTransMsg(MSG* pMsg)
  158. {
  159. if(pMsg->message==WM_KEYDOWN)
  160. {
  161. return m_pParent->PreTranslateMessage(pMsg);
  162. }
  163. else if(pMsg->message==WM_PAINT)
  164. {
  165. // CDialog::PreTranslateMessage(pMsg);
  166. // DrawTimes();
  167. }
  168. else if(pMsg->message==WM_MOUSEMOVE)
  169. {
  170. m_pParent->PreTranslateMessage(pMsg);
  171. return CDialog::PreTranslateMessage(pMsg);
  172. }
  173. else if(pMsg->message==WM_LBUTTONDOWN)
  174. {
  175. g_bNeedDrawParent=1;
  176. CPoint pt;
  177. ::GetCursorPos (&pt);
  178. ScreenToClient(&pt);
  179. if(m_rcarray.ElementAt (9).PtInRect (pt))
  180. {
  181. m_button1.SetCheck (!m_button1.GetCheck ());
  182. if(m_button1.GetCheck ())
  183. {
  184. m_button2.SetCheck (0);
  185. m_button3.SetCheck (0);
  186. m_button4.SetCheck (0);
  187. }
  188. EffectChange();
  189. return 1;
  190. }
  191. if(m_rcarray.ElementAt (10).PtInRect (pt))
  192. {
  193. m_button2.SetCheck (!m_button2.GetCheck ());
  194. if(m_button2.GetCheck ())
  195. {
  196. m_button1.SetCheck (0);
  197. m_button3.SetCheck (0);
  198. m_button4.SetCheck (0);
  199. }
  200. EffectChange();
  201. return 1;
  202. }
  203. if(m_rcarray.ElementAt (11).PtInRect (pt))
  204. {
  205. m_button3.SetCheck (!m_button3.GetCheck ());
  206. if(m_button3.GetCheck ())
  207. {
  208. m_button2.SetCheck (0);
  209. m_button1.SetCheck (0);
  210. m_button4.SetCheck (0);
  211. }
  212. EffectChange();
  213. return 1;
  214. }
  215. if(m_rcarray.ElementAt (12).PtInRect (pt))
  216. {
  217. m_button4.SetCheck (!m_button4.GetCheck ());
  218. if(m_button4.GetCheck ())
  219. {
  220. m_button2.SetCheck (0);
  221. m_button3.SetCheck (0);
  222. m_button1.SetCheck (0);
  223. }
  224. EffectChange();
  225. return 1;
  226. }
  227. }
  228. return CDialog::PreTranslateMessage(pMsg);
  229. }
  230. void PicBar::EffectChange()
  231. {
  232. if(m_button1.GetCheck ())
  233. {
  234. m_nType=1;
  235. ((ShowPic22*)m_pParent)->SetEffect(1);
  236. }
  237. else if(m_button2.GetCheck ())
  238. {
  239. m_nType=2;
  240. ((ShowPic22*)m_pParent)->SetEffect(2);
  241. }
  242. else if(m_button3.GetCheck ())
  243. {
  244. m_nType=3;
  245. ((ShowPic22*)m_pParent)->SetEffect(3);
  246. }
  247. else if(m_button4.GetCheck ())
  248. {
  249. m_nType=4;
  250. ((ShowPic22*)m_pParent)->SetEffect(4);
  251. }
  252. else
  253. {
  254. m_nType=0;
  255. ((ShowPic22*)m_pParent)->SetEffect(0);
  256. }
  257. }
  258. void PicBar::DrawTimes()
  259. {
  260. try
  261. {
  262. Graphics graph(m_pBk);
  263. CRect rc=m_rcarray.ElementAt (8);
  264. rc.top +=2;
  265. rc.left +=5;
  266. RectF layoutRect(rc.left , rc.top, rc.Width (), rc.Height ());
  267. CString str;
  268. str.Format ("%d", m_time);
  269. int leng=str.GetLength ();
  270. StringFormat format;
  271. format.SetAlignment(StringAlignmentCenter);
  272. SolidBrush *Brush=new SolidBrush(Color(255,50,55,69));
  273. graph.FillRectangle (Brush, layoutRect );
  274. delete Brush;
  275. Brush=new SolidBrush(Color(255,240,240,240));
  276. Font *g_TimerFont=new Font(L"ËÎÌå", 16);
  277. BSTR bstr= str.AllocSysString();
  278. graph.SetTextRenderingHint(TextRenderingHintAntiAlias);
  279. graph.DrawString(
  280. bstr,
  281. leng,
  282. g_TimerFont,
  283. layoutRect,
  284. &format,
  285. Brush);
  286. delete Brush;
  287. delete g_TimerFont;
  288. SysFreeString(bstr);
  289. Invalidate();
  290. }
  291. catch(...)
  292. {
  293. }
  294. }
  295. void PicBar::ChangeBtn()
  296. {
  297. try
  298. {
  299. if(m_pImageRun==NULL)return;
  300. MyBmpButton2* m_btn=((MyBmpButton2*)m_picarray.ElementAt (4));
  301. if(((ShowPic22*)m_pParent)->m_bauto==0)
  302. m_btn->ChangePic(m_pImageRun, 0, m_pImageStop, 0);
  303. else
  304. m_btn->ChangePic(m_pImageStop, 0, m_pImageRun, 0);
  305. }
  306. catch(...)
  307. {
  308. }
  309. }