Пример работы с функцией AnimateWindow

Случайным образом наткнулся сегодня на интересную API функцию AnimateWindow.

BOOL AnimateWindow(HWND hwnd, DWORD dwTime,DWORD dwFlags);
HWND hwnd – дескриптор окна
DWORD dwTime – длительность анимации, в миллисекундах
DWORD dwFlags – тип анимации

Значения параметра dwFlags:

#define AW_HOR_POSITIVE 0x00000001
#define AW_HOR_NEGATIVE 0x00000002
#define AW_VER_POSITIVE 0x00000004
#define AW_VER_NEGATIVE 0x00000008
#define AW_CENTER 0x00000010
#define AW_HIDE 0x00010000
#define AW_ACTIVATE 0x00020000
#define AW_SLIDE 0x00040000
#define AW_BLEND 0x00080000

Для её использования необходимо создать приложение на основе диалога, на форму диалога добавьте кнопку и обработчик. В обработчике сообщения от кнопки добавьте следующий код:

typedef BOOL (WINAPI *ANIWIN)(HWND,DWORD,DWORD);
 
void CAnimateDlg::OnButton1()
{
        
        HMODULE  hMod = LoadLibrary("User32");
        if(hMod)
        {
                ANIWIN AniWin = NULL;
                AniWin = (ANIWIN)GetProcAddress(hMod,"AnimateWindow");
                if(AniWin)
                {
                        AniWin(this->m_hWnd,1000,AW_HIDE|AW_BLEND);
                        AniWin(this->m_hWnd,1000,AW_ACTIVATE|AW_BLEND);
                }
        }
 
        FreeLibrary(hMod);
}

Данную функцию можно использовать для придания эффектов Вашему приложению.