Delphi编写的,欢迎界面窗口渐渐向下弹出,然后在屏幕上加了类似 WinRAR 功能按钮。
program Project1;
uses
{$IFDEF WIN32} Windows {$ELSE} WinProcs {$ENDIF}, SysUtils,
messages, ShellAPI;
{$R *.res}
var
mesWin1, Edit1, tarWin1, tmpWin1 : LongWord;
HImage, HButton : Array [Byte] of HWND;
hThread1, HTimer1, hEvent1, ThProId1: Cardinal;
i1 , size1 : integer;
DueTime1 : Int64;
ProPChar1 : PChar;
winRect : TRect;
procedure TimerAPCProc(p1 : Pointer; lowValue, highValue : cardinal); stdcall;
Begin
SetWindowTextA(Edit1, 'Timer APC Proc over ');
end;
Function threadFun1(p: Pointer; h, LPARAM: LongInt):Boolean; stdcall;
begin
if SetWaitableTimer(HTimer1, DueTime1, 30000, @TimerAPCProc, nil, false) then
GetMem(ProPChar1, 65535);
if WaitForSingleobjectEx(HTimer1, 3000, true) = 0 then SetWindowTextA(Edit1, 'WaitForHTimer1.');
tarWin1 := FindWindow(nil, 'hi');
if tarWin1 > 0 then ShowWindow(tarWin1 , 0)
else
while tarWin1 = 0 do
begin
CancelWaitableTimer(HTimer1);
if SetWaitableTimer(HTimer1, DueTime1, 30000, @TimerAPCProc, nil, false) then
GetMem(ProPChar1, 65535);
if WaitForSingleobjectEx(HTimer1, 3000, true) = 0 then SetWindowTextA(Edit1, 'WaitForHTimer1.');
tarWin1 := FindWindow(nil, 'hi');
end;
ShowWindow(tarWin1 , 0);
AnimateWindow(tarWin1, 3000, $00020000 or $00040000 or $00000004); // AW_HIDE or AW_SLIDE or AW_HOR_POSITIVE
if SignalObjectAndWait(hEvent1, HTimer1, 6000, true) then SetWindowTextA(Edit1, 'SignalObjectAndWaitHTimer1.')
else SignalObjectAndWait(hEvent1, HTimer1, 30000, false);
SetWindowTextA(Edit1, 'threadFun1 over .')
end;
Begin // main
HTimer1 := CreateWaitableTimerA(nil, false, 'Global/hTimer1');
hEvent1 := CreateEventA(nil, True, True, 'Global/hEvent1');
hThread1 := CreateThread(nil, 1024, @threadFun1, nil, 0, ThProId1);
Edit1 := CreateWindowExA($200, 'Edit', 'Edit', $10000000 or $C00000 or $80000 or $200000 or 4 or $40000 or $20000 or $10000, 2, 88, 300, 300, 0, 0, 0, nil);
tmpWin1 := GetDesktopWindow;
if GetWindowRect(tmpWin1, winRect) then
for i1 := 1 to 6 do begin
size1 := ( winRect.Right - winRect.Left ) div 6;
// HImage[i1] := CreateWindowExA(0, 'Static' ,'image', $10000000 or $40000000 or $C00000 or {SS_BITMAP} 14, size1 * (i1 -1), 0, size1 - 6, size1 - 9, tmpWin1, 0, 0, nil);
// HButton[i1] := CreateWindowExA(0, 'Button', nil, $10000000 or $40000000 or $40000, 4, 28, 88, 36, HImage[i1], 0, 0, nil);
HButton[i1] := CreateWindowExA(0, 'Button' ,nil, $10000000 or $40000000 or $40000, size1 * (i1 -1), (size1 + 2), size1- 6, size1 - 9, tmpWin1, 0, 0, nil);
HImage[i1] := CreateWindowExA(0, 'Static', 'image', $10000000 or $40000000 or $C00000 or {SS_BITMAP} 14, 4, 2, 88, 36, HButton[i1], 0, 0, nil);
end;
mesWin1 := messageBoxA(0, '特效消息窗口欢迎界面', 'hi', 1);
CancelWaitableTimer(HTimer1);
CloseHandle(hEvent1);
CloseHandle(HTimer1);
CloseHandle(hThread1);
freeMem(ProPChar1);
PostQuitMessage(0);
end.