MainFrm.cpp
上传用户:may_xy
上传日期:2007-08-09
资源大小:1519k
文件大小:3k
源码类别:

游戏

开发平台:

C/C++

  1. // MainFrm.cpp : implementation of the CMainFrame class
  2. //
  3. #include "stdafx.h"
  4. #include "斗地主.h"
  5. #include "Game.h"
  6. #include "Single_Game.h"
  7. #include "Client_Game.h"
  8. #include "Server_Game.h"
  9. //#include "My_DirectInput.h"
  10. //#include "my_directdraw.h"
  11. #include "Draw_Cards_Engine.h"
  12. #include "MainFrm.h"
  13. #ifdef _DEBUG
  14. #define new DEBUG_NEW
  15. #undef THIS_FILE
  16. static char THIS_FILE[] = __FILE__;
  17. #endif
  18. /////////////////////////////////////////////////////////////////////////////
  19. // CMainFrame
  20. IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
  21. BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
  22. //{{AFX_MSG_MAP(CMainFrame)
  23. ON_WM_TIMER()
  24. ON_WM_CREATE()
  25. ON_WM_CHAR()
  26. //}}AFX_MSG_MAP
  27. END_MESSAGE_MAP()
  28. /////////////////////////////////////////////////////////////////////////////
  29. // CMainFrame construction/destruction
  30. CMainFrame::CMainFrame()
  31. {
  32. // TODO: add member initialization code here
  33. Create(NULL,"斗地主",WS_POPUP);  //终于知道了!在OnCreate()就会用到pCMainFrame!!!!!!!!1
  34. // pCMainFrame = (CMainFrame*)this;
  35. }
  36. CMainFrame::~CMainFrame()
  37. {
  38. }
  39. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  40. {
  41. if( !CFrameWnd::PreCreateWindow(cs) )
  42. return FALSE;
  43. // TODO: Modify the Window class or styles here by modifying
  44. //  the CREATESTRUCT cs
  45. return TRUE;
  46. }
  47. /////////////////////////////////////////////////////////////////////////////
  48. // CMainFrame diagnostics
  49. #ifdef _DEBUG
  50. void CMainFrame::AssertValid() const
  51. {
  52. CFrameWnd::AssertValid();
  53. }
  54. void CMainFrame::Dump(CDumpContext& dc) const
  55. {
  56. CFrameWnd::Dump(dc);
  57. }
  58. #endif //_DEBUG
  59. /////////////////////////////////////////////////////////////////////////////
  60. // CMainFrame message handlers
  61. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
  62. {
  63. if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
  64. return -1;
  65. CWindowDC dc(this);
  66. int x = dc.GetDeviceCaps(HORZRES);
  67. int y = dc.GetDeviceCaps(VERTRES);
  68. if(x == 800 && y == 600)
  69. {
  70. //改变所有的全局变量
  71. AfxMessageBox("对不起!本游戏默认分辨率为1024*768,如果在800*600
  72. 分辨率下可能会显示不正常!我将尽快解决此问题!");
  73. }
  74. else if(x != 1024 || y != 768)
  75. {
  76. AfxMessageBox("对不起!本游戏只支持800*600和1024*768两种分辨率!");
  77. PostMessage(WM_CLOSE );
  78. return 0;
  79. }
  80. //取得游戏主窗口类指针;
  81. pCMainFrame = (CMainFrame*)this;
  82. ::hWnd = this->m_hWnd;
  83. //产生游戏主体框架类对象;
  84. if( pCenterPlayer->m_nPlayerType == 0)
  85. {
  86. pGame = new CSingleGame;
  87. }
  88. else if( pCenterPlayer->m_nPlayerType == 1)
  89. {
  90. pGame = new CServerGame;
  91. }
  92. else if( pCenterPlayer->m_nPlayerType == 2 )
  93. {
  94. pGame = new CClientGame;
  95. }
  96. //初始化游戏类,并产生其他几个类;
  97. pGame->Init();
  98. ::SetTimer(hWnd,0,0,NULL);   //开始游戏;
  99. //用户操作界面线程;
  100. ::CreateThread(NULL,0,pGame->RefreshMenu,0,0,&dwThreadId);
  101. return 0;
  102. }
  103. //定时处理;
  104. void CMainFrame::OnTimer(UINT nIDEvent) 
  105. {
  106. if(nIDEvent == 0)  
  107. {
  108. ::KillTimer(hWnd,0);
  109. pGame->Run();    //开始游戏;
  110. }
  111. else if(nIDEvent == 20)  //
  112. {
  113. pGame->RefreshMyTurn();  //基类 ;
  114. }
  115. CFrameWnd::OnTimer(nIDEvent);
  116. }
  117. void CMainFrame::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
  118. {
  119. if( nChar== VK_ESCAPE )    
  120. PostMessage(WM_CLOSE ); 
  121. CFrameWnd::OnChar(nChar, nRepCnt, nFlags);
  122. }