掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Windows7でフォームを透過させるには? (ID:38467)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
コメントありがとうございます。 LWA_ALPHAではフォームのCanvasに書いたものも含めて全て透明になってしまい今回はうまくいきません。(背景のみ透明にしたいため) 苦肉の策としてフォームのCanvasを全面clRedで塗りつぶしてから(clRed以外で)目的のものをCanvasに書き、SetLayeredWindowAttributesを呼び出す際、crKeyにclRedを、LWA_COLORKEYを指定するという方法で一応の目的は達成できました。 すっきりしませんが、一応目的の動作にはなるので解決としておきます。 (もしもっとスマートな方法があればご教授ください。) なお、Delphi5以前ではSetLayeredWindowAttributesが定義されていないので自分で呼び出します。(後の資料として書いておきます) cconst WS_EX_LAYERED = $80000; LWA_COLORKEY =1; LWA_ALPHA = 2; function SetLayeredWindowAttributes(hwnd: HWND; crKey: COLORREF; bAlpha: BYTE; dwFlags: DWORD): Bool; stdcall; function SetLayeredWindowAttributes; external user32 name 'SetLayeredWindowAttributes'; (これで呼び出す) SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED); SetLayeredWindowAttributes(Handle, clRed, Byte(255), LWA_COLORKEY);
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.