制作MSN、QQ的消息提示窗口

用过QQ和MSN聊天工具的人都知道,只要好友上线,就会在托盘的位置处显示一个提示窗口,可以是拉帘式的,或者是淡入淡出的形式出现;想想何不为自己的程式也加一个漂亮的提示窗口呢:)

说做就做。

一、MSN拉帘式窗口制作

分三部分:1、窗口的显示;2、窗口的停留;3、窗口的消失;

如果达到这样郊果,系统中要有三个定时器,进行分别控制。定义的定时器如下:

#define ID_TIMER_POP_WINDOW 1
#define ID_TIMER_DISPALY_DELAY 2
#define ID_TIMER_CLOSE_WINDOW 3

从CWnd 继承一个窗口,当然也可以从CFrameWnd进行派生,这不是主要问题,关键是看你是怎么处理WM_PAINT,WM_MOUSEMOVE,WM_TIMER的消息。一般情况,我从OnPaint()中进行显示图片,在WM_TIMER中处理定时器消息,下面是处里定时器时用到的代码:

CMsgWnd::CMsgWnd()
{
  ...
  SetTimer(ID_TIEMR_POP_WINDOW,20,NULL);
  ...
}
void CMsgWnd::OnTimer(UINT nIDEvent)
{
  static int nHeight=0;
  int cy=GetSystemMetrics(SM_CYSCREEN);
  int cx=GetSystemMetrics(SM_CXSCREEN);
  RECT rect;
  SystemParametersInfo(SPI_GETWORKAREA,0,&rect,0);
  int y=rect.bottom-rect.top;
  int x=rect.right-rect.left;
  x=x-WIN_WIDTH;
  
  switch(nIDEvent)
  {
  case ID_TIMER_POP_WINDOW:
    if(nHeight<=WIN_HEIGHT)
    {
      ++nHeight;
      MoveWindow(x,
        y-nHeight,
        WIN_WIDTH,
        WIN_HEIGHT);
      
      Invalidate(FALSE);
    }
    else
    {
      KillTimer(ID_TIMER_POP_WINDOW);
      SetTimer(ID_TIMER_DISPLAY_DELAY,5000,NULL);
    }
    break;
  case ID_TIMER_CLOSE_WINDOW:
    if(nHeight>=0)
    {
      nHeight--;
      MoveWindow(x,
        y-nHeight,
        WIN_WIDTH,
        nHeight);
    }
    else
    {
      KillTimer(ID_TIMER_CLOSE_WINDOW);
      SendMessage(WM_CLOSE);
    }
    break;
  case ID_TIMER_DISPLAY_DELAY:
    KillTimer(ID_TIMER_DISPLAY_DELAY);
    SetTimer(ID_TIMER_CLOSE_WINDOW,20,NULL);
    break;
  }
  
  CWnd::OnTimer(nIDEvent);
}

根据你设的定时器的长短来控制窗口的显示过程;

时间: 2024-10-28 02:43:45

制作MSN、QQ的消息提示窗口的相关文章

Windows7下QQ来消息播放器声音变小

使用Windows7的用户是不是有发现这么个问题,在看电影或是听音乐的时候,如果QQ或MSN来消息的话,电影或音乐的音量就会突然变小,使得QQ提示音显得格外刺耳.有的用户以为是Windows7的一个bug或是自己的声卡驱动出毛病了,折腾了半天还是无解. 实际上,这是Windows7的一个新的功能设计,用意就是避免用户太沉浸于音乐或电影当中而忽略了其他信息.用户对这个比较人性化的设计褒贬不一,如果不需要,我们可以通过设置,把这项功能去掉. 设置方法如下: 鼠标右键单击系统托盘上的喇叭图标,弹出菜单

利用C#实现标注式消息提示窗口

近一段时间由于项目需要一直专注于UI方面的编程,为了更加友好的将提示信息呈现给用户,我们必须对标准的Windows消息提示窗口进行处理.我们大家在Windows XP下使用U盘.闪存等移动存储设备,当插上或拔下这些设备时任务栏区域都会显示一个淡黄色背景,且具有标注样式的提示窗口弹出来,这样的提示即友善又美观,那么这到底是怎么实现的呢?其实道理并不复杂,该标注式提示窗口本身就是一个不规则窗体,当显示时它会将标注窗口的箭头指向不同控件.如下图: 一般情况下的p标注式提示窗口屏幕边缘的标注式提示窗口

ole剪贴板-【模仿QQ发送消息问题,richedit控件内图片内容识别问题】

问题描述 [模仿QQ发送消息问题,richedit控件内图片内容识别问题] 发送框使用richedit控件,为了支持复制粘贴混合格式(图片+文字)实现了ole剪贴板的callback接口.但没有自己实现copy和paste方法.使用的是控件的默认拷贝粘贴方法. 现在可以正常拷贝各种格式粘贴到richedit控件内. 但要发送控件内的内容时产生了问题,我获取到richedit里面的ole对象后,无法识别ole对象类型(通常是位图,但使用位图格式获取对象的数据却失败),只能发送文字. 有没有办法将获

如何制作像qq软件界面

问题描述 如何制作像qq软件界面 急需 想像qq一样的软件界面,请大神指教,详细制作过程 解决方案 google 你用的语言 高仿 qq 都有结果 你没说你用的语言,这里就不给你直接的链接了. 解决方案二: 软件界面制作途径MFC界面之通过软件制作图像序列 解决方案三: http://download.csdn.net/detail/geniusice18/3350843 主要是皮肤库.界面美化 解决方案四: 请使用 DirectUI 的软件框架吧 解决方案五: Qt使用起来很好上手的 解决方案

QQ怎么群发消息 QQ群发消息教程

给各位QQ软件的用户们来详细的解析分享一下QQ群发消息的教程. 教程分享: 方法一:QQ群群发信息 1.向多人群发消息最好的功能莫过于QQ群了,可以向多人聊天,但有群主管理.QQ查找群里即可搜索到很多兴趣相投的人组成的QQ群.   2.击群即可打开群聊天对话框,输入你的信息,点击发送即可向多人聊天   3.可自主创建QQ群,把你想群发的人拉入群内,根据提示进行操作.     方法二:QQ讨论组群发消息 1.Q讨论组是一个完全自由的一键生成的QQ群,在里面你可以畅聊,没有管理员,自由退出.双击讨论

2.关于QT中的Dialog(模态窗口),文件选择器,颜色选择器,字体选择器,消息提示窗口

 1 新建一个空项目 A 编写 .pro文件 QT += gui widgets   HEADERS += \     MyDialog.h   SOURCES += \     MyDialog.cpp B 编写MyDialog.h #ifndef MYDIALOG_H #define MYDIALOG_H   #include <QDialog>   class MyDialog:public QDialog {     Q_OBJECT public:     explicit My

MSN的短消息提示是在什么地方连接的数据库

问题描述 那位大哥晓得MSN的短消息提示是在什么地方做的数据连接?我在页面上js写连接数据库可以是可以就是提示不安全页面回掉写吧老是说未完成代码请教高人

【请教】如何制作类似QQ表情或词库一样的自动导入包??

问题描述 [请教]如何制作类似QQ表情或词库一样的自动导入包??比如,双击QQ表情.eip就自动导入到QQ安装目下的某个表情文件夹内??谁知道的烦请解答指点一下?谢谢~~

【技术贴】自己制作支持QQ空间背景音乐的链接教程||QQ免费空间音乐外链自己上传制作教程

[技术贴]自己制作支持QQ空间背景音乐的链接教程||QQ免费空间音乐外链自己上传制作教程好多友友是不是特烦,在百度上一个一个的搜支持QQ空间的音乐外链,so 这个教程很及时.利用QQ邮箱的随身盘的功能,把你想要放在QQ空间的一切音乐都能放进去!!哇哈哈 强大. 1.打开自己的QQ邮箱   2.进入随身盘,开始上传自己的最最最喜欢的音乐进去,铃声也可以哦!!   3.点击下载,用360浏览器自带的下载就行.此步骤最为关键,因为我们要的是链接,不需要真正下载下来,所以我们要把链接复制进新建文本文档,