C#实现仿QQ消息窗口

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

你可能感兴趣的:(C#实现仿QQ消息窗口)