诸暨麻将添加redis
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 
 
 

170 řádky
4.6 KiB

  1. #include "StdAfx.h"
  2. #include "DrawSiceWnd.h"
  3. //////////////////////////////////////////////////////////////////////////
  4. #define IDI_SICE_POS 203 //移动定时器
  5. //////////////////////////////////////////////////////////////////////////
  6. BEGIN_MESSAGE_MAP(CDrawSiceWnd, CWnd)
  7. ON_WM_PAINT()
  8. ON_WM_CREATE()
  9. ON_WM_TIMER()
  10. END_MESSAGE_MAP()
  11. //////////////////////////////////////////////////////////////////////////
  12. //构造函数
  13. CDrawSiceWnd::CDrawSiceWnd()
  14. {
  15. //加载资源
  16. m_bSicePos=0;
  17. m_nXPos=0;
  18. m_nYPos=0;
  19. HINSTANCE hInstance=AfxGetInstanceHandle();
  20. m_ImageBack.LoadFromResource(hInstance, IDB_SICE_BACK);
  21. for ( int i = 0; i < 12; ++i )
  22. {
  23. m_ImageDrawSice[i].LoadFromResource(hInstance, IDB_DRAW_SICE1 + i);
  24. }
  25. m_ImageDrawSiceUserSecond = NULL;
  26. m_ImageDrawSiceSecond = NULL;
  27. m_ImageDrawSiceUserFirst = NULL;
  28. m_ImageDrawSiceUserSecond = NULL;
  29. return;
  30. }
  31. //析构函数
  32. CDrawSiceWnd::~CDrawSiceWnd()
  33. {
  34. }
  35. //重画函数
  36. void CDrawSiceWnd::OnPaint()
  37. {
  38. CPaintDC dc(this);
  39. //获取位置
  40. CRect rcClient;
  41. GetClientRect(&rcClient);
  42. //创建缓冲
  43. CDC BufferDC;
  44. CBitmap BufferImage;
  45. BufferDC.CreateCompatibleDC(&dc);
  46. BufferImage.CreateCompatibleBitmap(&dc,rcClient.Width(),rcClient.Height());
  47. BufferDC.SelectObject(&BufferImage);
  48. //绘画背景
  49. m_ImageBack.BitBlt(BufferDC,0,0);
  50. if(m_bSicePos<9 )
  51. {
  52. if ( m_ImageDrawSiceFirst )
  53. m_ImageDrawSiceFirst->TransDrawImage(&BufferDC,30,0,m_ImageDrawSiceFirst->GetWidth()/9,m_ImageDrawSiceFirst->GetHeight(), m_bSicePos*m_ImageDrawSiceFirst->GetWidth()/9,0,RGB(0,0,255));
  54. if ( m_ImageDrawSiceSecond )
  55. m_ImageDrawSiceSecond->TransDrawImage(&BufferDC,30,0,m_ImageDrawSiceSecond->GetWidth()/9,m_ImageDrawSiceSecond->GetHeight(),m_bSicePos*m_ImageDrawSiceSecond->GetWidth()/9,0,RGB(0,0,255));
  56. }
  57. else
  58. {
  59. if ( m_ImageDrawSiceUserFirst )
  60. m_ImageDrawSiceUserFirst->TransDrawImage(&BufferDC,30,0,m_ImageDrawSiceUserFirst->GetWidth()/9,m_ImageDrawSiceUserFirst->GetHeight(),m_bSicePos%9*m_ImageDrawSiceUserFirst->GetWidth()/9,0,RGB(0,0,255));
  61. if ( m_ImageDrawSiceUserSecond )
  62. m_ImageDrawSiceUserSecond->TransDrawImage(&BufferDC,30,0,m_ImageDrawSiceUserSecond->GetWidth()/9,m_ImageDrawSiceUserSecond->GetHeight(),m_bSicePos%9*m_ImageDrawSiceUserSecond->GetWidth()/9,0,RGB(0,0,255));
  63. }
  64. //绘画界面
  65. dc.BitBlt(0,0,rcClient.Width(),rcClient.Height(),&BufferDC,0,0,SRCCOPY);
  66. //清理资源
  67. BufferDC.DeleteDC();
  68. BufferImage.DeleteObject();
  69. return;
  70. }
  71. //建立消息
  72. int CDrawSiceWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
  73. {
  74. if (__super::OnCreate(lpCreateStruct)==-1) return -1;
  75. SetWindowPos(NULL,0,0,m_ImageBack.GetWidth(),m_ImageBack.GetHeight(),SWP_NOZORDER|SWP_NOREPOSITION);
  76. return 0;
  77. }
  78. //定时器消息
  79. void CDrawSiceWnd::OnTimer(UINT nIDEvent)
  80. {
  81. if(IDI_SICE_POS==nIDEvent)
  82. {
  83. if(m_bSicePos>=17)
  84. {
  85. KillTimer(IDI_SICE_POS);
  86. Sleep(1000);
  87. CGameFrameView::GetInstance()->PostEngineMessage(IDM_SICE_FINISH,NULL,NULL);
  88. }
  89. else
  90. {
  91. if(m_bSicePos==8)
  92. {
  93. Sleep(1000);
  94. CGameFrameView::GetInstance()->PostEngineMessage(IDM_SICE_TWO,NULL,NULL);
  95. }
  96. m_bSicePos++;
  97. }
  98. Invalidate();
  99. }
  100. __super::OnTimer(nIDEvent);
  101. }
  102. //设置色子信息
  103. void CDrawSiceWnd::SetSiceInfo(CDC *dc,BYTE bMoveTime,WORD wSice1,WORD wSice2)
  104. {
  105. HINSTANCE hInstance=AfxGetInstanceHandle();
  106. ParentDC=dc;
  107. BYTE SiceFirst,SiceSecond;
  108. if( wSice1 > 0 )
  109. {
  110. SiceFirst = HIBYTE(wSice1);
  111. SiceSecond = LOBYTE(wSice1);
  112. ASSERT( SiceFirst > 0 && SiceFirst < 7 && SiceSecond > 0 && SiceSecond < 7 );
  113. m_ImageDrawSiceFirst = &m_ImageDrawSice[SiceFirst-1];
  114. m_ImageDrawSiceSecond = &m_ImageDrawSice[6 + SiceSecond-1];
  115. //m_ImageDrawSiceFirst.LoadFromResource(hInstance, IDB_DRAW_SICE1+SiceFirst-1);
  116. //m_ImageDrawSiceSecond.LoadFromResource(hInstance, IDB_DRAW_SICE7+SiceSecond-1);
  117. }
  118. if( wSice2 > 0 )
  119. {
  120. SiceFirst = HIBYTE(wSice2);
  121. SiceSecond = LOBYTE(wSice2);
  122. ASSERT( SiceFirst > 0 && SiceFirst < 7 && SiceSecond > 0 && SiceSecond < 7 );
  123. m_ImageDrawSiceUserFirst = &m_ImageDrawSice[SiceFirst-1];
  124. m_ImageDrawSiceUserSecond = &m_ImageDrawSice[6 + SiceSecond-1];
  125. //m_ImageDrawSiceUserFirst.LoadFromResource(hInstance, IDB_DRAW_SICE1+SiceFirst-1);
  126. //m_ImageDrawSiceUserSecond.LoadFromResource(hInstance, IDB_DRAW_SICE7+SiceSecond-1);
  127. }
  128. m_bSicePos = (wSice1>0)?0:9;
  129. SetTimer(IDI_SICE_POS,bMoveTime,NULL);
  130. }
  131. //基准位置
  132. void CDrawSiceWnd::SetBenchmarkPos(int nXPos, int nYPos)
  133. {
  134. m_nXPos=nXPos;
  135. m_nYPos=nYPos;
  136. }
  137. //设置窗口钩子
  138. void CDrawSiceWnd::SetWindowSink(CWnd *pSinkWnd)
  139. {
  140. m_pSinkWnd = pSinkWnd;
  141. }
  142. //////////////////////////////////////////////////////////////////////////