C#托盘窗口显示

 托盘显示许多软件都有这个功能,在C#中如何实现呢,下面的方法可以实现托盘显示,不过可能有些复杂。
 首先,需要在工具栏拖入NotifyIcon,如图1的那个控件。

图一:


 然后,设置NotifyIcon的属性,加图标什么的。
 最后,最主要的,就是NotifyIcon点击事件,要实现点击托盘图标隐藏窗口,再点击显示窗口,还有右键托盘能显示菜单等。
 下面着重介绍一下这一部分的实现。
 一、点击托盘右键菜单
     这个NotifyIcon本身就有这个属性,即NotifyIcon.ContextMenu,添加相应菜单即可。
     详见托盘显示演示的 AddTrayMenuItem()方法。
二、隐藏至托盘和显示
    该部分使用user32.dll中的函数,如下:
 1、bool SetWindowPos( IntPtr hWnd, IntPtr hWndAfter, int x, int y, int cx, int cy, uint flags)
 函数功能:
 该函数改变一个子窗口,弹出式窗口式顶层窗口的尺寸,位置和Z序。   子窗口,弹出式窗口,及顶层窗口根据它们在屏幕上出现的顺序排序、顶层窗口设置的级别最高,并且被设置为Z序的第一个窗口。
 2、IntPtr FindWindowEx(IntPtr hwndParent,IntPtr hwndChildAfter,string lpszClass,string lpszWindow)
 函数功能:
 该函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数查找子窗口,从排在给定的子窗口后面的下一个子窗口开始。在查找时不区分大小写。
 3、int GetWindowRect(IntPtr hwnd, ref RECT lpRect)
 函数功能:
 该函数返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。
 4、DrawAnimatedRects( IntPtr hwnd, int ani, ref RECT from,ref RECT to)
 函数功能:
 在窗口缩放时产生动画效果

部分代码如下:

ChangeTrayStateManager类:

TrayStateMethods类,引用user32.dll方法。

主界面调用:


详见工程  托盘显示演示

posted on 2012-01-13 16:49  c语言源码  阅读(516)  评论(0编辑  收藏  举报

导航