來自:http://baike.baidu.com/view/1080291.htm
使用函數:AnimateWindow
說明:該函數能在顯示與隱藏窗口時能產生特殊的效果。
函數原型:
BOOL AnimateWindow(HWND hWnd,DWORD dwTime,DWORD dwFlags);
BOOL AnimateWindow(DWORD dwTime,DWORD dwFlags);
參數說明:
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;
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;
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(); } } }