发信人: 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]
|
|