设为首页 加入收藏

TOP

用VC++制作MSN、QQ 的消息提示窗口(一)
2012-11-04 15:05:31 来源: 作者: 【 】 浏览:412
Tags:制作 MSN 消息 提示 窗口
  用过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);
}

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

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇工业控制研华板卡的VC编程实现 下一篇VC++设计图形显示CPU内存利用率程..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: