📄 victorddraw8.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 + -