BltTest.cpp
上传用户:wymy58
上传日期:2007-01-07
资源大小:2086k
文件大小:4k
源码类别:

DirextX编程

开发平台:

Visual C++

  1. // BltTest.cpp : Defines the class behaviors for the application.
  2. #include "stdafx.h"
  3. #include "BltTest.h"
  4. #ifdef _DEBUG
  5. #define new DEBUG_NEW
  6. #undef THIS_FILE
  7. static char THIS_FILE[] = __FILE__;
  8. #endif
  9. const bool g_bFullScreen
  10. #ifdef _DEBUG
  11. = false; // true;
  12. #else
  13. = true; // false;
  14. #endif // _DEBUG
  15. const DWORD g_dwWidth = 640; // 800; // 1024;
  16. const DWORD g_dwHeight = 480; // 600; // 768;
  17. const DWORD g_dwBPP = 8; // 16; // 24; // 32;
  18. CBltTestApp::CBltTestApp(void)
  19. {
  20. SetFullScreen(g_bFullScreen);
  21. SetPackFileName(_T("."), _T("gui"));
  22. // Called during initial app startup, this function
  23. // performs all the permanent initialization.
  24. m_pDDDevice = NULL;
  25. m_pRenderSurface = NULL;
  26. // add your permanent init code here !
  27. m_pDIBSurface = NULL;
  28. }
  29. // Called before the app exits, this function gives the app
  30. // the chance to cleanup after itself.
  31. CBltTestApp::~CBltTestApp()
  32. {
  33. // add your cleaup code here !
  34. }
  35. bool CBltTestApp::GetDXInitSettings(void)
  36. {
  37. if (m_pDirectSound != NULL)
  38. {
  39. if (m_pDirectSound->SelectDSDriver(0) == false)
  40. return  false;
  41. }
  42. if (m_pDirectMusic != NULL)
  43. {
  44. if (m_pDirectMusic->SelectDefaultDMusPort() == false)
  45. return  false;
  46. }
  47. if (m_pDirectDraw->SelectDDDevice(0) == false)
  48. return  false;
  49. if (GetFirstDDDevice()->SelectDisplayMode(
  50. IsFullScreen(), g_dwWidth, g_dwHeight, g_dwBPP) == false)
  51. return  false;
  52. return  true;
  53. }
  54. // Called during device intialization, this code checks the device
  55. // for some minimum set of capabilities, Initialize scene objects.
  56. bool CBltTestApp::InitDXObjects(void)
  57. {
  58. m_pDDDevice = GetFirstDDDevice();
  59. m_pRenderSurface = m_pDDDevice->GetRenderSurface();
  60. // add your init code here !
  61. m_nDeltaX = m_nDeltaY = 2;
  62. m_pDIBSurface = new  CDDDIBSurface;
  63. if (m_pDIBSurface->Create(m_pDDDevice, _T("Stone.bmp"),
  64. m_pPackFileManager) == false)
  65. return  false;
  66. m_rcSrc.left = m_rcSrc.top = 0;
  67. m_rcSrc.right = m_pDIBSurface->GetWidth();
  68. m_rcSrc.bottom = m_pDIBSurface->GetHeight();
  69. m_rcDest.left = m_rcDest.top = 0;
  70. m_rcDest.right = m_pDIBSurface->GetWidth();
  71. m_rcDest.bottom = m_pDIBSurface->GetHeight();
  72. return  true;
  73. }
  74. // Called when the app is exitting, or the device is being changed,
  75. // this function deletes any device dependant objects.
  76. bool CBltTestApp::DestroyDXObjects(void)
  77. {
  78. // add your destroy code here !
  79. if (m_pDIBSurface != NULL)
  80. {
  81. delete  m_pDIBSurface;
  82. m_pDIBSurface = NULL;
  83. }
  84. m_pRenderSurface = NULL;
  85. m_pDDDevice = NULL;
  86. return  CDirectXApp::DestroyDXObjects();
  87. }
  88. // Called once per frame, the call is the entry point for
  89. // animating the scene. This function sets up render states,
  90. // clears the viewport, and renders the scene.
  91. bool CBltTestApp::UpdateFrame(void)
  92. {
  93. // add your code here !
  94. // m_pRenderSurface->Fill(0);
  95. m_rcDest.right += m_nDeltaX;
  96. if ((m_rcDest.right > int(m_pDDDevice->GetWidth()))
  97. || (m_rcDest.right < 1))
  98. {
  99. m_rcDest.right -= m_nDeltaX;
  100. m_nDeltaX = - m_nDeltaX;
  101. }
  102. m_rcDest.bottom += m_nDeltaY;
  103. if ((m_rcDest.bottom > int(m_pDDDevice->GetHeight()))
  104. || (m_rcDest.bottom < 1))
  105. {
  106. m_rcDest.bottom -= m_nDeltaY;
  107. m_nDeltaY = - m_nDeltaY;
  108. }
  109. m_pRenderSurface->Blt(&m_rcDest,
  110. m_pDIBSurface, &m_rcSrc, DDBLT_WAIT, NULL);
  111. return  CDirectXApp::UpdateFrame();
  112. }
  113. // ---- add your functions ! ----
  114. // ----
  115. #if _MSC_VER >= 1200 && _MSC_VER < 1400
  116. #ifdef _DEBUG
  117. #pragma comment(lib, "DXGuideD_VC6.lib")
  118. #else
  119. #pragma comment(lib, "DXGuide_VC6.lib")
  120. #endif // _DEBUG
  121. #endif // _MSC_VER
  122. #if _MSC_VER >= 1000 && _MSC_VER < 1200
  123. #ifdef _DEBUG
  124. #pragma comment(lib, "DXGuideD_VC5.lib")
  125. #else
  126. #pragma comment(lib, "DXGuide_VC5.lib")
  127. #endif // _DEBUG
  128. #endif // _MSC_VER
  129. BEGIN_MESSAGE_MAP(CBltTestApp, CDirectXApp)
  130. //{{AFX_MSG_MAP(CBltTestApp)
  131. //}}AFX_MSG_MAP
  132. END_MESSAGE_MAP()
  133. CBltTestApp theApp;