2009/03/30

윈도우가 보여지고 사라질때 에니메이션 효과 주기

AnimateWindow

윈도우에 효과를 주어 사라지고 등장하게 해 주는 API 이다.



함수 설명 ( 출처 : MSDN )

Syntax

BOOL AnimateWindow(
HWND hwnd,
DWORD dwTime,
DWORD dwFlags
);

Parameter 설명 보기



첫 번째 인자인 hwnd 는 효과를 적용하기위한 윈도우의 핸들이다.

두 번째 인자인 dwTime 은 지정된 효과를 수행할 시간으로 밀리세컨드 단위로 입력한다. 입력값이 작을 수록 에니메이션 효과의 시간이 짧아 지므로 에니메이션이 빠르게 동작한다.

세 번째 인자는 효과의 종류이다.


  • AW_SLIDE : 기본 인자로 에니메이션 효과를 의미하며 생략해도 슬리이딩 효과가 있는 것 같다. AW_CENTER 가 함께 적용되면 무시된다.

  • AW_ACTIVATE : 윈도우을 활성화 한다. AW_HIDE와 사용하지 않는다.

  • AW_BLEND : Fading 효과

  • AW_HIDE : 윈도우를 사라지게 한다.

  • AW_CENTER : 윈도우의 가운데 점을 기준으로 효과를 적용한다.

  • AW_HOR_POSITIVE : 윈도우를 좌에서 우로 사라지게 또는 보이게 함.

  • AW_HOR_NEGATIVE : 윈도우를 우에서 좌로 사라지게 또는 보이게 함.

  • AW_VER_POSITIVE : 윈도우를 위에서 아래로 사라지게 또는 보이게 함.

  • AW_VER_NEGATIVE : 윈도우를 아래에서 위로 사라지게 또는 보이게 함.


아래 소스는 이 글 위에 포함되어 있는 플래시를 만들면서 작성한 코드이다.

//---------------------------------------------------------------------------
void __fastcall TfrmMain::btnBlendClick(TObject *Sender)
{
// Blending
AnimateWindow( Handle, 1000, AW_HIDE | AW_BLEND );
Sleep(1000);
AnimateWindow( Handle, 1000, AW_SLIDE | AW_BLEND );
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::btnCenterClick(TObject *Sender)
{
// Center
AnimateWindow( Handle, 1000, AW_HIDE | AW_CENTER );
Sleep(1000);
AnimateWindow( Handle, 1000, AW_SLIDE | AW_CENTER );
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::btnHPosClick(TObject *Sender)
{
// Horizontal Positive
AnimateWindow( Handle, 1000, AW_HIDE | AW_HOR_POSITIVE );
Sleep(1000);
AnimateWindow( Handle, 1000, AW_SLIDE | AW_HOR_POSITIVE );
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::btnHNegClick(TObject *Sender)
{
// Horizontal Negative
AnimateWindow( Handle, 1000, AW_HIDE | AW_HOR_NEGATIVE );
Sleep(1000);
AnimateWindow( Handle, 1000, AW_SLIDE | AW_HOR_NEGATIVE );
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::btnVPosClick(TObject *Sender)
{
// Vertical Positive
AnimateWindow( Handle, 1000, AW_HIDE | AW_VER_POSITIVE );
Sleep(1000);
AnimateWindow( Handle, 1000, AW_SLIDE | AW_VER_POSITIVE );
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::btnVNegClick(TObject *Sender)
{
// Vertical Negative
AnimateWindow( Handle, 1000, AW_HIDE | AW_VER_NEGATIVE );
Sleep(1000);
AnimateWindow( Handle, 1000, AW_SLIDE | AW_VER_NEGATIVE );
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::btnHPosVPosClick(TObject *Sender)
{
AnimateWindow( Handle, 1000, AW_HIDE | AW_HOR_POSITIVE | AW_VER_POSITIVE );
Sleep(1000);
AnimateWindow( Handle, 1000, AW_SLIDE | AW_HOR_POSITIVE | AW_VER_POSITIVE );
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::btnHNegVNegClick(TObject *Sender)
{
AnimateWindow( Handle, 1000, AW_HIDE | AW_HOR_NEGATIVE | AW_VER_NEGATIVE );
Sleep(1000);
AnimateWindow( Handle, 1000, AW_SLIDE | AW_HOR_NEGATIVE | AW_VER_NEGATIVE );
}
//---------------------------------------------------------------------------



Original Post : http://neodreamer-dev.tistory.com/275

No comments :

Post a Comment