制作 MSN、QQ 的消息提示窗口
|
制作 MSN、QQ 的消息提示窗口 下载源代码 从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);
}
根据你设的定时器的长短来控制窗口的显示过程; 各种标志说明:
以上内容是从MSDN中摘录的,要淡入淡出的效果的话,用到AW_BELND。 |
- · Windows SDK笔记(四):模式对话框
- · 也谈如何隐藏显示在任务栏中的对话框程序
- · 一个托盘程序演示 -闹钟 Alert
- · think window procedure
- · 再谈 CFileDialog 对话框的定制
- · 获得 Win32 窗口句柄的更好的方法
- · 个人考勤软件开发实例配套代码 2.1版(Update…
- · 介绍一个操作DHTML表格的C++对象
- · Windows资源管理器Web视图界面
- · 为你的程序换个皮肤
- · 程序启动画面
- · 实现标题条的显示与隐藏
- · 在EVC3.0中创建MDI程序
- · 无模式对话框的创建与使用
- · 界面专家简介
- · 再谈客户区对话框拖动操作
- · Windows 2000/XP中对窗口进行透明化
- · 用线程实现动态改变图标
- · 不规则对话框的又一实现
- · 用SkinMagic工具包创建换皮肤程序
- · 最简单的界面增强库EasySkin
- · 在VC++.net中制作启动屏幕的新方法
- · 椭圆窗体的实现
- · 编写多文档应用程序
- · SkinLoad程序界面换肤工具
- · 如何在标题栏中显示动态图标
- · 自绘对话框
- · VC启动窗口画面制作方法研究
- · MFC应用程序中指针的使用
- · 如何隐藏显示在任务栏中的对话框程序
- · 一个效果很好的outlookbar控件CXTOutBarCtrl
- · 如何在对话框程序中使用动画控件
- · 形态各异的不规则窗体
- · 支持换肤功能的窗口实例
- · 如何给基于对话框的应用加启动画面
- · Convert CHtmlView to CHtmlCtrl(View与Frame…
- · 《Windows 程序设计》学习笔记(四)
- · 如何按非客户区移动窗体
