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メソッドではフォームのフェードアウトや非表示などの操作はできません