精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Delphi>>Windows API函数>>任务栏>>Re: 求一任务栏程序示例,谢谢 。

主题:Re: 求一任务栏程序示例,谢谢 。
发信人: pazee@GZ()
整理人: teleme(2001-03-29 21:54:06), 站内信件

标  题: Re: 求一任务栏程序示例,谢谢 。
发信站: 网易虚拟社区 (Wed Sep 27 09:14:34 2000), 站内信件

【 在 gzm (阿甘) 的大作中提到: 】
: 我想找个任务栏程序(就象声卡音量控制程序那样的)示例来学习一下,
: 不知何处有,谢谢。


你看简单不?
我还截获了最下化的消息,最小化是就变成了trayicon图标了

const
  TRAY_ICON = 0;
  WM_TRAYNOTIFY = WM_USER + 1000;

type
  TForm1 = class(TForm)
    Button1: TButton;
    PopupMenu1: TPopupMenu;
    Show1: TMenuItem;
    Exit1: TMenuItem;
    About1: TMenuItem;
    procedure Button1Click(Sender: TObject);
    procedure Show1Click(Sender: TObject);
    procedure Exit1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    tnd: NOTIFYICONDATA;
    procedure MyWindowProc(var Message: TMessage);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.MyWindowProc(var Message: TMessage);
var
  p:tpoint;
begin
  case Message.Msg of
    WM_TRAYNOTIFY: begin
      case Message.LParam of
        WM_RBUTTONDOWN: begin
          GetCursorPos(p);
          self.BringToFront;
          PopupMenu1.Popup(p.x, p.y);
          PostMessage(0,0,0,0);
        end;
        WM_LBUTTONDBLCLK:
          Show1.Click;
      end;
    end;
    WM_SYSCOMMAND: begin
      if (Message.WParam = SC_MINIMIZE) then
        Button1.Click
      else
        Inherited WndProc(Message);
    end
    else
        Inherited WndProc(Message);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  tnd.cbSize:= sizeof(NOTIFYICONDATA);
  tnd.Wnd:= self.Handle;
  tnd.uID:= TRAY_ICON;
  tnd.uFlags:= NIF_MESSAGE or NIF_ICON or NIF_TIP;
  tnd.uCallbackMessage:= WM_TRAYNOTIFY;
  tnd.hIcon:= self.Icon.Handle;
  tnd.szTip:= '小花';
  if Shell_notifyIcon(NIM_ADD, @tnd) then
  begin
    Self.Hide;
  end;
end;

procedure TForm1.Show1Click(Sender: TObject);
begin
  Self.Show;
  Shell_notifyIcon(NIM_DELETE, @tnd);
end;

procedure TForm1.Exit1Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
//  Caption:= IntToStr(PopupMenu1.WindowHandle);
  PopupMenu1.WindowHandle:= 0;
  WindowProc:= MyWindowProc;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin
  Shell_NotifyIcon(NIM_DELETE, @TND);
end;

end.



--
.------------------------------------------------. 
|                                                |
|  英特那雄乃尔就一定要实现!           ...       |
|                                    /(. .)\     |
`---------------------------------ooO--(_)--Ooo--' 

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.105.149.165]

[关闭][返回]