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

DirextX编程

开发平台:

Visual C++

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