winformフォームアプリケーションでフェードアウトなどの効果を実現
2332 ワード
#region
[System.Runtime.InteropServices.DllImport("user32")]
private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);
/*
* : 。 : 。
* :BOOL AnimateWindow(HWND hWnd,DWORD dwTime,DWORD dwFlags);
* hWnd: 。
* dwTime: ( ), 200 。
* dwFags: 。 。
* : , ; , 。
* : ; ; 。 , GetLastError 。
* : AW_HOR_POSITIVE AW_HOR_NEGTVE AW_VER_POSITVE AW_VER_NEGATIVE 。
* WM_PRINT WM_PRINTCLIENT 。 , , WM_PRINTCLIENT , WM_PRINT 。
* :WIDdOWS NT:5.0 :Windows:98 ;Windows CE: ; :Winuser.h; :user32.lib。
*/
// :
const int AW_SLIDE = 0x40000;// 。 。 AW_CENTER , 。
const int AW_ACTIVATE = 0x20000;// 。 AW_HIDE 。
const int AW_BLEND = 0x80000;// 。 hWnd 。
const int AW_HIDE = 0x10000;// , 。( )
const int AW_CENTER = 0x0010;// AW_HIDE , ; AW_HIDE , 。
const int AW_HOR_POSITIVE = 0x0001;// 。 。 AW_CENTER , 。
const int AW_VER_POSITIVE = 0x0004;// 。 。 AW_CENTER , 。
const int AW_HOR_NEGATIVE = 0x0002;// 。 。 AW_CENTER , 。
const int AW_VER_NEGATIVE = 0x0008;// 。 。 AW_CENTER , 。
#endregion
参照:
private void U_Welcome_Load(object sender, EventArgs e)
{
AnimateWindow(this.Handle, 1000, AW_VER_POSITIVE); //
this.timer1.Start(); //
this.timer1.Interval = 1000; //
}
static int myCount = 1;
private void timer1_Tick(object sender, EventArgs e)
{
if (myCount <= 3)
{
myCount++;
return;
}
this.timer1.Enabled = false;
AnimateWindow(this.Handle, 1000, AW_HIDE | AW_BLEND); //
U_MainForm uMain = new U_MainForm();
uMain.Show();
}
注意:Loadメソッドではフォームのフェードアウトや非表示などの操作はできません