home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Spiele Spiele Spiele 1
/
spiele-spiele-spiele-topware.iso
/
spiele
/
top5029
/
gepackt.exe
/
SDK
/
C
/
SS_CDEMO.C
< prev
next >
Wrap
C/C++ Source or Header
|
1993-09-08
|
3KB
|
141 lines
/* bildschirmschoner-modul in C */
/* achtung: ausführlichere beschreibung in ss_demo.pas */
#ifndef __LARGE__
#error Large Model wird benötigt!
#endif
/* Large Model kann bei anderen Compilern über andere Konstanten abgefragt
werden. Sie können natürlich auch die Abfrage komplett rausnehmen ... */
/*#define _RUN */
/* wenn _RUN definiert ist, kann eine normale .EXE-Datei erzeugt werden,
die sich einfacher debuggen läßt.
*/
#include <windows.h>
#include <string.h>
#define APIENTRY FAR _export PASCAL
#define SHORT short
#define DUMMYREFERENCE(a) (a)=(a)
typedef struct tagGLOBALS
{
HANDLE hInstance;
} GLOBALS;
GLOBALS globaldata;
/* Prototyp für Funktion aus lm_util.dll */
BOOL LgdDefProc (LPLONG lRet, HWND hWnd, WORD msg, WORD wParam, LONG lParam);
/* Prototypen für Funktionen aus dieser Datei */
VOID APIENTRY ScreenSaverID (LPWORD lpwMagic,
LPLONG lplFunctions,
LPSTR lpchName,
SHORT cchName,
LPSTR lpchDesc,
SHORT cchDesc);
LONG APIENTRY ScreenSaver (LONG lDuration, LONG lFlags);
VOID APIENTRY ScreenSaverOptions (HWND hwnd);
VOID APIENTRY ScreenSaverAbout (HWND hwnd);
/* Prototyp für Funktion aus ss_cDem2.c */
LONG Blackness (LONG lDuration, LONG lFlags);
/* Implementierung */
VOID APIENTRY ScreenSaverID (LPWORD lpwMagic,
LPLONG lplFunctions,
LPSTR lpchName,
SHORT cchName,
LPSTR lpchDesc,
SHORT cchDesc)
{
*lpwMagic = 0x6874;
*lplFunctions = 8 + 1; /* 1: about, 2:options, 3:both */
/* 4: erfordert nichtleeren bildschirm */
/* 8: hinterläßt leeren bildschirm */
strncpy (lpchName, "zC-Blackness", cchName-1);
/* das erste zeichen des namens wird nicht angezeigt, es legt
lediglich die sortierung fest. */
if (cchName > 0)
lpchName [cchName-1] = 0;
/* strncpy erzeugt keine NULL-terminierten string, deshalb
sicherheitshalber ein NULL-Byte anfügen */
strncpy (lpchDesc,
"Blackness:\n\nMacht den Bildschirm schwarz\n\nBeispiel eines einfachen Screen Savers\n",
cchDesc-1);
if (cchDesc > 0)
lpchName [cchDesc-1] = 0;
}
LONG APIENTRY ScreenSaver (LONG lDuration, LONG lFlags)
{
/* Blackness in ss_cDem2.c */
return Blackness (lDuration, lFlags);
}
VOID APIENTRY ScreenSaverOptions (HWND hwnd)
{
DUMMYREFERENCE (hwnd);
}
VOID APIENTRY ScreenSaverAbout (HWND hwnd)
{
MessageBox (hwnd, "Beispiel zu 'The Lights Go Down'\n(C) 1992 Leo Minor",
"Blackness", MB_OK | MB_APPLMODAL);
}
#ifndef _RUN
int FAR PASCAL LibMain( HANDLE hInstance,
WORD wDataSeg,
WORD wHeapSize,
LPSTR lpszCmdLine)
{
DUMMYREFERENCE (wDataSeg);
DUMMYREFERENCE (wHeapSize);
DUMMYREFERENCE (lpszCmdLine);
globaldata.hInstance = hInstance;
return 1;
}
#endif
#ifdef _RUN
int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
globaldata.hInstance = hInstance;
ScreenSaver (20, 0); /* für 20 Sekunden aktivieren */
}
#endif