您的位置:首页 > 编程语言 > C#

C#实现仿QQ消息窗口

2009-06-04 16:50 375 查看
右下角渐变的弹出一个提示框出来,有点类似于QQ或MSN那消息提示功能.

下面是主要的代码:(主要是调用了系统的API函数实现渐变效果)。其实就是调用了这个函数产生了渐变效果,从下往上显示


[DllImport("user32")]


private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);


const int AW_HOR_POSITIVE = 0x0001;


const int AW_HOR_NEGATIVE = 0x0002;


const int AW_VER_POSITIVE = 0x0004;


const int AW_VER_NEGATIVE = 0x0008;


const int AW_CENTER = 0x0010;


const int AW_HIDE = 0x10000;


const int AW_ACTIVATE = 0x20000;


const int AW_SLIDE = 0x40000;


const int AW_BLEND = 0x80000;
调用代码就省略了哈。

下面是这个API函数的相关说明(参考网络其他资源)

//添加引用
using System.Runtime.InteropServices;
//声明API
[DllImport("user32")]
private static extern bool AnimateWindow(IntPtr hwnd,int dwTime, int dwFlags);
const int AW_HOR_POSITIVE = 0x0001;
const int AW_HOR_NEGATIVE = 0x0002;
const int AW_VER_POSITIVE = 0x0004;
const int AW_VER_NEGATIVE = 0x0008;
const int AW_CENTER = 0x0010;
const int AW_HIDE = 0x10000;
const int AW_ACTIVATE = 0x20000;
const int AW_SLIDE = 0x40000;
const int AW_BLEND = 0x80000;
//窗体加载时的动画效果API
AnimateWindow(this.Handle,1000, AW_VER_NEGATIVE |AW_ACTIVATE);//从下到上且不占其它程序焦点

/*下面是AnimateWindow的具体说明
AnimateWindow API
函数AnimateWindow.
尽管MSDN页面上说这个函数是Win2000的最新函数,但经网友证实在Win98里就已经有这个函数了:
Private Declare Function AnimateWindow Lib "user32" (ByVal hwnd As Long, ByVal dwTime As Long, ByVal dwFlags As Long) As Long

其中:
   hwnd只对Form有效,其他像Picture1都无法产生效果。
   dwTime是动画持续的时间,默认为200。
   dwFlags可取以下值:
     AW_HOR_POSITIVE ( &H1 ) '从左到右打开窗口
     AW_HOR_NEGATIVE ( &H2 ) '从右到左打开窗口
     AW_VER_POSITIVE ( &H4 ) '从上到下打开窗口
     AW_VER_NEGATIVE ( &H8 ) '从下到上打开窗口
     AW_CENTER    ( &H10 ) '看不出任何效果
     AW_HIDE     (&H10000) '在窗体卸载时若想使用本函数就得加上此常量
     AW_ACTIVATE   (&H20000) '在窗体通过本函数打开后,默认情况下会失去焦点,除非加上本常量
     AW_SLIDE     (&H40000) '看不出任何效果
     AW_BLEND     (&H80000) '淡入淡出效果

将页面固定在右下角:

public Form2()
{
InitializeComponent();
int x = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Size.Width - this.Width;
int y = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Size.Height - this.Height;
this.SetDesktopLocation(x, y);
}

ok,这样就可以了,试试看!

补充下例子的下载地址:http://download.csdn.net/source/3286786
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: