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

2016-01-29 11:57 8 1 收藏

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

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

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

作者:袁怀善

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

下载源代码

  用过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);}            
根据你设的定时器的长短来控制窗口的显示过程;

二、QQ淡出淡出显示实现

  其实用到一个API函数:AnimateWindow,下面是这个函数的一些说明:
The AnimateWindow function enables you to produce special effects when showing or hiding windows.There are two types of animation: roll animation and slide animation. 
BOOL AnimateWindow( HWND hwnd, // handle to the window to animate DWORD dwTime, // duration of animation DWORD dwFlags // animation type );
上面的函数前两个参数一看就明白,不用说了,最后一个参数dwFlags设置动画窗口的样式:
Specifies the type of animation. This parameter can be one or more of the following flags.

各种标志说明:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com) 标志 说明 AW_SLIDE Uses slide animation. By default, roll animation is used.
This flag is ignored when used with the AW_CENTER flag. AW_ACTIVATE Activates the window. Do not use this flag with AW_HIDE. AW_BLEND Uses a fade effect. This flag can be used only if hwnd is a top-level window.AW_HIDE Hides the window. By default, the window is shown. AW_CENTER Makes the window appear to collapse inward if the AW_HIDE flag is used or expand outward
if the AW_HIDE flag is not used. AW_HOR_POSITIVE Animate the window from left to right. This flag

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

延伸阅读
如何操作MSN的表情 背景以及修改状态消息? 此主题相关图片如下 背景.JPG(71.01K): 此主题相关图片如下 表情.JPG(90.66K): 此主题相关图片如下 修改个人状态.JPG(85.95K):         注 :更多精彩教程请关注图老师电脑教程栏目
标签: 电脑入门
QQ自定义好友上线和消息的提示声音的方法如下: 在系统设置-基本设置-声音-系统声音提示-好友消息或好友上线中,点击更改,然后再重新选择即可。
标签: 电脑入门
广大Q友整天面对QQ“嘀嘀嘀”的声音,已经有点“审听疲劳”了,能不能把我的QQ声音改造改造呢?当然是可以的,不过要想对QQ“嗓音”进行改造,首先要明白QQ发声的原理。 1 QQ声音从何而来? 找到QQ安装目录,如“X:Program FilesTencentQQ”(X代表安装盘符)下的sound文件夹,这里有六个WAV格式的音频文件,QQ声音就是从这里发出...
标签: 电脑入门
对QQ或者MSN这种聊天工具熟悉的朋友,在使用时一定都会用到各种各样的表情,这些表情,不仅能增加你在聊天时的气氛,还能通过表情,含蓄的表达你的想法。那么今天就给大家介绍一款在聊天时非常实用的表情软件,名曰吐司传情专家。 这款软件最大的特点就是可以和主流聊天软件QQ、MSN相结合,下面图老师小编将为大家做详细介绍。 安装好程序并...
标签: Web开发
今天偶尔在园子里看到three的博客里面含有这个功能,就加了他的msn,请教了他,嘿,只要用instance source看源码就可以了。源码如下: 调用qq的方法: A href="tencent://message/?uin=20989163&amp;Site=博客园&amp;Menu=yes" target=blankIMG alt=点击这里给我发消息 src="http://wpa.qq.com/pa?p=1:20989163:11&qu...

经验教程

245

收藏

95
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部