制作 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);