怎么在透明背景同时可以接受右键命令(像千千静听5.5的歌词秀) 很神奇!原来我们把窗口背景色透明后,在透明的地方按右键,出来的是桌面的右键。但千千5.5的歌词就不是,透明了一样可以弹出歌词秀的菜单,它是怎么做到的?越简单越好。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 最简单的放一个Label在最上面设成透明,在响应label的事件 试试这个效果你就知道了unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Buttons; type TForm1 = class(TForm) Image1: TImage; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private function CreateRegion(wMask: TBitmap; wColor: TColor; hControl: THandle): HRGN; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin Close; end; procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ReleaseCapture; SendMessage(Handle, WM_SYSCOMMAND, $F012, 0); end; ///////////////////////////////////// 用汉字做窗体形状 procedure TForm1.FormCreate(Sender: TObject); var rgn:HRGN; begin BeginPath(Canvas.Handle); SetBkMode( Canvas.Handle, TRANSPARENT ); Canvas.Font.Name:= '宋体'; Canvas.Font.Size:=100; Canvas.TextOut( 20, 20, '漂亮吗?');//用"漂亮吗?"作为form的形状 EndPath(Canvas.Handle); rgn:= PathToRegion(Canvas.Handle); SetWindowRgn( Handle, rgn, true ); end; end. function CreateRegion(wMask: TBitmap; wColor: TColor; hControl: THandle): HRGN; 这个函数没用,你直接删掉 没错我就是在窗体上把TransparentColor(value)两个值设好就行了,透明标签也是拦不到的,试过了。有个笨办法就是拦WM消息,但是不对劲的。效率也不高。 透明的方式不至一种。比如你设置form1.AlphaBlend:=true和Form1.AlphaBlendValue值为10,然后在窗体上设置右键,这时看起来是透明了,其实你右击,菜单还是有的。 我用了消息拦截+PtAtRect函数搞定了…… 定义变量时赋值 dbgrideh单元格直接编辑问题 怎么能让程序发现指定的窗口后模拟点击? 欢迎赐教.... 请教delphi中的队列和多线程问题 帮忙!!!!!!! 可不可以把视图中的记录插到表中? fastreport做的报表,如何运行时在frDbDataset过滤记录,很急!详细见内容 关于combobox的问题! delphi数据库查询超时 怎样在程序里实现web方式直接进入邮箱 DBChart煩人
unit Unit1; interface uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Buttons; type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
function CreateRegion(wMask: TBitmap; wColor: TColor;
hControl: THandle): HRGN;
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end; procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(Handle, WM_SYSCOMMAND, $F012, 0);
end; /////////////////////////////////////
用汉字做窗体形状
procedure TForm1.FormCreate(Sender: TObject);
var
rgn:HRGN;
begin
BeginPath(Canvas.Handle);
SetBkMode( Canvas.Handle, TRANSPARENT );
Canvas.Font.Name:= '宋体';
Canvas.Font.Size:=100;
Canvas.TextOut( 20, 20, '漂亮吗?');//用"漂亮吗?"作为form的形状
EndPath(Canvas.Handle);
rgn:= PathToRegion(Canvas.Handle);
SetWindowRgn( Handle, rgn, true );
end; end.
hControl: THandle): HRGN;
这个函数没用,你直接删掉
没错我就是在窗体上把TransparentColor(value)两个值设好就行了,
透明标签也是拦不到的,试过了。有个笨办法就是拦WM消息,但是不对劲的。效率也不高。