仿QQ、MSN消息提示窗口的实现(C#)
2011-03-17 00:00
711 查看
前言:我们在QQ、MSN、飞信等即时通信软件中经常看到消息弹出提示,即屏幕右下角弹出一个消息提示框,然后过一段时间隐去(有时候也不隐去,比如一个艰难的决定)。这种提示方式在消息通信中比弹MessageBox更符合用户习惯,前者往往阻碍用户正常操作。我们尝试在.Net下模拟这种方式。 坦白的说核心代码是某位大牛(John O’Byrne)写的,另一位大牛Patrick Vanden Driessche 修改了部分代码,我在此基础上增加了对多弹框的支持,文后附了原代码和我修改之后的代码。 多弹框的实现部分主要写了一个PlaceManager类每次从0下标开始检测哪个位置可用,然后在这个位置弹出消息提示框,消息提示框隐掉之后再回收这个位置。 考虑到同时弹出两个及两个以上框的几率非常小,同时建立TaskbarNotifier窗口的过程资源消耗较多,程序里默认建立了一个TaskbarNotifier的对象,每次检测如果这个对象没有被使用则直接填入标题和内容并弹出,否则新建一个TaskbarNotifier对象再弹出。没有做使用概率的分析,大家如果觉得一个不够用可以默认多建立几个。 Demo里弹出消息提示框是在界面线程里,如果不是界面线程则会有问题,即使取消了CheckForIllegalCrossThreadCalls依然不行,这时需要在界面类里添加代理方法,使用代理方法弹出消息,具体代码如下所示,这问题也困扰了我好久:
图2 程序界面 点击这里下载源程序代码,这里下载我添加了多窗口提示后的代码。 参考文献:
[1] TaskbarNotifier代码,Created by John O’Byrne,2002-12-2,Modified by Patrick Vanden Driessche ,2003-1-11
delegate void PromptMessage(string message);public void Msg(string message) { PromptMessage call = new PromptMessage(PromptMsg); this.Invoke(call, new object[] { message }); }程序界面如图1所示:
图2 程序界面 点击这里下载源程序代码,这里下载我添加了多窗口提示后的代码。 参考文献:
[1] TaskbarNotifier代码,Created by John O’Byrne,2002-12-2,Modified by Patrick Vanden Driessche ,2003-1-11
相关文章推荐
- C# 模仿QQ、MSN消息提示系列 三、实现多个提示效果
- C# 模仿QQ、MSN消息提示系列 三、实现多个提示效果
- C# 模仿QQ、MSN消息提示系列 三、实现多个提示效果
- 利用C#实现标注式消息提示窗口
- C# 模仿QQ、MSN消息提示系列 四、bug修改 效果优化
- C# 模仿QQ、MSN消息提示系列 一、基本原理
- 实现MSN,QQ消息提示效果[ASP.Net]
- C#实现仿msn提示消息在登录后只弹出一次的效果
- c#在线程中打开类似msn的消息提示窗口
- C# 模仿QQ、MSN消息提示系列 二、基本效果模仿包含代码
- JavaScript实现类似QQ、MSN消息提示的效果(转载)
- C#实现仿msn提示消息在登录后只弹出一次的效果(downmoon)
- winforms实现类似QQ消息框一样的右下角消息提示窗口
- C#实现仿QQ消息窗口
- C# 模仿QQ、MSN消息提示系列 四、bug修改 效果优化
- C# 模仿QQ、MSN消息提示系列 四、bug修改 效果优化
- 利用C#实现标注式消息提示窗口
- 用VC++制作MSN、QQ 的消息提示窗口
- C# 模仿QQ、MSN消息提示系列 一、基本原理
- C# 模仿QQ、MSN消息提示系列 五、改进 只使用两个时间控件