⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 victorddraw8.cpp

📁 一个小游戏程序!! 大家可以来
💻 CPP
字号:
//---------------------------------------------------------------------------
#include "VictorDDraw8.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
static inline void ValidCtrCheck(TVictorDDraw8 *)
{
    new TVictorDDraw8(NULL);
}
//---------------------------------------------------------------------------
namespace Victorddraw8
{
    void __fastcall PACKAGE Register()
    {
         TComponentClass classes[1] = {__classid(TVictorDDraw8)};
         RegisterComponents("Victor", classes, 0);
    }
}
//---------------------------------------------------------------------------
__fastcall TVictorDDraw8::TVictorDDraw8(TComponent* Owner)
    : TCustomDDraw8(Owner)
{
}
//---------------------------------------------------------------------------
/////////////////////////////////////////////////////////////////////////////
//---------------------------------------------------------------------------
__fastcall TCustomDDraw8::TCustomDDraw8(TComponent* AOwner)
                     :TComponent(AOwner)
{
  _Display       = NULL;
  _bWindowedMode = false;

  _ScrWidth  = 640;
  _ScrHeight = 480;
  _ScrBpp    =  16;

  lpfnDispFrame = NULL;
  lpfnRestFrame = NULL;

  _Form = dynamic_cast<TForm*>(AOwner);
}
//---------------------------------------------------------------------------

__fastcall TCustomDDraw8::~TCustomDDraw8()
{
  fUninitDDraw();
}
//---------------------------------------------------------------------------

void __fastcall TCustomDDraw8::fInitDDraw(void)
{
  fUninitDDraw();

  if((!_Display)&&(_Form))
   {
     _Display = new TDDrawDisplay(_Form->Handle);

     if(_bWindowedMode)
      {
        if(FAILED(_Display->CreateWindowedDisplay()))
          throw Exception("Error: Display->CreateWindowedDisplay");
      }
     else
      {
        if(FAILED(_Display->CreateFullScreenDisplay(ScreenWidth, ScreenHeight, ScreenBpp)))
          throw Exception("Error: Display->CreateFullScreenDisplay");
      }
   }
}
//---------------------------------------------------------------------------

void __fastcall TCustomDDraw8::fUninitDDraw(void)
{
  if(_Display)
   {
     delete _Display;
     _Display = NULL;
   }
}
//---------------------------------------------------------------------------

void __fastcall TCustomDDraw8::RefreshDisplay(void)
{
  if(_Display)
   {
     EvDisplayFrame(); //user's display

     HRESULT hr = _Display->Present(); //flip
     if(FAILED(hr))
      {
        if(hr == DDERR_SURFACELOST)
         {
           if(SUCCEEDED(_Display->DirectDraw->RestoreAllSurfaces()))
             EvRestoreSurfaces();
         }
        else
         {
           //throw Exception("DirectDraw error: display frames.");
         }
      }
   }
}
//---------------------------------------------------------------------------

void __fastcall TCustomDDraw8::EvDisplayFrame(void)
{
  if(lpfnDispFrame)
    lpfnDispFrame(this);
  else
    Display->Clear();
}
//---------------------------------------------------------------------------

void __fastcall TCustomDDraw8::EvRestoreSurfaces(void)
{
  if(lpfnRestFrame)
    lpfnRestFrame(this);
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -