ドラゴンクエストクローンを作ろう (746レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
19
(1): 名前は開発中のものです。 [sage] 03/03/03 07:04 ID:pxhSxl9y(1/3) AAS
>>15
DirectDrawでのTCanvasの使い方がなっていない。
WindowsAPIを使うなどとは・・・。
以下のようなクラスを作って

interface
uses
  Windows, Graphics, DirectX;
type
  TDirectDrawCanvas = class(TCanvas)
  protected
    FSurface: IDirectDrawSurface;
    FDeviceContext: HDC;
    FEnabled: Boolean;
    procedure CreateHandle; override;
  public
    constructor Create(ASurface: IDirectDrawSurface);
    destructor Destroy; override;

    procedure Release;
    property Enabled: Boolean read FEnabled;
  end;

implementation
20
(1): 名前は開発中のものです。 [sage] 03/03/03 07:05 ID:pxhSxl9y(2/3) AAS
開業多すぎうざい。連投規制に引っかかるかも知れんので続きは後になるかも
{ TDirectDrawCanvas }
constructor TDirectDrawCanvas.Create(ASurface: IDirectDrawSurface);
begin
  inherited Create;
  FSurface := ASurface;
  FDeviceContext := 0;
  FEnabled := ASurface.IsLost = DD_OK;
end;

destructor TDirectDrawCanvas.Destroy;
begin
  Release;
  inherited;
end;

procedure TDirectDrawCanvas.Release;
begin
 if FDeviceContext <> 0 then begin
    Handle := 0;
    FSurface.ReleaseDC(FDeviceContext);
    FDeviceContext := 0;
  end;
end;
21
(1): 名前は開発中のものです。 [sage] 03/03/03 07:08 ID:pxhSxl9y(3/3) AAS
procedure TDirectDrawCanvas.CreateHandle;
begin
  if FDeviceContext = 0 then begin
    FEnabled := FSurface.GetDC(FDeviceContext) = DD_OK;
    if FEnabled then
      Handle := FDeviceContext
    else begin
      Handle := 0;
      FDeviceContext := 0;
    end;
  end;
end;

使い方は
 Canvas := TCanvas.Create(BackBufferSurface);
しておいて
 with Canvas do
  if Enabled then try
   Pen.Style := psSolid;
   :
  finally
   Release;
  end;
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.022s