小问题请教!
小弟有一问题向大家请教:怎么样实现界面的淡入淡出?谢谢! 问题点数:0、回复次数:1Top
1 楼3996906(我只是建议,不提供最后的解决方法)回复于 2004-12-01 18:27:47 得分 0
都贴了吧,以前收的
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
this->AlphaBlend = true;
this->AlphaBlendValue = 255;
Timer1->Internal = 200;
Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1OnTimer(TObject *Sender)
{
AlphaBlendValue--;
if(AlphaBlendValue==0)Timer1->Enabled = false;
}
//---------------------------------------------------------------------------
111111111111111111111111111111111111111111111111111111111111
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
AnimateWindow(Form1->Handle, 2000, AW_ACTIVATE | AW_BLEND );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
AnimateWindow(Form1->Handle, 2000, AW_HIDE | AW_BLEND );
}
//---------------------------------------------------------------------------
22222222222222222222222222222222222222222222222222222222222222222
#define NUM 50
void FormAnimate(HWND hWnd, BOOL Close)
{
int W, H;
HRGN hRgn;
RECT Rect;
UINT uDelay;
GetWindowRect(hWnd, &Rect);
W = Rect.right - Rect.left;
H = Rect.bottom - Rect.top;
for(int n=0; n<=NUM; n++) {
int dx = (W/2) * n / NUM;
int dy = (H/2) * n / NUM;
if (!Close)
hRgn = CreateRectRgn(
W/2-dx, H/2-dy, W
/2+dx, H/2+dy);
else
hRgn = CreateRectRgn(
dx, dy, W-dx, H-
dy);
SetWindowRgn(hWnd, hRgn,
TRUE);
UpdateWindow(hWnd);
DeleteObject(hRgn);
Sleep(500/NUM);
}
}
void __fastcall TForm1::FormActivate(TObject *Sender)
{
if (Tag == 0) {
Tag = 1; FormAnimate(Handle, false);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
Tag = 0; FormAnimate(Handle, true);
}
Top




