如何让窗体在最底层 ,让他代替桌面的位置.程序运行以后能正常操作桌面的东西. ( 积分: 100 )

  • 主题发起人 主题发起人 Defo_XYF
  • 开始时间 开始时间
D

Defo_XYF

Unregistered / Unconfirmed
GUEST, unregistred user!
我的目的是当程序运行以后,让在在最底层显示,这时桌面上的图标都能正常使用.
 
任何有窗体的程序都不能在桌面的最底层,因为桌面已经是最底层了。否则的话你只能做透明窗体。或者,把桌面上的图标都拷贝到你的窗体里面,并让它接受点击事件
 
那我应该如何处理呢? 给段代码可以吗?
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
private

{ Private declarations }
public
{ Public declarations }
procedure CreateWnd; override;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.CreateWnd;
begin
inherited CreateWnd;
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or
WS_EX_LTRREADING or
WS_EX_TRANSPARENT or
WS_EX_TOPMOST or
WS_EX_TOOLWINDOW or
WS_EX_LAYERED);
SetLayeredWindowAttributes(Handle, Color, 10, LWA_ALPHA or LWA_COLORKEY);
end;
end.

这个是鼠标穿透的,SetLayeredWindowAttributes的第3个参数大小就是透明度。

不过还有其他问题,好像不能响应鼠标事件了,可能需要你用鼠标钩子获取,另外
 
如果桌面上的图标盖住你的控件(如按钮),点击图标时执行哪个动作?
 
To: 0桁骀,
谢谢,你的代码已经完全达到了我想要的目的.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部