PAPERINO.DPR
{Questo programma è il codice sorgente per la creazione
di uno screen saver per la piattaforma Microsoft Win32}
program paperino;
{$E scr} {Direttiva per settare l'estensione del file compilato}
{$R Paperino.res}
{$R SSRes.res}
uses GlobalInit,
GlobalVar,
SysUtils,
Windows,
Messages,
Classes,
SSavRoutine,
Preview,
Registry;
{$D SCRNSAVE:paperino}
{INTERFACE}
{Funzione principale del programma, gestisce il ciclo dei messaggi
si è scelta la gestione tramite Message Cracker}
function ScreenSaverProc(HWindow: HWND;
AMessage,
WParam: Word;
LParam: Longint): Longint;stdcall;export;forward;
{ Registra la classe Windows }
function WinRegister: boolean;forward;
{funzione per creare la finestra principale}
function WinCreate: HWnd;forward;
{setta le caratteristiche principali dello ScreenSaver}
procedure WinConfigure;forward;
{funzione per la gestione del ciclo dei messaggi del dialog
di configurazione, per la piccola dimensione, si è scelto
di gestire i messaggi in modo tradizionale (no message cracker)}
function DialogProc( HDlg :HWND; // handle del dialog box
AMessage :UINT; // messaggio
wParam :WPARAM; // primo parametro messaggio
lParam :LPARAM // secondo parametro messaggio
):BOOL;stdcall;export;forward;
{Handler dei messaggi}
procedure SS_OnSysCommand (HWin :HWnd; var AMsg :TWMSysCommand);forward;
procedure SS_OnKeyDown (HWin :HWnd; var AMsg :TWMKeyDown);forward;
procedure SS_OnSysKeyDown (HWin :HWnd; var AMsg :TWMSysKeyDown);forward;
procedure SS_OnMouseMove (HWin :HWnd; var AMsg :TWMMouseMove);forward;
procedure SS_OnLButtonDown (HWin :HWnd; var AMsg :TWMLButtonDown);forward;
procedure SS_OnMButtonDown (HWin :HWnd; var AMsg :TWMMButtonDown);forward;
procedure SS_OnRButtonDown (HWin :HWnd; var AMsg :TWMRButtonDown);forward;
procedure SS_OnDestroy (HWin :HWnd; var AMsg :TWMDestroy);forward;
procedure SS_OnTimer (HWin :HWnd; var AMsg :TWMTimer);forward;
procedure SS_OnPaint (HWin :HWnd; var AMsg :TWMPaint);forward;
{END INTERFACE}
{IMPLEMENTATION}
{$INCLUDE MessageHandler.inc}
{$INCLUDE MainRoutine.inc}
{END IMPLEMENTATION}
begin
case SaverMode of
ModeConfExpl: begin
EnableWindow (ConfigParent, False); // fa il dialogo modale
DialogBox(HInstance,'DLG_SCRNSAVECONFIGURE',ParamHandle,@DialogProc);
EnableWindow (ConfigParent, True); // riattiva la finestra
end;
ModeConf: begin
EnableWindow (ConfigParent, False); // fa il dialogo modale
DialogBox(HInstance,'DLG_SCRNSAVECONFIGURE',ParamHandle,@DialogProc);
EnableWindow (ConfigParent, True); // riattiva la finestra
end;
ModeExec: begin //modo Full Screen
if not WinRegister then
begin
MessageBox(0,Error1,nil,MB_OK);
Exit;
end;
HSSWnd:=WinCreate;
if HSSWnd = 0 then
begin
MessageBox(0,Error2,nil,MB_OK);
Exit;
end;
SSInit(200); //TimeOut Inizializza lo ScreenSaver
if (ConfigParent <> 0) then
SetForegroundWindow (ConfigParent);
WinConfigure;
while GetMessage(AMessage, 0, 0, 0) do //Ciclo dei messaggi
begin
TranslateMessage(AMessage);
DispatchMessage(AMessage);
end;
DestroyWindow(HSSWnd); //Distruzione della finestra Principale
if (SaverMode = ModeExec) and (ConfigParent <> 0) then
// riattiva la finestra prima della partenza
SetForegroundWindow (ConfigParent);
Halt(AMessage.WParam); //Uscita dal Programma
end;
ModePrev: begin
if ParamHandle <> 0 then
ExecPreview;
end;
ModeSetPwd:begin
if ParamHandle <> 0 then
ExecSetPwd;
end;
end;
Halt;
end.
This page hosted by
Get your own Free Home Page