自定义任务栏通知类

在开发桌面应用程序时,经常需要实现一些能够在任务栏上显示通知的功能。这些通知可以是简单的文本消息,也可以是带有动画效果的复杂窗口。本文将介绍一个自定义的任务栏通知类,它支持皮肤,并且可以很容易地集成到MFC项目中。

兼容性

这个类需要在项目中静态或动态链接MFC。它已经在Visual Studio.NET下编写、编译和测试过(但也应该可以在VC6中工作)。

如何使用类

使用这个类非常简单:只需将TaskbarNotifier.h和TaskbarNotifier.cpp添加到项目中,然后在应用程序中包含TaskbarNotifier.h,在Dialog或Window类的头文件中添加一个CTaskbarNotifier成员变量。

// 在OnInitDialog或OnCreate成员函数中添加以下代码 m_wndTaskbarNotifier.Create(this); m_wndTaskbarNotifier.SetSkin(IDB_MY_BITMAP_RESOURCE); m_wndTaskbarNotifier.SetTextFont("Arial", 90, TN_TEXT_NORMAL, TN_TEXT_UNDERLINE); m_wndTaskbarNotifier.SetTextColor(RGB(0, 0, 0), RGB(0, 0, 200)); m_wndTaskbarNotifier.SetTextRect(CRect(10, 40, m_wndTaskbarNotifier1.m_nSkinWidth - 10, m_wndTaskbarNotifier1.m_nSkinHeight - 25));

当想要显示弹出动画时,只需在任何地方调用:

m_wndTaskNotifier.Show("要显示的文本");

这将显示窗口出现然后消失的动画。可以在任何时候再次调用Show()方法。如果弹出窗口仍然存在,文本将被替换;如果它正在消失,它将再次最大化。

类文档

以下是类的一些关键函数:

int Create(CWnd *pWndParent); // 创建一个弹出窗口,直到调用Show()才会显示 BOOL SetSkin(UINT nBitmapID, short red=-1, short green=-1, short blue=-1); BOOL SetSkin(LPCTSTR szFileName, short red=-1, short green=-1, short blue=-1); // 这两个函数为弹出窗口分配一个皮肤,参数可以是位图资源ID或位图文件的路径 void SetTextFont(LPCTSTR szFont, int nSize, int nNormalStyle, int nSelectedStyle); // 这个函数允许指定用于显示文本的字体(两种样式,一种是正常状态,一种是鼠标悬停时) void SetTextColor(COLORREF crNormalTextColor, COLORREF crSelectedTextColor); // 这个函数设置文本在正常或选中状态下的颜色 void SetTextRect(RECT rcText); // 这个函数允许定义一个矩形区域,该区域将用于显示文本的剪辑区域 void Show(LPCTSTR szCaption, DWORD dwTimeToShow=800, DWORD dwTimeToStay=3000, DWORD dwTimeToHide=500, int nIncrement=1); // 显示弹出窗口动画 void Hide(); // 手动隐藏弹出窗口

附加说明

当用户点击弹出窗口时,会向其父窗口发送一个消息(在TaskbarNotifier.h中定义的WM_TASKBARNOTIFIERCLICKED),可以通过在消息映射宏中添加以下内容来拦截它:

ON_MESSAGE(WM_TASKBARNOTIFIERCLICKED, OnTaskbarNotifierClicked)

没有释放HRGN句柄的原因是,当调用SetWindowRgn()函数时,GDI会负责对象的删除。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485