怎样用VC6实现系统托盘

VC6系统托盘功能实现


I.相关数据结构及其API实现函数

Shell_NotifyIcon

 


WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(

    DWORD dwMessage,

    PNOTIFYICONDATA pnid

);     

Sends a message to the system to add, modify, or delete an icon from the taskbar status area. 发送一个消息给系统,从任务栏状态区域添加,修改,或者删除一个ICON图标。

<!--[if !supportLists]-->·   <!--[endif]-->Returns nonzero if successful, or zero otherwise.

dwMessage

Message value to send. This parameter can be one of these values:

NIM_ADD
 Adds an icon to the status area.
 
NIM_DELETE
 Deletes an icon from the status area.
 
NIM_MODIFY
 Modifies an icon in the status area.
 

pnid

Address of a NOTIFYICONDATA structure. The content of the structure depends on the value of dwMessage.

 

 

NOTIFYICONDATAtypedef struct _NOTIFYICONDATA {

    DWORD cbSize;

    HWND hWnd;

    UINT uID;

    UINT uFlags;

    UINT uCallbackMessage;

    HICON hIcon;

    char szTip[64];

} NOTIFYICONDATA, *PNOTIFYICONDATA;

 

Contains information that the system needs to process taskbar status area messages. 这个结构包含了系统处理来自任务栏状态区域的消息时所需要的信息。

cbSize

Size of this structure, in bytes. 这个结构都大小,用sizeof来初始化即可。

 

hWnd

Handle to the window that will receive notification messages associated with an icon in the taskbar status area. 用来接受任务状态栏所发出的消息的窗口的句柄。

 

 

uID

Application-defined identifier of the taskbar icon.任务栏图标的用户定义的标识。

 

 

uFlags

Array of flags that indicate which of the other members contain valid data. This member can be a combination of the following:

指出其他的哪个成员是有效数据。

NIF_ICON
 The hIcon member is valid.
 
NIF_MESSAGE
 The uCallbackMessage member is valid.
 
NIF_TIP
 The szTip member is valid.
 

uCallbackMessage

Application-defined message identifier. The system uses this identifier for notification messages that it sends to the window identified in hWnd. These notifications are sent when a mouse event occurs in the bounding rectangle of the icon.

应用程序(即用户自定义)定义的消息标识,当鼠标事件在ICON图标周围发生时发送这个消息给hWnd窗口。

 

hIcon

Handle to the icon to add, modify, or delete. 要添加,修改,和删除的icon图标的句柄。

 

szTip

Tooltip text to display for the icon. icon鼠标停留在该图标上时显示的提示字符串

 


2具体实现


假如在对话框的双击相应函数中实现:

void CMyDlg::OnLButtonDblClk(UINT nFlags, CPoint point)

{

    // TODO: Add your message handler code here and/or call default

 

    ShowWindow(SW_HIDE);//隐藏对话框主界面。

    char tip[64]="双击显示谭高文的定时程序主界面";

   

 

    NOTIFYICONDATA data;

    data.cbSize =sizeof(NOTIFYICONDATA);  初始化这个结构的大小

    data.hWnd =m_hWnd;  //用当前的对话框句柄来初始化接受消息的窗口。

    data.uID =IDI_ICON1;  自定义的ICON图标。

    data.uFlags =NIF_ICON |NIF_MESSAGE|NIF_TIP;  设定有效成员。

    data.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1));  装载并设定ICON图标的句柄。

    data.uCallbackMessage =WM_DBICON;自定义的消息。

    strcpy(data.szTip ,tip);  设定当鼠标一移动到ICON托盘图标上面时的提示信息。

    Shell_NotifyIcon(NIM_ADD,&data); 调用在右下角系统托盘添加结构中指定的图标。

   

    CDialog::OnLButtonDblClk(nFlags, point);

}

 

 

关于自定义消息的方法:

一.#define  WM_DBICON  WM_USER+50

二.在 *。H文件的  {{AFX_MSG(CMyDlg)和//}}AFX_MSG注释宏之后添加afx_msg void ondbicon(WPARAM wParam,LPARAM lParam);

这是一个相应函数声明。

三.在BEGIN_MESSAGE_MAP(CMyDlg, CDialog)和

       END_MESSAGE_MAP()之间,在   //}}AFX_MSG_MAP之后添加:

     ON_MESSAGE(WM_DBICON,ondbicon)这是一个消息跟相应函数的关联。

四. 相应函数的实现;

  void  CMyDlg::ondbicon(WPARAM wParam,LPARAM lParam)

{

  if(lParam==WM_LBUTTONDBLCLK)如果是双击。如果没有添加这个判断语句,那么只要鼠标移动到系统托盘上面的ICON图标就会相应这个消息的显示主界面,删除图标。

  {

    ShowWindow(SW_SHOW);//显示主界面。

  NOTIFYICONDATA data;

  data.cbSize =sizeof(NOTIFYICONDATA);

  data.hWnd =m_hWnd;

  data.uID =IDI_ICON1;

  data.uFlags =NIF_ICON |NIF_MESSAGE;

  data.hIcon =LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1));

  data.uCallbackMessage =WM_DBICON;

    Shell_NotifyIcon(NIM_DELETE,&data);删除ICON图标。

  }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值