ウインドウを透明にする

サンプルを実行すると下記の図のようにTFormを透明にしてTButtonだけのウインドウを作成します。




■必要なコンポーネント

■使用するAPI関数

@まず最初にFormのBorderStyleをbsNoneにして下さい。
  
  これでタイトルバーが表示されなくなります。

A下記の図のようにButtonを画面の左上に配置してください。

  *サイズはどうでもいいです。




Bソースは下記のようになります。追加している所は青色です。


■ウインドウを透明にする処理
var
Ret :Integer;  //作成した領域のハンドル

procedure TForm1.FormCreate(Sender: TObject);
begin

 Form1.Width :=Button1.Width;
 Form1.Height :=Button1.Height;


 //ボタンの大きさの領域を作成
 Ret :=CreateRectRgn(10,10,Button1.width,Button1.Height);

 //Formに新しい領域を設定する
 SetWindowRgn(Form1.Handle,Ret,True) ;

end;

procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton; Shift:TShiftState; X, Y: Integer);
begin

//マウス左ボタンが押されているとき
 If ssLeft in Shift then
 begin


  //マウスキャプチャを解放する
  ReleaseCapture;
  //Form1をドラッグせよという命令を送る
  SendMessage(Form1.Handle, WM_NCLBUTTONDOWN, HTCAPTION,0);

 end;

 //マウス右ボタンが押されているとき
 If ssRight in Shift then
 
begin
  //オブジェクトを削除する
  DeleteObject(Ret) ;
  //終了
  Close;
 end;


end;




Win32APIのページへ



ホーム PV ランキング