热门:网页模板.net视频教程JQueryMVCjsonExtJs源码示例三级联动JQuery菜单
您现在的位置:.Net中文社区>> .Net编程>>正文内容

C#简单实现渐显弹出消息在"右下角"显示(附源码下载)

发布时间:2009年04月11日点击数: 未知

在右下角渐变的弹出一个提示框出来,有点类似于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) '淡入淡出效果

最后一个就是我要找的,遗憾的是只对Win2000有效。

 

另外还有一个要点是:如何让弹出的窗体在右下角:也很简单,供参考:

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

好了,关键代码都出来了,由于只是一个很小的功能demo,没怎么具体优化。这里只供提供一种思路。有兴趣的朋友可以自己去进行扩展。参考资料《利用 C# 实现任务栏通知窗口

本站热点业务

更多模板/案例展示

关于我们 | 联系我们 | 团队日志 | 网站地图 | 网站合作