发信人: skyice() 
整理人: wenbobo(2002-12-27 15:57:42), 站内信件
 | 
 
 
    API 中有一个 Shell_NotifyIcon(DWORD dwMessage,NOTIFYICONDATA 
 pind) 函数,其中消息 dwMessage 有三个值:
     NIM_ADD:    添加一个图标
     NIM_MODIFY: 修改一个图标
     NIM_DELETE: 删除一个图标
     这三个值分别告诉 Shell_NotifyIcon 该做什么动作,NOTIFYICONDATA 
 是一个含有七个域的结构:
     DWORD cbSize;          // NOTIFYICONDATA 结构的大小
     HWND hWnd;             // 图标所属窗口的句柄
     UINT uID;              // 任务栏图标号
     UINT uFlags;           // 标志、可以是 NIF_ICON、NIF_MESSAGE、
 NIF_TIP 或其组合
     UINT uCallbackMessage; // 窗口接收在任务栏图标范围内发生的鼠标
 事件
     HICON hIcon;           // 图标句柄
     char szTip[64];        // 图标的提示信息
     这些定义都包含在 shellapi.h 中。
     // trayicon.h
 //-------------------------------------------------------
 #include <Classes.hpp>
 #include <Controls.hpp>
 #include <StdCtrls.hpp>
 #include <Forms.hpp>
 #include <shellapi.h>
 #include <stdlib.h>
 //-------------------------------------------------------
 class TForm1 : public TForm
 {
 __published:	// IDE-managed Components
     void __fastcall FormClose(TObject *Sender, 
         TCloseAction &Action);
 private:	// User declarations
     NOTIFYICONDATA m_notify;
     bool m_bOpen;
     MESSAGE void MyMessage(TMessage & mymsg);
 public:		// User declarations
     __fastcall TForm1(TComponent* Owner);
     void AddIcon(void);
     void ModifyIcon(void);
     void DeleteIcon(void);
     TIcon * ShowIcon;
     TIcon * HideIcon;
     BEGIN_MESSAGE_MAP
         MESSAGE_HANDLER(WM_COMMAND,TMessage,MyMessage)
     END_MESSAGE_MAP(TForm);
 };
 //-------------------------------------------------------
 extern PACKAGE TForm1 *Form1;
 //-------------------------------------------------------
 #endif
 
     // tyaricon.cpp
 //-------------------------------------------------------
 #include <vcl.h>
 #pragma hdrstop
 
 #include "tyaricon.h"
 
 //-------------------------------------------------------
 #pragma package(smart_init)
 #pragma resource "*.dfm"
 TForm1 *Form1;
 //-------------------------------------------------------
 __fastcall TForm1::TForm1(TComponent* Owner)
         : TForm(Owner)
 {
     ShowIcon=new TIcon();
     HideIcon=new TIcon();
     ShowIcon->LoadFromFile("face03.ico");
     HideIcon->LoadFromFile("face02.ico");
     m_bOpen=true;
     AddIcon();
 }
 //-------------------------------------------------------
 
 void TForm1::AddIcon(void)
 {
     m_notify.cbSize=sizeof(NOTIFYICONDATA);
     m_notify.hWnd=Form1->WindowHandle;
     m_notify.uID=0;
     m_notify.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP;
     m_notify.uCallbackMessage=WM_COMMAND;
     m_notify.hIcon=(HICON)ShowIcon->Handle;
     lstrcpy(m_notify.szTip,"显示");
     Shell_NotifyIcon(NIM_ADD,&m_notify);
 }
 //-------------------------------------------------------
 
 void TForm1::ModifyIcon(void)
 {
     m_notify.hIcon=m_bOpen?(HICON)HideIcon->Handle:
         (HICON)ShowIcon->Handle;
     lstrcpy(m_notify.szTip,(m_bOpen?"打开":"关闭"));
     Shell_NotifyIcon(NIM_MODIFY,&m_notify);
     m_bOpen=! m_bOpen;
 }
 //-------------------------------------------------------
 
 void TForm1::DeleteIcon(void)
 {
     m_notify.uFlags=NULL;
     Shell_NotifyIcon(NIM_DELETE,&m_notify);
 }
 //-------------------------------------------------------
 
 void __fastcall TForm1::FormClose(TObject *Sender, 
     TCloseAction &Action)
 {
     DeleteIcon();
 }
 //-------------------------------------------------------
 
 MESSAGE void TForm1::MyMessage(TMessage & MyMsg)
 {
     if(MyMsg.WParam==0)
         if(MyMsg.LParam==WM_LBUTTONDBLCLK)
             ModifyIcon();
 }
 //-------------------------------------------------------
  -- 欢迎您到C语言版来!
  ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.99.80.146]
  | 
 
 
 |