C#:實現窗口動畫

使用函數:AnimateWindowhtml

說明:該函數能在顯示與隱藏窗口時能產生特殊的效果。函數

函數原型:動畫

  BOOL AnimateWindow(HWND hWnd,DWORD dwTime,DWORD dwFlags);this

  BOOL AnimateWindow(DWORD dwTime,DWORD dwFlags);spa

參數說明:code

hWnd:指定產生動畫的窗口的句柄。
dwTime:指明動畫持續的時間(以微秒計),完成一個動畫的標準時間爲200微秒。
dwFags:指定動畫類型。這個參數能夠是一個或多個下列標誌的組合。標誌描述:
AW_SLIDE:使用滑動類型。缺省則爲滾動動畫類型。當使用AW_CENTER標誌時,這個標誌就被忽略。
AW_ACTIVATE:激活窗口。在使用了AW_HIDE標誌後不要使用這個標誌。
AW_BLEND:使用淡出效果。只有當hWnd爲頂層窗口的時候才能夠使用此標誌。
AW_HIDE:隱藏窗口,缺省則顯示窗口。
AW_CENTER:若使用了AW_HIDE標誌,則使窗口向內重疊;若未使用AW_HIDE標誌,則使窗口向外擴展。
AW_HOR_POSITIVE:自左向右顯示窗口。該標誌能夠在滾動動畫和滑動動畫中使用。當使用AW_CENTER標誌時,該標誌將被忽略。
AW_VER_POSITIVE:自頂向下顯示窗口。該標誌能夠在滾動動畫和滑動動畫中使用。當使用AW_CENTER標誌時,該標誌將被忽略。
AW_VER_NEGATIVE:自下向上顯示窗口。該標誌能夠在滾動動畫和滑動動畫中使用。當使用AW_CENTER標誌時,該標誌將被忽略。
AW_HOR_NEGATIVE:自右向左顯示窗口。該標誌能夠在滾動動畫和滑動動畫中使用。當使用AW_CENTER標誌時,該標誌將被忽略。
各個數值:
const Int32 AW_HOR_POSITIVE = 0x00000001;  
  const Int32 AW_HOR_NEGATIVE = 0x00000002;  
  const Int32 AW_VER_POSITIVE = 0x00000004;  
  const Int32 AW_VER_NEGATIVE = 0x00000008;  
  const Int32 AW_CENTER = 0x00000010;  
  const Int32 AW_HIDE = 0x00010000;  
  const Int32 AW_ACTIVATE = 0x00020000;  
  const Int32 AW_SLIDE = 0x00040000;  
  const Int32 AW_BLEND = 0x00080000;   
返回值:
若是函數成功,返回值爲非零;若是函數失敗,返回值爲零。在下列狀況下函數將失敗:
窗口使用了窗口邊界;窗口已經可見仍要顯示窗口;窗口已經隱藏仍要隱藏窗口。
備註:
能夠將AW_HOR_POSITIVE或AW_HOR_NEGTVE與AW_VER_POSITVE或AW_VER_NEGATIVE組合來激活一個窗口。可能須要在該窗口的窗口過程和它的子窗口的窗口過程當中處理WM_PRINT或WM_PRINTCLIENT消息。對話框,控制,及共用控制已處理WM_PRINTCLIENT消息,缺省窗口過程也已處理WM_PRINT消息。
 
速查:
WINDOWS NT:5.0以上版本:Windows:98以上版本;Windows CE:不支持;頭文件:Winuser.h;庫文件:user32.lib。
 
例子:
在C#中,使用AnimateWindow須要導入:using System.Runtime.InteropServices;
接着,在程序中寫入該函數相關的數據:
[DllImport("user32.dll", EntryPoint = "AnimateWindow")]//或[DllImport("user32.dll", CharSet=CharSet.Auto)] 或[DllImport("user32.dll")] 
        private static extern bool AnimateWindow(IntPtr handle, int ms, int flags);
        public const Int32 AW_HOR_POSITIVE = 0x00000001;
        public const Int32 AW_HOR_NEGATIVE = 0x00000002;
        public const Int32 AW_VER_POSITIVE = 0x00000004;
        public const Int32 AW_VER_NEGATIVE = 0x00000008;
        public const Int32 AW_CENTER = 0x00000010;
        public const Int32 AW_HIDE = 0x00010000;
        public const Int32 AW_ACTIVATE = 0x00020000;
        public const Int32 AW_SLIDE = 0x00040000;
        public const Int32 AW_BLEND = 0x00080000; 
而後,在該窗體中調用便可,例如:
AnimateWindow(this.Handle, 300, AW_CENTER);//從裏向外顯示
 AnimateWindow(this.Handle, 300, AW_HIDE + AW_CENTER);//向內消失效果
                            //可用「+」將效果連接起來
 
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;//窗體效果須要該包

namespace 軟件項目管理系統
{
    public partial class LoginForm : Form
    {
        //窗體彈出或消失效果
        [DllImport("user32.dll", EntryPoint = "AnimateWindow")]
        private static extern bool AnimateWindow(IntPtr handle, int ms, int flags);
        public const Int32 AW_HOR_POSITIVE = 0x00000001;
        public const Int32 AW_HOR_NEGATIVE = 0x00000002;
        public const Int32 AW_VER_POSITIVE = 0x00000004;
        public const Int32 AW_VER_NEGATIVE = 0x00000008;
        public const Int32 AW_CENTER = 0x00000010;
        public const Int32 AW_HIDE = 0x00010000;
        public const Int32 AW_ACTIVATE = 0x00020000;
        public const Int32 AW_SLIDE = 0x00040000;
        public const Int32 AW_BLEND = 0x00080000;
  
        public LoginForm()
        {
            InitializeComponent();

            //窗體彈出效果
            AnimateWindow(this.Handle, 300, AW_CENTER);
        }

        //「關閉按鈕」事件
        private void button1_Click(object sender, EventArgs e)
        {
            //窗體彈出效果
            AnimateWindow(this.Handle, 300, AW_HIDE + AW_CENTER);

            Application.Exit();
        }
    }
}

 

摘自:http://www.cnblogs.com/KeenLeung/archive/2013/05/19/3087728.htmlorm

相關文章
相關標籤/搜索