程序最小化到托盘 本文关键词:最小化,托盘,程序
程序最小化到托盘 本文简介:VC++6.0中实现将应用程序的图标加入到Windows的系统托盘中(就是为应用程序在桌面右下角添加一个图标,和QQ类似)有位老兄说我乱贴,可能这位老兄已经看得眼花缭乱了,Shell_NotifyIcon是一个WindowsSDK的一个函数,只要你在windows下编程,不管你是BCB、VC、VB,
程序最小化到托盘 本文内容:
VC++6.0中实现将应用程序的图标加入到Windows的系统托盘中(就是为应用程序在桌面右下角添加一个图标,和QQ类似)有位老兄说我乱贴,可能这位老兄已经看得眼花缭乱了,Shell_NotifyIcon
是一个Windows
SDK的一个函数,只要你在windows下编程,不管你是BCB、VC、VB,都可以调用它来实现托盘图标,只是调用方法不同罢了。
常常能见到一些优秀的软件在运行后会将其应用程序图标加入到系统托盘中。如果能将自己编写的应用程序的图标也加入到系统托盘中,将会使你的程序显得很有专业水准。其实这并不困难,与系统托盘通信的函数只有一个:
Shell_NotifyIcon
(UINT
message,NOTIFYICONDATA
首先看一下该函数的两个参数。
第一个参数message可以取以下值:NIM_ADD
向托盘中加入一个图标;
NIM_MODIFY
修改托盘中的图标;NIM_DELETE
从托盘中删除一个图标
;
第二个参数m_nid是NOTIFYICONDATA结构的一个引用。该结构的原型如下:
typedef
struct
_NOTIFYICONDATA
{
DWORD
cbSize;//
结构的大小,必须在程序中给出
HWND
hWnd;
//是你程序中将要接收托盘消息的窗口句柄
UINT
uID;
//
应用程序中定义的托盘图标ID,此参数用作标识
UINT
uFlags;//设置属性,低三位有意义,0--7,如下:
//第一位//#define
NIF_MESSAGE
0x1
//
uCallbackMessage参数有效
//第二位//#define
NIF_ICON
0x2
//
hIcon参数有效
//第三位//#define
NIF_TIP
0x4
//
szTip参数有效
UINT
uCallbackMessage;
//
自定义的消息ID值,一定不要与以有的消息ID相重。
HICON
hIcon;
//显示在系统托盘上的Icon的句柄,可以为系统的IDI_WINLOGO等
CHAR
szTip[64];
//
用于图标显示的提示字符串
}
NOTIFYICONDATA;
为了接收到来自托盘的通知消息你可以将uCallbackMessage设定为你所定义的消息ID值,同时设定NIF_MESSAGE标志。这样当用户在你的托盘图标上移动或按下鼠标时,Windows将发出消息:该消息的messageID是你在uCallbackMessage中定义的值;wParam是你定义的uID值;而lParam是鼠标事件(如WM_LBUTTONDOWN),这样你的应用程序就能响应该事件了。因此,为了将自己的应用程序加入到系统托盘中,首先得建立一处理托盘通知消息的窗口对象,然后将窗口对象与你自己的托盘通知消息联系起来并建立相应的托盘通知消息映射机制,以便你的窗口对象能处理相应的事件。可以看到结构体NOTIFYICONDATA中,其成员变量hWnd,uID,uFlags均用于在窗口对象与你自己的托盘通知消息之间建立联系,而成员变量uCallbackMessage则必须是对应于你的窗口对象的托盘通知消息ID值。
于是要完成的工作有:
(1)建立一处理托盘通知消息的窗口对象;
(2)建立一结构体NOTIFYICONDATA变量,并给变量的相应域赋值以在托盘通知消息与窗口对象之间建立联系;
(3)建立相应的托盘通知消息映射机制;
(4)调用Shell_NotifyIcon函数以在系统托盘中加入、修改或删除图标;
(5)当然别忘了在你的窗口对象中编写相应的事件响应函数。
NOTIFYICONDATA
NotifyIcon;
#define
WM_NC
(WM_USER+0x101)
//
实现
protected:
afx_msg
LRESULT
OnNotifyIcon(WPARAM
wParam,LPARAM
IParam);
BEGIN_MESSAGE_MAP(CDiningManageDlg,CDialog)
ON_MESSAGE(WM_NC,OnNotifyIcon)
END_MESSAGE_MAP()
LRESULT
CDiningManageDlg::OnNotifyIcon(WPARAM
wParam,LPARAM
IParam)
{
if
((IParam
==
WM_LBUTTONDOWN)
||
(IParam
==
WM_RBUTTONDOWN))
{
ModifyStyleEx(0,WS_EX_TOPMOST);
ShowWindow(SW_SHOW);
}
return
0;
}
NotifyIcon.cbSize=sizeof(NOTIFYICONDATA);
NotifyIcon.hIcon=AfxGetApp()->LoadIcon(IDI_ICON_Notify);//IDR_MAINFRAME
NotifyIcon.hWnd=m_hWnd;
lstrcpy(NotifyIcon.szTip,L“接口程序“);
NotifyIcon.uCallbackMessage
=
WM_NC;
NotifyIcon.uFlags=NIF_ICON
|
NIF_MESSAGE
|
NIF_TIP;
Shell_NotifyIcon(NIM_ADD,ShowWindow(SW_HIDE);
Shell_NotifyIcon(NIM_DELETE,
篇2:outlook最小化到托盘的方法
outlook最小化到托盘的方法 本文关键词:最小化,托盘,方法,outlook
outlook最小化到托盘的方法 本文简介:Outlook最小化到托盘2010-07-0209:54:36|分类:默认分类|标签:|字号大中小订阅Outlook最小化的时候,总是会在任务栏占据一个窗口位,关掉的话,又不能及时收到邮件,这是一个很麻烦的问题下面提供可以让outlook最小化后隐藏到任务栏右手托盘的方法首先新建一个文本文件,然后重
outlook最小化到托盘的方法 本文内容:
Outlook最小化到托盘
2010-07-02
09:54:36|
分类:
默认分类
|
标签:
|字号大中小
订阅
Outlook最小化的时候,总是会在任务栏占据一个窗口位,关掉的话,又不能及时收到邮件,这是一个很麻烦的问题
下面提供可以让outlook最小化后隐藏到任务栏右手托盘的方法
首先新建一个文本文件,然后重命名为“outlook.reg“(须先到文件夹选项中设置显示文件扩展名)
之后右击选择“编辑“,把下面的蓝色字体内容复制进去,之后保存,双击执行即可
Outlook2007使用
========================================================
Windows
Registry
Editor
Version
5.00
[HKEY_CURRENT_USER/Software/Microsoft/Office/12.0/Outlook/Preferences]
“MinToTray“=dword:00000001
Outlook2003使用
========================================================
Windows
Registry
Editor
Version
5.00
[HKEY_CURRENT_USER/Software/Microsoft/Office/11.0/Outlook/Preferences]
“MinToTray“=dword:00000001
OutlookXP使用
========================================================
Windows
Registry
Editor
Version
5.00
[HKEY_CURRENT_USER/Software/Microsoft/Office/10.0/Outlook/Preferences]
“MinToTray“=dword:00000001