Delphi 寫的歡迎界面 類似 WinRAR 按鈕

        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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章