WHSurface.cpp
上传用户:cydong117
上传日期:2009-11-10
资源大小:638k
文件大小:3k
源码类别:

模拟服务器

开发平台:

Visual C++

  1. /******************************************************************************************************************
  2.                                                                                                                    
  3. 葛碘疙:
  4. 累己磊:
  5. 累己老:
  6. [老磊][荐沥磊] : 荐沥 郴侩
  7.                                                                                                                    
  8. *******************************************************************************************************************/
  9. #include "stdafx.h"
  10. #include "WHEngine.h"
  11. /******************************************************************************************************************
  12. 窃荐疙 : CWHSurface::ReleaseSurface()
  13. 累己磊 : 
  14. 累己老 : 
  15. 格利   : 
  16. 免仿   : BOOL 
  17. [老磊][荐沥磊] : 荐沥郴侩
  18. *******************************************************************************************************************/
  19. BOOL CWHSurface::ReleaseSurface()
  20. {
  21. if ( m_pDDS )
  22. {
  23. m_pDDS->Release();
  24. m_pDDS = NULL;
  25. return TRUE;
  26. }
  27. return FALSE;
  28. }
  29. /******************************************************************************************************************
  30. 窃荐疙 : CWHSurface::CreateOffScreenSurface()
  31. 累己磊 : 
  32. 累己老 : 
  33. 格利   : 
  34. 涝仿   : LPDIRECTDRAW7 pDD
  35.          DWORD dwXSize
  36.          DWORD dwYSize
  37. 免仿   : BOOL 
  38. [老磊][荐沥磊] : 荐沥郴侩
  39. *******************************************************************************************************************/
  40. BOOL CWHSurface::CreateOffScreenSurface(LPDIRECTDRAW7 pDD, DWORD dwXSize, DWORD dwYSize) 
  41. {
  42. HRESULT hr;
  43. DDSURFACEDESC2 ddsd;
  44. ZeroMemory(&ddsd, sizeof(DDSURFACEDESC2));
  45. ddsd.dwSize = sizeof(DDSURFACEDESC2);
  46. ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
  47. ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY;
  48. ddsd.dwWidth = dwXSize;
  49. ddsd.dwHeight = dwYSize;
  50. hr = pDD->CreateSurface(&ddsd, &m_pDDS, NULL);
  51. if ( hr != DD_OK ) return FALSE;
  52. return TRUE;
  53. }
  54. /******************************************************************************************************************
  55. 窃荐疙 : CWHSurface::CopyImageToSurface()
  56. 累己磊 : 
  57. 累己老 : 
  58. 格利   : 
  59. 涝仿   : DWORD dwSrcWidth
  60.          DWORD dwSrcHeight
  61.          WORD* pwSrc
  62. 免仿   : BOOL 
  63. [老磊][荐沥磊] : 荐沥郴侩
  64. *******************************************************************************************************************/
  65. BOOL CWHSurface::CopyImageToSurface(DWORD dwSrcWidth, DWORD dwSrcHeight, WORD* pwSrc)
  66. {
  67. DDSURFACEDESC2 ddsd;
  68. WORD* pwdDst = NULL;
  69. ZeroMemory(&ddsd, sizeof(DDSURFACEDESC2));
  70. ddsd.dwSize = sizeof(DDSURFACEDESC2);
  71. if (m_pDDS->Lock(NULL, &ddsd, DDLOCK_WAIT, NULL) == DD_OK)
  72. {
  73. pwdDst = (WORD*)ddsd.lpSurface;
  74. CopyMemory(pwdDst, pwSrc, dwSrcWidth * dwSrcHeight * sizeof(WORD));
  75. m_pDDS->Unlock(NULL);
  76. DDCOLORKEY              ddck;
  77. ddck.dwColorSpaceLowValue =  RGB( 0,  0,  0);
  78. ddck.dwColorSpaceHighValue = RGB(10, 10, 10);
  79. m_pDDS->SetColorKey(DDCKEY_SRCBLT, &ddck);
  80. return TRUE;
  81. }
  82. return FALSE;
  83. }