加入收藏  广告服务  关于我们
 2008-3-14

在XP下实现Vista的开始菜单,状态栏的透明效果

发表:qq168sky   阅读:次  关键字:不详   字体:[ ]

程序代码如下:
unit frmMain;
interface
uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, GlassWindow, StdCtrls, RzTrkBar, RaOuterControls, RzTray, Menus,
   ImgList, ExtCtrls;
type
   TFormMain = class(TForm)
     RaOuterControls1: TRaOuterControls;
     chkStart:          TCheckBox;
     chkTool:           TCheckBox;
     chkForm:           TCheckBox;
     Label1:            TLabel;
     TB:                TRzTrackBar;
     btnOK:             TButton;
     btnCancel:         TButton;
     RzTrayIcon1:       TRzTrayIcon;
     PopupMenu1:        TPopupMenu;
     X1:                TMenuItem;
     ImageList1:        TImageList;
     Timer1:            TTimer;
     procedure X1Click(Sender: TObject);
     procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
     procedure btnCancelClick(Sender: TObject);
     procedure btnOKClick(Sender: TObject);
     procedure Timer1Timer(Sender: TObject);
   private
     { Private declarations }
   public
     GlassW: TGlassedWindow;
     procedure RestoreWindows;
   end;
var
   FormMain: TFormMain;
implementation
{$R *.dfm}
procedure TFormMain.btnCancelClick(Sender: TObject);
begin
   Application.Minimize;
end;
procedure TFormMain.btnOKClick(Sender: TObject);
begin
   RestoreWindows;
   if chkStart.Checked then
     GlassW.GlassWindow(IntToStr(TB.Position), 'DV2ControlHost', nil)
   else
     GlassW.GlassWindow('0', 'DV2ControlHost', nil);
   if chkTool.Checked then
     GlassW.GlassWindow(IntToStr(tb.Position), 'Shell_TrayWnd', nil)
   else
     GlassW.GlassWindow('0', 'Shell_TrayWnd', nil);
   if chkForm.Checked then
     Timer1.Enabled := True;
   Application.Minimize;
end;
procedure TFormMain.FormCloseQuery(Sender: TObject; var CanClose: boolean);
begin
   RestoreWindows;
end;
procedure TFormMain.RestoreWindows;
var
   i: integer;
begin
   GlassW.GlassWindow('0', 'Shell_TrayWnd', nil);
   self.RaOuterControls1.GetPossibleWindows;
   if chkForm.Checked then
   begin
     for i := 0 to RaOuterControls1.PossibleWindows.Count - 1 do
     begin
       GlassW.GlassWindow('0', nil,
         PChar(RaOuterControls1.PossibleWindows[i]));
     end;
   end;
end;
procedure TFormMain.Timer1Timer(Sender: TObject);
var
   i: integer;
begin
   self.RaOuterControls1.GetPossibleWindows;
   if chkForm.Checked then
   begin
     for i := 0 to RaOuterControls1.PossibleWindows.Count - 1 do
     begin
       GlassW.GlassWindow(IntToStr(tb.Position), nil,
         PChar(RaOuterControls1.PossibleWindows[i]));
     end;
   end;
end;
procedure TFormMain.X1Click(Sender: TObject);
begin
   RestoreWindows;
   Close;
end;
end.

 热门文章
 推荐信息