투명 윈도우 만드는 방법 procedure TForm1.Button1Click(Sender: TObject);
begin
SetWindowLong(handle, GWL_EXSTYLE, GetWindowLong(handle, GWL_EXSTYLE) or WS_EX_LAYERED);
SetLayeredWindowAttributes(handle, 0, Round((255 * 70 ) / 100), LWA_ALPHA);
end;
이를 구현하기 위해서는 첨부되어져 있는 [win2k.pas]를 include하거나 다음을 상단부에 직접 define 한다.
uses
Windows;
// Layered Window 관련
const
{$EXTERNALSYM GWL_EXSTYLE}
GWL_EXSTYLE = -20;
{$EXTERNALSYM WS_EX_LAYERED}
WS_EX_LAYERED = $80000;
{$EXTERNALSYM LWA_COLORKEY}
LWA_COLORKEY = $00001;
{$EXTERNALSYM LWA_ALPHA}
LWA_ALPHA = $00002;
{$EXTERNALSYM ULW_COLORKEY}
ULW_COLORKEY = $00001;
{$EXTERNALSYM ULW_ALPHA}
ULW_ALPHA = $00002;
{$EXTERNALSYM ULW_OPAQUE}
ULW_OPAQUE = $00004;
{$EXTERNALSYM UpdateLayeredWindow}
function UpdateLayeredWindow(hwnd: HWND; hdcDst: HDC; pptDst: PPoint; psize: PSize;
hdcsrc: HDC; pptsrc: PPoint; crKey: COLORREF; pblend: PBlendFunction;
dwFlags: DWORD): BOOL; stdcall;
{$EXTERNALSYM SetLayeredWindowAttributes}
function SetLayeredWindowAttributes(hwnd: HWND; crKey: COLORREF; bAlpha: Byte;
dwFlags: DWORD): BOOL; stdcall;
implementation
{$EXTERNALSYM UpdateLayeredWindow}
function UpdateLayeredWindow; external user32 name 'UpdateLayeredWindow';
{$EXTERNALSYM SetLayeredWindowAttributes}
function SetLayeredWindowAttributes; external user32 name 'SetLayeredWindowAttributes'
Tags: Delphi Transparent Window 윈도우즈 투명윈도우
|