ソス@ソスソスUpdateLayeredWindowソスソスgソスソスソスノは?
|
ソスEC/C++
ソスEDelphi
ソスEVisual BasicソスソスソスSソスソス
ソス@(VB2-VB6ソスソス.NETソスソスソスp)
ソスEVisual Basic(VB2-VB6)
ソスEVisual Basic .NET
ソスEVisual C++
ソスEpapy's softwarelibrary
http://hitokuso.kicks-ass.org/progtips.html
ソスソスソスソスソスソスソスUpdateLayeredImageソスソスDelphiソスナ擾ソスソスソスソスソスソスソスソストみまゑソスソスソスソスB
procedure TForm1.UpdateLayeredImage( _hwnd:HWND; hbmp:HBITMAP; x,y:integer);
var
hdcScreen:HDC;
hdcMemory: HDC;
rect: TRect;
_pos: TPoint;
szWindow: SIZE;
bf: BLENDFUNCTION;
ptSrc: TPoint;
ret: LongBool;
begin
hdcScreen := GetDC( 0 );
hdcMemory := CreateCompatibleDC( hdcScreen );
SelectObject( hdcMemory, hbmp );
GetWindowRect( _hwnd, rect);
_pos := Point(rect. Left, rect.Top);
szWindow.cx := x;
szWindow.cy := y;
ptSrc := Point( 0, 0 );
with bf do begin
BlendOp := AC_SRC_OVER;
BlendFlags := 0;
AlphaFormat := AC_SRC_ALPHA;
SourceConstantAlpha := 255;//$FF;
end;
ret := UpdateLayeredWindow( _hwnd, hdcScreen, @_pos,
@szWindow, hdcMemory,
@ptSrc, 0, bf, ULW_ALPHA );
ShowMessage(SysErrorMessage(GetLastError));
DeleteDC( hdcMemory );
ReleaseDC( 0, hdcScreen );
end;
ソスソスソスソスソスソス
UpdateLayeredWindowソスナエソスソスソス[ソスuソスpソスソスソスソスソス[ソス^ソスソスソスヤ茨ソスソスソストゑソスソスワゑソスソスv
http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200308_03080019.html
ソスソスソスソスソスソスフ包ソスソスニ難ソスソスソスソスヌ擾ソスナゑソスソスB
ソスEソスレ植ソスノ趣ソスソスsソスソスソストゑソスソスソスフゑソスソスiソスソスフソソス[ソスXソスソスソスソスソスソスソスソスソスヤ違えソストゑソスソスソスフゑソスソスjソスA
ソスEソスeソスXソスgソスノ使ソスソスソストゑソスソスソスBMPソスtソス@ソスCソスソスソスソスソスソスソスソスソスソスソスソスソスフゑソスソスソスソスソスソスソスワゑソスソスソスB
ソスワゑソスソスソスソスソスノとゑソスネゑソスソスト難ソスソスyソス[ソスWソスソスCreateRGBBitmapソスノゑソスソスソスしソストみゑソスソスフでゑソスソスソス
HBITMAP hbmp = CreateDIBSection( dc, (BITMAPINFO*)&bh, DIB_RGB_COLORS, (void**)&bitptr, NULL, 0 );
ソスEソスソスソスフ茨ソスsソスソスヌゑソスソスソスソスソスソスソスソスソスソスソスホ良ゑソスソスフゑソスソスソスソスソスソスソスソスネゑソスソスソスソスソスナゑソスソスB
ソスネ上長ソスソスソスネゑソスワゑソスソスソスソスソスソスソスしソスソスソスソスソス閧「ソスソスソスワゑソスソスB
ソスネ前ソスソスミ介しソスワゑソスソスソスソスソスソスA
http://forum.nifty.com/fdelphi/samples/01218.html
ソスソスQソスlソスノゑソスソストみてゑソスソスソスソスソスソスソス
ソスQソスlソスノゑソスソスソスソストゑソスソスソスソスソスソスソスソスワゑソスソスソスソスソスソスソスソスソスソスソス
ShowMessage(SysErrorMessage(GetLastError));
ソスフとゑソスソスソスナエソスソスソス[ソスノなゑソスワゑソスソスB
ソス鞫懶ソスフ一部ソスソスソス半難ソスソスソスソスソスソスソスソスソスノは?
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200504/05040077.txt
ソスソスソスソスソスgソスjソスソスソスソスソスソスソス
>32bit BitmapソスソスR,G,B,Alphaソスフ配ソスソスナデソス[ソス^ソスソスソスiソス[ソスソスソスソス驍セソスソスソスナゑソスソスB
>ScanLineソスソスBitmapソスfソス[ソス^ソスノアソスNソスZソスXソスソスソストゑソスソスソスソスソスソスソスソスB
ソスソスソスqソスソスソスgソスネのでゑソスソス蛯、ソスソスソスソスソスソスソスxソスoソスソスソスソスソストゑソスソスワゑソスソスB
ソスソスソス閧ェソスニゑソスソスソスソスソスソスソスソスワゑソスソスソスソスB
Delphi7ソスネ降ソスソスソスソスソスソスソスソスソスニ思ソスソスソスワゑソスソスソスソスA
TFormソスソスAlphaBlendソスソスTrueソスノゑソスソスソスソス痰「ソスソスソスワゑソスソスソスソスB
SetLayeredWindowAttributesソスニ衝突ゑソスソスソスニ趣ソスソスsソスソスソス驍ゥソスソスナゑソスソスヒ。
ソスネゑソスソスネゑソスソスソスしソストゑソスソスワゑソスソスB
ソスUソスフ知ソスソス -malfunctional intellect- - ソスルゑソスソスソス
http://d.hatena.ne.jp/tsx/20031210
ソスソスソスソスソスソスナゑソスDelphiソスソスソスフゑソスWS_EX_LAYEREDソスソスソスノ設定しソストゑソスソスソスソス
ソスソスソスソスフでゑソスソスソスソスAソスヌゑソスソスネゑソスナゑソスソス蛯、ソスソスソスB
ソスソスソスロにテソスXソスgソスソスソストみまゑソスソスソスソスB
Delphi7ソスナは難ソスソスソスmソスFソスナゑソスソスワゑソスソスソスソスB
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, LWindow;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private ソス骭セ }
BMP32:TBitmap;
public
{ Public ソス骭セ }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
MakeLayer(Handle, BMP32);
end;
procedure TForm1.FormCreate(Sender: TObject);
var x,y:integer;
P:PByteArray;
begin
BMP32:=TBitmap.Create;
BMP32.PixelFormat:=pf32bit;
BMP32.Height:=ClientHeight;
BMP32.Width :=ClientWidth;
for Y:=0 to BMP32.Height-1 do
begin
P :=BMP32.ScanLine[y];
for X:=0 to BMP32.Width-1 do
begin
p[x*4+0 ]:= 150 ;
p[x*4+1 ]:= 150 ;
p[x*4+2 ]:= 150 ;
p[x*4+3 ]:= 150 ;
end;
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
BMP32.Free;
end;
end.
//LWindow.pas
unit LWindow;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
function MakeLayer(wHandle:HWND; LayerBmp:TBitmap):boolean;
function MakeLayer2(wHandle:HWND; LayerBmp:TBitmap):boolean;
function UpdateLayeredWindow(_hwnd:HWND; dstHDC:HDC; pptDst:PPoint;
ASize:PSize; srcHDC:HDC; pptSrc:PPoint; crKey:COLORREF;
var bf : BLENDFUNCTION; dwFlag:DWORD):BOOL; stdcall;
const
WS_EX_LAYERED = $80000;
LWA_COLORKEY = 1;
LWA_ALPHA = 2;
ULW_COLORKEY = 1;
ULW_ALPHA = 2;
ULW_OPAQUE = 4;
AC_SRC_ALPHA = 1;
function UpdateLayeredWindow;
external 'user32.dll' name 'UpdateLayeredWindow';
implementation
function MakeLayer(wHandle:HWND; LayerBmp:TBitmap):boolean;
var
bf : TBlendFunction;
zerop : TPoint;
formsz : TSize;
begin
result:=false;
with bf do begin
BlendOp:=AC_SRC_OVER;
BlendFlags:=0;
SourceConstantAlpha:=255; // ソスソスソスSソスソスALPHAソスソスBITMAPソスノ依托ソスソスソスソスソス鼾
AlphaFormat:=AC_SRC_ALPHA;
end;
SetWindowLong(wHandle, GWL_EXSTYLE, GetWindowLong(wHandle, GWL_EXSTYLE) or
WS_EX_LAYERED);
zerop.x:=0; zerop.y:=0;
formsz.cx:=LayerBmp.Width; formsz.cy:=LayerBmp.Height;
if not UpdateLayeredWindow(
wHandle, 0,
nil, // palleteソスソスCソスノゑソスソスネゑソスソスネゑソスnilソスナゑソスし
@formsz, // ソスtソスHソス[ソスソスソスフ大きソスソスソスフ指ソスソス : ソスKソス{ソスI
LayerBmp.canvas.handle, // ソスTソス[ソスtソスFソスCソスXソスソスソス`ソスソスソスソスDC
@zerop, // ソスTソス[ソスtソスFソスCソスXソスソスソス`ソスソスソスソス鞫懶ソスフ開ソスnソス_
0, bf, ULW_ALPHA) then begin
ShowMessage(SysErrorMessage(GetLastError));
Exit;
end;
result:=true;
end;
function MakeLayer2(wHandle:HWND; LayerBmp:TBitmap):boolean;
var
bf : TBlendFunction;
zerop : TPoint;
formsz : TSize;
begin
result:=false;
with bf do begin
BlendOp:=AC_SRC_OVER;
BlendFlags:=0;
SourceConstantAlpha:=255; // ソスソスソスSソスソスALPHAソスソスBITMAPソスノ依托ソスソスソスソスソス鼾
AlphaFormat:=AC_SRC_ALPHA;
end;
//SetWindowLong(wHandle, GWL_EXSTYLE, GetWindowLong(wHandle, GWL_EXSTYLE) or
// WS_EX_LAYERED);
zerop.x:=0; zerop.y:=0;
formsz.cx:=LayerBmp.Width; formsz.cy:=LayerBmp.Height;
if not UpdateLayeredWindow(
wHandle, 0,
nil, // palleteソスソスCソスノゑソスソスネゑソスソスネゑソスnilソスナゑソスし
@formsz, // ソスtソスHソス[ソスソスソスフ大きソスソスソスフ指ソスソス : ソスKソス{ソスI
LayerBmp.canvas.handle, // ソスTソス[ソスtソスFソスCソスXソスソスソス`ソスソスソスソスDC
@zerop, // ソスTソス[ソスtソスFソスCソスXソスソスソス`ソスソスソスソス鞫懶ソスフ開ソスnソス_
0, bf, ULW_ALPHA) then begin
ShowMessage(SysErrorMessage(GetLastError));
Exit;
end;
result:=true;
end;
end.
ソスソスソスFソスRソスsソスyソスナゑソスソスB
ソスざソスざソス¥ソス[ソスXソスソスソスソス閧ェソスニゑソスソスソスソスソスソスソスソスワゑソスソスB
ソスト鯉ソスソスナゑソスソスワゑソスソスソスソスBソスソスヘゑソスBitmapソスフ搾ソス閧ェソスソスソスソスソスソスソスソスソスソスソスソスソス謔、ソスナゑソスソスB
ソスソスソスソスソスソスソスソスフグソスソスソスtソスBソスbソスNソスフ本ソスソスソスソスソスソスヌゑソスナみゑソスソスフでゑソスソスソスソスA
ソスネゑソスソスネゑソスソスしソスソスソスト趣ソスソスソスソスヘまゑソスソスワゑソスソスソスソスニ思ソスソスソスmソス轤ウソスソスワゑソスソスソスソスB
ソスソスソスニ、MakeLayerソスソスMakeLayer2ソスソスWS_EX_LAYEREDソスフ搾ソスソスノゑソスソスソスモでゑソスソスヒ。
ソスヨ托ソスソスナゑソスソスソス
ARGAS.NET
http://www.argas.net/archive/1/2004-11-08
ソスソスMikiソスニゑソスソスソスUpdateLayeredWindowソスソスpソスソスソスソスMediaPlayerソスソスソスソスソスソスワゑソスソスB
ソスト度ソスソスソスソス¥ソスソスソス繧ーソスワゑソスソスBソスソスソス閧ェソスニゑソスソスソスソスソスソスソスソスワゑソスソスソスソスB