请问怎样可以实现任务栏图标的闪烁?(当对数据库进行查询记录查询到时,过程不用管,只要实现图标的闪烁就可以了。最好带点代码!)
  谢谢大家!

解决方案 »

  1.   

    放一个TTimer,然后在OnTimer里面处理切换图片就行了阿
      

  2.   

    unit TrayIcon;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Menus,shellapi, ImgList, ExtCtrls;type
      //----------------------------------------------------------------------
      PNotifyIconData = ^TNotifyIconDataA;
        TNotifyIconDataA = record
        cbSize : DWORD;
        Wnd : HWND;
        uID : UINT;
        uFlags : UINT;
        uCallbackMessage : UINT;
        hIcon : HICON;
        szTip : array [0..63] of AnsiChar;
      end;
      //----------------------------------------------------------------------
      TForm1 = class(TForm)
        PopupMenu1: TPopupMenu;
        open1: TMenuItem;
        close1: TMenuItem;
        N1: TMenuItem;
        about1: TMenuItem;
        ImageList1: TImageList;
        Timer1: TTimer;
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure open1Click(Sender: TObject);
        procedure close1Click(Sender: TObject);
        procedure FormShow(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
      private
        { Private declarations }
        //-------------------------------------------------------------
        Icons: array[0..1] of TIcon;
        IconData: TNotifyIconData;
        procedure ShowIcon;
        procedure IconOnClick(var message:TMessage); message WM_USER+1;
        Procedure WMSysCommand(Var message : TMessage) ; Message WM_SYSCOMMAND ;
        //-------------------------------------------------------------
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.IconOnClick( var message: Tmessage);
    var p : TPoint;
    begin
     if (message.lParam = WM_LBUTTONDOWN) then
     begin
       ShowWindow(Handle, SW_SHOW );
     end;
     
     if (message.lParam = WM_RBUTTONDOWN) then
     begin
       GetCursorPos(p);
       popupmenu1.Popup( p.x ,p.y );
     end;
    end;Procedure TForm1.WMSysCommand(Var Message : TMessage) ;
    begin  if (Message.WParam = SC_MINIMIZE) then
      begin
           ShowIcon;
      end
      else
         Inherited;end;procedure TForm1.ShowIcon;
    begin
          IconData.cbSize := SizeOf( IconData );
          IconData.Wnd := Handle;
          IconData.uID := 1;
          IconData.uFlags := NIF_ICON
          or NIF_MESSAGE or NIF_TIP;
          IconData.uCallBackMessage := WM_USER+1;
          IconData.hIcon := Icons[0].Handle;//application.Icon.Handle;
          IconData.szTip := 'LANChat';
          Shell_NotifyIcon( NIM_ADD, @IconData );
          ShowWindow(Handle, SW_HIDE);
          hide;
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
       Shell_NotifyIcon( NIM_DELETE, @IconData );
    end;procedure TForm1.open1Click(Sender: TObject);
    begin
      Form1.Show;
    end;procedure TForm1.close1Click(Sender: TObject);
    begin
      Form1.close;
    end;procedure TForm1.FormShow(Sender: TObject);
    begin  showwindow(application.handle,sw_hide);end;procedure TForm1.FormCreate(Sender: TObject);
    var
      i: integer;
    begin
      for i:=0 to 1 do
      begin
        Icons[i] := TIcon.Create;
        ImageList1.GetIcon(i,Icons[i]);
      end;
      showicon;
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      if IconData.hIcon = Icons[0].Handle then IconData.hIcon := Icons[1].Handle
      else IconData.hIcon := Icons[0].Handle;
      Shell_NotifyIcon( NIM_MODIFY, @IconData );
    end;end.