用制作的消息提示窗口

菜谱 2021年09月06日

用过和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=p;

int x=ft;

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

}

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

南昌妇科习惯性流产治疗哪家好
广州白癜风医院哪家医院好
小孩子厌食不吃饭怎么办
友情链接: 最全的凯里美食攻略