用制作的消息提示窗口
用过和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);
}
根据你设的定时器的长短来控制窗口的显示过程;
南昌妇科习惯性流产治疗哪家好广州白癜风医院哪家医院好
小孩子厌食不吃饭怎么办
- 上一篇:项目进程改进为何失败计划
- 下一篇:用制作自动登陆软件物业
-
狗狗挤肛门腺的方法位置
菜谱2022年06月17日
-
狗狗挠眼睛的问题位置
菜谱2022年06月17日
-
狗狗得了青光眼怎么医治位置
菜谱2022年06月17日
-
狗狗得了青光眼怎么办图位置
菜谱2022年06月17日
-
狗狗得了血管瘤怎么办图位置
菜谱2022年06月17日