お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"Client領域のない Form ?"







■説明
 だから何なのと言われそうですが、 Client 領域の無い Form を表示
させるサンプルです。  ((((^^;;;;;

■注意点
 ひょっとすると、トンでもないことをやってしまっているかも知れま
せんので十分ご注意下さい。((^^;)

 拙いところがありましたらご指摘下さい。> ALL。m(_"_)m

■参考
 FDELPHI/MES/16/457 からのツリー。m(_"_)m

■サンプルコード
//=====================================================================
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics,
  Controls, Forms, Dialogs;

type
  TForm1 = class(TForm)
    procedure FormDestroy(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private 宣言 }
    procedure MakeWinRGN;//←※追加して下さい
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

var
  WinRect,   ClntRect  : TRect;
  WindowRGN, ClientRGN : HRGN;
//-- WindowRegion 作成 ------------------------------------------------
procedure TForm1.MakeWinRGN;
begin
  if WindowRGN <> 0 then
    begin
      SetWindowRgn( Handle, 0, False );
      DeleteObject( WindowRGN );
    end;
  with WinRect do begin
    TopLeft     := Point( 0, 0 );
    BottomRight := Point( Width, Height );
  end;
  ClntRect := ClientRect;
  OffSetRect( ClntRect, ClientOrigin.x - Left, ClientOrigin.y - Top );
 (* ウインドウ全体のリージョンを作成 *)
  WindowRGN := CreateRectRgnIndirect( WinRect );
 (* クライアント領域のリージョンを作成 *)
  ClientRGN := CreateRectRgnIndirect( ClntRect );
 (* クライアント領域を除いた部分のリージョンを作成 *)
  CombineRgn( WindowRGN, WindowRGN, ClientRGN, RGN_DIFF );
  DeleteObject( ClientRGN );                 //~~~~~~~~API Help 参照
 (* ウインドウのリージョンを設定する *)
  SetWindowRgn( Handle, WindowRGN, TRUE );
end;
//-- OnCreate ---------------------------------------------------------
procedure TForm1.FormCreate(Sender: TObject);
begin
  WindowRGN := 0;
  MakeWinRGN;
end;
//-- OnDestroy --------------------------------------------------------
procedure TForm1.FormDestroy(Sender: TObject);
begin
  if WindowRGN <> 0 then DeleteObject( WindowRGN );
end;
//-- OnResize ---------------------------------------------------------
procedure TForm1.FormResize(Sender: TObject);
begin
  MakeWinRGN;
end;

end.
//=====================================================================

                                     98/03/21(土) 15:32 Fermion(KHF03264)

Original document by Fermion         氏 ID:(KHF03264)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum