CDirectDrawGame.h
上传用户:sycq158
上传日期:2008-10-22
资源大小:15361k
文件大小:3k
源码类别:

游戏

开发平台:

Visual C++

  1. ///////////////////////////////////////////////////////////////////////////////
  2. /// File:    CDirectDrawGame.h
  3. /// Purpose: Declaration of CDirectDrawGame Class
  4. ///
  5. ///          This class represents the DirectX components required to construct
  6. ///          a simple DirectX based game.
  7. ///////////////////////////////////////////////////////////////////////////////
  8. /// Configuation Management
  9. /// 
  10. /// Who         When          Description
  11. /// ===========================================================================
  12. /// R. Walter   28-Dec-2003   Initial Version/Release
  13. ///
  14. ///////////////////////////////////////////////////////////////////////////////
  15. /// Copyright 2003: Robert Walter   All rights reserved
  16. ///////////////////////////////////////////////////////////////////////////////
  17. #ifndef CDIRECTDRAWGAME_H_
  18. #define CDIRECTDRAWGAME_H_
  19. /// HEADER DEFINES ////////////////////////////////////////////////////////////
  20. #define WIN32_LEAN_AND_MEAN
  21. /// HEADER FILE INCLUDES //////////////////////////////////////////////////////
  22. #include <windows.h>
  23. #include <windowsx.h>
  24. #include <objbase.h>
  25. #include <string.h>
  26. #include <ddraw.h>
  27. #include <dinput.h>
  28. /// TYPE / CLASS DECLARATIONS /////////////////////////////////////////////////
  29. class CDirectDrawGame
  30. {
  31. protected:
  32.    // DirectDraw member variables
  33.    LPDIRECTDRAW7        m_lpdd7;
  34.    LPDIRECTDRAWSURFACE7 m_lpdds_primary;
  35.    LPDIRECTDRAWSURFACE7 m_lpdds_back;
  36.    // DirectInput member variables
  37.    LPDIRECTINPUT8       m_lpdi8;
  38.    LPDIRECTINPUTDEVICE8 m_di_keyboard;
  39.    UCHAR                m_di_keystate[256];
  40.    // Win32 member variables
  41.    HINSTANCE m_instance;
  42.    HWND      m_main_hwnd;
  43.    HDC       m_hdc;
  44.    
  45.    // DirectDraw screen property variables
  46.    DWORD m_screen_width;
  47.    DWORD m_screen_height;
  48.    DWORD m_screen_bpp;
  49.    // frame rate management variables
  50.    DWORD m_frame_fps;
  51.    DWORD m_wait_ms;
  52.    DWORD m_tick_cnt;
  53.    // 16-bit color management variables
  54.    WORD m_num_red_bits;
  55.    WORD m_num_green_bits;
  56.    WORD m_num_blue_bits;
  57.    WORD m_low_red_bit;
  58.    WORD m_low_green_bit;
  59.    WORD m_low_blue_bit;
  60.    // 16-bit color management functions
  61.    void  CalculateRGBBitShift(DWORD p_bit_mask, WORD* p_low_bit, WORD* p_num_bits);
  62.    DWORD RGBto16BitColor(DWORD p_red, DWORD p_green, DWORD p_blue);
  63.    
  64. public:
  65.    // constructors
  66.    CDirectDrawGame();
  67.    
  68.    // destructors
  69.    virtual ~CDirectDrawGame();
  70.    // DirectX initialization functions
  71.    bool InitializeDirectDraw();
  72.    bool InitializeDirectInput();
  73.    void ShutdownDirectDraw();
  74.    void ShutdownDirectInput();
  75.    // DirectDraw helper functions
  76.    bool StartScene(const DWORD p_color);
  77.    bool DrawRectangle(RECT* p_rectangle, const DWORD p_color);
  78.    bool EndScene();
  79.    // DirectInput helper functions
  80.    bool GetKeyboardState(UCHAR* p_keyboard);
  81.    // GDI helper function
  82.    bool StartGDIDrawing();
  83.    bool DrawGDIText(char* p_text, DWORD p_r, DWORD p_g, DWORD p_b, HFONT p_font, int p_x, int p_y);
  84.    void EndGDIDrawing();
  85.    
  86.    // class helper functions
  87.    void SetApplicationInstance(const HINSTANCE p_instance);
  88.    void SetFrameRate(const DWORD p_frame_fps);
  89.    void SetScreenProperties(const DWORD p_screen_width, const DWORD p_screen_height, const DWORD p_screen_bpp);
  90.    void SetWindowHandle(const HWND p_hwnd);
  91.    // frame rate management functions
  92.    void FrameRateStart();
  93.    void FrameRateEnd();
  94. };
  95. #endif