如何把一个窗体做成透明窗体?谢谢!在线等!
解决方案 »
- 如何保存数据,前一条数据不被覆盖(即所有数据都存在)
- 控制clientdataset 中的记录根据条件判断是否可修改
- 请问如果将一个查询出来的表存另存在一个xls里面
- 为何TADOQuery的ExecuteOptions属性设为[eoAsyncFetch]时用open方法打开的记录集会少了第一条?
- 如何判断Query处于删除状态?
- 关于AdoDataset和DBGrid编程?
- 在win2000下,怎么让程序不出现在程序列表中啊?
- JT(JohnTam),请进来接分
- 数据库输入问题!求救
- 如何使用QReport 控件控制预览/打印 页的范围?
- 我是初学者,我有一个关于DCOM的很菜的问题。(在线等待)
- PageControl的问题
Form1.borderstyle:=bsnone;
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;type
TLoves = class(TForm)
Image1: TImage;
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure CreateParams(Var Params:TCreateParams);override;
function CreateRegion(wMask: TBitmap; wColor: TColor;hControl: THandle): HRGN;
public
{ Public declarations }
end;var
Loves: TLoves;implementation
{$R *.DFM}procedure TLoves.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(Handle, WM_SYSCOMMAND, $F012, 0);
end;
procedure tloves.CreateParams(var Params:TCreateParams);
begin
inherited;
With Params do
begin
wndParent:=GetDesktopwindow;
ExStyle:=ExStyle or WS_EX_TOPMOST;
end;
end;
procedure TLoves.FormCreate(Sender: TObject);
var
w1:TBitmap;
w2:TColor;
rgn: HRGN;
begin
ShowWindow(Application.handle,sw_hide);
SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
w1:=TBitmap.Create;
w1.Assign(image1.Picture.Bitmap);
w2:=w1.Canvas.Pixels[0,0];
rgn := CreateRegion(w1,w2,Handle);
if rgn<>0 then
begin
SetWindowRgn(Handle, rgn, true);
end;
w1.Free;
end;
function TLoves.CreateRegion(wMask: TBitmap; wColor: TColor;
hControl: THandle): HRGN;
var
dc, dc_c: HDC;
rgn: HRGN;
x, y: integer;
coord: TPoint;
line: boolean;
color: TColor;
begin
dc := GetWindowDC(hControl);
dc_c := CreateCompatibleDC(dc);
SelectObject(dc_c, wMask.Handle);
BeginPath(dc);
for x:=0 to wMask.Width-1 do
begin
line := false;
for y:=0 to wMask.Height-1 do
begin
color := GetPixel(dc_c, x, y);
if not (color = wColor) then
begin
if not line then
begin
line := true;
coord.x := x;
coord.y := y;
end;
end;
if (color = wColor) or (y=wMask.Height-1) then
begin
if line then
begin
line := false;
MoveToEx(dc, coord.x, coord.y, nil);
LineTo(dc, coord.x, y);
LineTo(dc, coord.x + 1, y);
LineTo(dc, coord.x + 1, coord.y);
CloseFigure(dc);
end;
end;
end;
end;
EndPath(dc);
rgn := PathToRegion(dc);
ReleaseDC(hControl, dc);
Result := rgn;
end;end.
//////////
procedure TFGateControl.FormShow(Sender: TObject);
begin
// 设置透明窗体
SetWindowLong(self.Handle, GWL_EXSTYLE, GetWindowLong(self.Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
SetLayeredWindowAttributes(handle, 0, 180, lwa_alpha);end;