一个托盘程序演示 -闹钟 Alert

2016-01-29 11:55 3 1 收藏

一个托盘程序演示 -闹钟 Alert,一个托盘程序演示 -闹钟 Alert

【 tulaoshi.com - C语言心得技巧 】

一个托盘程序演示 -闹钟 Alert


作者:Abbey

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

下载源代码


关键字:托盘 Tray

  想必大家都看见过那些在系统托盘(Tray)中的程序吧,本文就演示了如何创建一个这样的托盘程序Alert。Alert是一个运行在系统托盘中的小闹钟,它在设定的时间后触发,运行屏幕保护程序并播放一首歌曲。这个程序是很久以前写的了,而我现在没有安装VC++了,所以本文的截图都是朋友Leoyin帮我做出来后传给我的(好麻烦,呵呵),在此也对他表示感谢!
  建立一个托盘程序的关键在于Windows API-Shell_NotifyIcon()的使用,这个API的声明包含在ShellAPI.H文件中。请在StdAfx.h中使用“#include <ShellAPI.H”将其引入工程,别象我当时那么傻-在工程管理器里引入了该文件,导致现在你们在类视图中看见了许多不希望看到的东西。我现在也没有VC++ IDE来修改它了,就这样吧。
  首先,给大家介绍一下相关的函数和结构:Shell_NotifyIcon()的原型和说明(最新版)如下:

BOOL Shell_NotifyIcon(DWORD dwMessage,PNOTIFYICONDATA lpdata);
参数及返回值说明:
dwMessage:[输入参数] 说明要执行的动作。动作的可选值如下: NIM_ADD 增加一个图标到托盘区 NIM_DELETE 从托盘区删除一个图标 NIM_MODIFY修改图标 NIM_SETFOCUS 将焦点(Focus)返回托盘区。这个消息通常在托盘区图标完成了用户界面下的操作后发出。比如一个托盘图标显示了一个快捷菜单,然后用户按下ESC键了操作,这时使用NIM_SETFOCUS将焦点继续保留在托盘区。该项仅在系统外壳与常用控制DLL( Shlwapi.dll与Comctl32.dll)5.0以上版本才可用。 NIM_SETVERSION指定使用特定版本的系统外壳与常用控制DLL。缺省值为0,表示使用Win95方式。该项仅在系统外壳与常用控制DLL 5.0以上版本才可用lpdata:[输入参数] 一个指向NOTIFYICONDATA结构的指针。
返回值:成功时函数返回TRUE,否则FALSE。

NOTIFYICONDATA 结构的说明(最新版)如下:
typedef struct _NOTIFYICONDATA {    DWORD cbSize;    HWND hWnd;    UINT uID;    UINT uFlags;    UINT uCallbackMessage;    HICON hIcon;    TCHAR szTip[64];    DWORD dwState;    DWORD dwStateMask;    TCHAR szInfo[256];    union {        UINT uTimeout;        UINT uVersion;    };    TCHAR szInfoTitle[64];    DWORD dwInfoFlags;    GUID guidItem;} NOTIFYICONDATA, *PNOTIFYICONDATA;
cbSize 以字节计的结构大小,以适应不同版本。 hWnd 接收Windows消息的窗口句柄。 uID 托盘图标的ID。 uFlags 指示结构中的哪些成员包含有效数据,可选值:NIF_ICON, NIF_MESSAGE,NIF_TIP,NIF_STATE,NIF_INFO,NIF_GUID。 uCallbackMessage 回调消息ID,由用户自定义。与一个自定义的消息处理函数关联。 hIcon 托盘图标的句柄。 szTip 托盘图标的提示字符串。 注意:以下数据成员仅限系统外壳与常用控制DLL 5.0及以上版本才有效! dwState 图标的状态:NIS_HIDDEN-隐藏,或NIS_SHAREDICON-可视。 dwStateMask 图标状态掩码,用以设置dwState szInfo 气球型提示(Balloon ToolTip)的字符串。 uTimeout

来源:http://www.tulaoshi.com/n/20160129/1483915.html

延伸阅读
标签: Web开发
代码如下: import java.sql.Date; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSetMetaData; import java.sql.Statement; import java.sql.ResultSet; import java.sql.DriverManager; import java.sql.SQLException; public class FirstOracleJdbc { public static void main(String[]...
标签: ASP
请看以下实现ASP分页程序的代码: $#@60;anguage="vbscript" dim conn dim connstr dim totalPut dim CurrentPage dim TotalPages dim i,j dim sql dim rs on error resume next 打开数据库 connstr="DBQ="+server.mappath("book.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" set conn=server.cr...
标签: PHP
  分析: 我们利用一个文件(data.dat)来存储投票栏目.每个栏目占据一行. 这样一来,便可随意加入和减去想要投票的栏目. 我们再利用一个文件(votes.dat)来存储我们的投票结果. 并纪录最近一位投票者的IP地址,简单的防止一人多投. 所以,您应该在该程序目录下自行建立两个文件data.dat和votes.dat 程序运行过程部分 程序运行时应该...
在VB5.0具有面向对象的程序设计思想及可视化的编程方式,可开发出各种多媒体应用程序,颇得软件设计者青睐。笔者最近应用VB5.0编制了一程序,成功实现了“图文并茂”的屏幕效果,即:屏幕出现用户选定的一幅赏心悦目的图像,在图像下方有一行字幕缓缓地从屏幕右边向左边移动,全部文字移至左边消失后,从右边又平滑拖出字幕,字幕移动过程中既不...
---- 用过DreamWeaver的人都会发现DreamWeaver将每一个编辑的文件显示在任务栏上,并且用户任意关闭一窗口而不影响其他窗口,好象每一个窗口间没有关联,没有主窗口似的。但我们也能发现其实这些窗口间也有数据是共享的,如存盘的路径。 ---- 经过研究我发现其实这些窗口其实是属于同一程序的,并且实现方法也非常的简单。下面我用Inprise公...