我写的一个不规则,呵呵,纯自己瞎琢磨的。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, GIFImage,shellapi, Menus;
const
ICON_ID = 1;
lovecursor = 5 ;
MI_ICONEVENT = WM_USER + 1;
type
TForm1 = class(TForm)
Image1: TImage;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure installIcon;
procedure uninstallIcon;
procedure IconOnClick(var message:Tmessage); message MI_ICONEVENT;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
procedure wmnchittest(var msg:twmnchittest);message wm_nchittest;
public
{ Public declarations }
end;
var
Form1: TForm1;
BackColor:TColor;
implementation
{$R *.DFM}
{$R Icon.res}
procedure TForm1.FormCreate(Sender: TObject);
begin
BackColor:=Image1.Canvas.Pixels[2,2];
SetWindowLong(Application.Handle,GWL_ExStyle,WS_EX_Toolwindow);
screen.Cursors[lovecursor]:=loadcursor(hInstance,'newcursor');
cursor:=lovecursor;
installIcon;
end;
procedure TForm1.FormShow(Sender: TObject);
var
MyRgn, ClientRgn, ButtonRgn,bmpRgn: THandle;
Margin, X, Y: Integer;
p : Tpoint;
begin
Margin := (Width - ClientWidth) div 2;
MyRgn := CreateRectRgn(0, 0, Width, Height);
X := Margin;
Y := Height - ClientHeight - Margin;
ClientRgn := CreateRectRgn(X, Y, X + ClientWidth, Y + ClientHeight);
CombineRgn(MyRgn, MyRgn, ClientRgn, RGN_XOR);
//X := X + Button1.Left;
// Y := Y + Button1.Top;
// ButtonRgn := CreateRectRgn(X, Y, X + Button1.Width, Y + Button1.Height);
//-----------!!-----------
//Insert your additional controls here!
// CombineRgn(MyRgn, MyRgn, ButtonRgn, RGN_XOR);
//Image1.Picture.LoadFromFile('c:/ts1.bmp');
for x:=0 to Image1.width-1 do
for y:=0 to Image1.height-1 do
begin
if Image1.Canvas.Pixels[x,y]<> BackColor then
begin
bmpRgn:= CreateRectRgn(x,y,x+1,y+1);
CombineRgn(MyRgn,MyRgn,bmpRgn,RGN_XOR);
end;
end;
SetWindowRgn(Handle, MyRgn, True);
end;
procedure TForm1.installIcon;
var
IconData:TNotifyIconData;
Icon:TIcon;
begin
Icon:=TIcon.Create;
Icon.Handle:=loadIcon(hInstance,'I1');
IconData.cbSize := SizeOf( IconData );
IconData.Wnd := Handle;
IconData.uID := ICON_ID;
IconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
IconData.uCallBackMessage := MI_ICONEVENT;
IconData.hIcon:=Icon.handle;
IconData.szTip := 'transparentformexercise';
Shell_NotifyIcon(NIM_ADD,@IconData);
end;
procedure TForm1.uninstallIcon;
var
IconData:TNotifyIconData;
begin
IconData.cbSize:=sizeof(IconData);
IconData.uID:=Icon_ID;
IconData.Wnd:=Handle;
Shell_NotifyIcon(NIM_Delete,@IconData);
end;
procedure TForm1.IconOnClick(var message: Tmessage);
var
pos:TPoint;
begin
if message.LParam = WM_RBUTTONDOWN then
begin
Close;
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
uninstallIcon;
end;
procedure TForm1.wmnchittest(var msg: twmnchittest);
begin
inherited;
if (htclient=msg.result) then msg.result:=htcaption;
end;
end.
object Form1: TForm1
Left = 272
Top = 228
AutoSize = True
BorderStyle = bsNone
Caption = 'Form1'
ClientHeight = 76
ClientWidth = 100
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
FormStyle = fsStayOnTop
OldCreateOrder = False
OnClose = FormClose
OnCreate = FormCreate
OnShow = FormShow
PixelsPerInch = 96
TextHeight = 13
object Image1: TImage
Left = 0
Top = 0
Width = 53
Height = 76
AutoSize = True
Picture.Data = {
07544269746D6170D6140000424DD61400000000000036040000280000003500
00004C0000000100080000000000A01000000000000000000000000100000000
00000404040000306400D04400003000DC0010649800FF78300074747400F8A0
04007C7C7C002C64FF00949494005888CC002098CC009C9C9C00B8B8B80090B0
E400C0C0C000C8C8C80054CCFF00D0D0D000BCDCF800E8E8E800F0F0F000F4F4
F400F8F8F800FFFFFF00888888008C8C8C00C4C4C400ECECEC00000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000191919191919191919191919191901010101010119191919191919191919
1919191919191919191919191919191919191919191919000000191919191919
19191919191919010404040404010101011919191919191919191B1B1B1B1B19
1919191919191919191919191919190000001919191919191919191919190104
040C0C040404040101010119191919191B1B11171710111B1B19191919191919
1919191919191900000019191919191919191919191901040C15120C04040408
08081B1B1B19191B1110171717171010111B1919190101010101191919191900
00001919191919191919191919191901040C0C0C0C08081010101010111B1B11
101717171717101010111B0101040C0C04040119191919000000191919191919
1919191919191919010104040810171717171717101008101017171717171710
10100804040C15120C0404011919190000001919191919191919191919191919
1919010810171717171717171717100810171717171717101010080804040C0C
04040401191919000000191919191919191919191919191919191B1017171717
1717171717171710081717171717171010100810080404040404011919191900
0000191919191919191919191919191919191B10171717171717171717171717
1010171717171710100810101008080401011919191919000000191919191919
191919191919191919191B101717171717171717171717171710171717171710
10081010101010081B1919191919190000001919191919191919191919191919
191B110817171717171717171717171717171017171717101008101010101010
1B19191919191900000019191919191919191919191919191B17100810171717
1717171717171717171717171717171008101010101010111B19191919191900
000019191919191919191919191919191B081710101717171717171717171717
1717171717171710081010081010101B19191919191919000000191919191919
191919191919191B110817171017171717171717171717171717171717171710
101008100810101B191919191919190000001901011919191919191919191B17
081008171710171717171717171717171717171717171710101008101008111B
191919191919190000000104040101011919191919191B170810081017171717
171717171717171710171717171717081010081008101B191919191919191900
0000190101040404010101191919010101011008171717171717171717171717
17101017171710081008101008101B1919191919191919000000191919010101
0404040101010B010B0101081017171717171717171717171717081010171008
100810080810111B191919191919190000001919191919190101010404010F0B
0F010B010817171717171717171717171717170810100810100817080808101B
191919191919190000001919191919191919190101011414140B0F0101061717
170101011515151515150E1708100810081017080808101B191A191919191900
00001919191919191A19191919010F1414141401041506060103030301080808
0808080E0E080810081710080808101B1A1C1A1919191900000019191919191A
1D1A1919191B01010F140F01010E1501030301030301171710081008080E0808
101710080808100806151A1919191900000019191919191A151C1A19191B1710
0101011010080E01030903010301171717100817100806081717080808081008
06151A1919191900000019191919191A1C151A19191B17171717171010080801
0915090303011717171708171710080817170808010101080E151A1919191900
00001919191919191A151D1A191B171717171717100810170109030301171717
1717101717171008101701010B0F0B010E151A19191A1900000019191A191919
1A15151D1A1B1017171717170808101717010101171717171717171717171010
08010B010101140B01151A191A1C1A000000191A1D1A19191A1C151515060817
17171710080810171717171717171717171717041717101008010F010F14140F
01151A191A151A000000191A1C1D1A19191A1515151508101717170810081010
1717171717171717171717041717101008010F010101140F01151A191A151A00
000019191A151D1A191A1C151515080810171008101004101008080808080810
1717170404101008101701010F140F0115151A191A151A00000019191A1C151C
1A191A1515150810171710171004040808101010101010080810170404101008
101717100101011515151A1A1C151A0000001919191A15151A191A1C15150E08
10171717040408101017171717101010100808040C0408101010171717100815
1515060615151A0000001919191A1C151D1A191A15151508081017040C041017
1717171717171710101010040C041010171010080808041515150606151C1A00
0000191919191A15151D1A1A0E151508101717040C0417010101010101010101
101010040C04101010171710080C0415150E060E151A19000000191919191A1C
151515060615150E0817040C040101040B0F0F0F0F0B0B040101100412041010
101008080C0C0415150E0615151A1900000019191919191A1D151515060E1515
08100412010B0F14141414140F0F0F0F0B04010412041010101008120C0C0415
150606150E1A190000001919191919191A15151515061515150804010B141414
0F0B141414140F0F0F0B04041204101010080C120C0C041515060E151C1A1900
00001919191919191A1C1515151506151515010B14141414141414140202150B
0B0F0B041204010808040C120C0C04150E0615151A1919000000191919191919
191A15151515150E1515010F1414141414141402070502150B0B0B0412041401
01040C120C0C0415061515151A19190000001919191919191A1A1A1C15151515
1515011414021514141414020005020E0B0B0B0412040F140B010C0C0C0C040E
1515151C1A19190000001919191919191919191A151515151515040F02071514
14140F001502020000040B0412040B0B140F010C040C04151515151A19191900
000019191919191919191A1A1A1C15151504040F02000E0F140F0F000000000B
04040B041204041414141401040C041515151C1A1A1919000000191919191919
19191919191A1C150404040F0015000B0F040B0B00000B0404040B040C040401
0B0F141401040415150E1A191919190000001919191919191919191919191A04
040C040B0B000B010B0B010404040B04040B0B040C040C040101010104040415
1C1A1A1A191919000000191919191919191919191919040C041204010B0B040B
0B040C0401010412040B04040C040C040C040C0C04041C1A1A19191919191900
000019191919191919191904191904120412040B0104040B0B0412040B0B0412
04040C04040C0C040C040C0C04041A1919191919191919000000191919191919
1919190419040C1204140C04040C040B040C12040B040C1204041204040C0C04
0C0C0C0404041919191919191919190000001919191919191919040C04041212
04150C040414040B041214040B041212040412040C0C0C040C0C0C0404041919
191919191919190000001919191919191919041204041214040C140404150C04
041215040B041412040C1204140C040C120C0C040C0419191919191919191900
0000191919191919191904120C040C140C04120C04140C0404121504040C150C
04140C12140C040C120C0C040C04191919191919191919000000191919191919
191904121204041514040C12040C120C04121404041415040C150C15120C040C
120C0C0C0C041919191919191919190000001919191919191919040C1412040C
1212040C1204120C0C12120412151404141412150C040C12120C120C0C041919
1919191919191900000019191919191919191904151412041212120C0C120C0C
0C12120C12141204141214120C041212120C120C0C0419191919191919191900
000019191919191919191904141514120C1212120C0C0C0C0C0C121214120C12
1212140C040C1212120C120C0C04191919191919191919000000191919191919
191919190415121212121212120C0C0C0C0C12121212121212120C0C04121214
1212120C041919191919191919191900000019191919191919191919040C1412
121212120C0C0C0C04040C1212121212120C0C040C1214121214120C04191919
1919191919191900000019191919191919191919190412121212121212120C04
040C04040C1212120C0C0C041212151214120C0C041919191919191919191900
00001919191919191919191919190412121212121204040C12120C0C04040C0C
0C0C040C1215141514120C041919191919191919191919000000191919191919
19191919191919040C12120C040C1412120C0C0C0C0C040404040C1214141514
120C0C0419191919191919191919190000001919191919191919191919191919
04040404121212121212120C0C0C0C0C0C0C0C0C121414120C0C041919191919
1919191919191900000019191919191919191919191919191919040C12121414
12120C0C040C0C0C0C0C121212120C0C0C041919191919191919191919191900
0000191919191919191919191919191919191904040C12141412120C0C040C0C
0C0C0C0C0C0C0C04041919191919191919191919191919000000191919191919
1919191919191919191919191904040C1212120C0C0C0C0C0C0C0C0C0C040419
1919191919191919191919191919190000001919191919191919191919191919
19191919191919040C0C0C1515151515150C0C0C041919191919191919191919
1919191919191900000019191919191919191919191919191919191919190C0C
1212120C0C0C0C0C0C1D15150C19191919191919191919191919191919191900
0000191919191919191919191919191919191919190C12120C0C0C1919191919
190C0C0C1D0C1919191919191919191919191919191919000000191919191919
1919191919191919191919190C120C0C1919191919191919191919190C120C19
1919191919191919191919191919190000001919191919191919191919191919
1919190C120C1919191919191919191919191919190C120C1919191919191919
19191919191919000000191919191919191919191919191919190C120C191919
191919191919191919191919190C120C19191919191919191919191919191900
00001919191919191919191919191919190C120C191919191919191919191919
19191919190C120C191919191919191919191919191919000000191919191919
1919191919191919190C120C191919191919191919191919191919190C120C19
1919191919191919191919191919190000001919191919191919191919191919
190C120C1919191919191919191919191919190C120C19191919191919191919
19191919191919000000191919191919191919191919191919190C120C191919
1919191919191919190C0C120C19191919191919191919191919191919191900
000019191919191919191919191919191919190C1D0C0C0C1919191919190C0C
0C12120C19191919191919191919191919191919191919000000191919191919
1919191919191919191919190C1D151D0C0C0C0C0C0C1212120C0C1919191919
1919191919191919191919191919190000001919191919191919191919191919
19191919190C0C0C1D151515151D0C0C0C191919191919191919191919191919
1919191919191900000019191919191919191919191919191919191919191919
0C0C0C0C0C0C1919191919191919191919191919191919191919191919191900
0000}
end
end