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 >
C/C++ Source or Header  |  1993-09-08  |  3KB  |  141 lines

  1.  
  2. /* bildschirmschoner-modul in C */
  3. /* achtung: ausführlichere beschreibung in ss_demo.pas */
  4.  
  5. #ifndef __LARGE__
  6. #error Large Model wird benötigt!
  7. #endif
  8.  
  9. /* Large Model kann bei anderen Compilern über andere Konstanten abgefragt
  10.    werden. Sie können natürlich auch die Abfrage komplett rausnehmen ... */
  11.  
  12.  
  13.  
  14. /*#define _RUN */
  15.  
  16. /* wenn _RUN definiert ist, kann eine normale .EXE-Datei erzeugt werden,
  17.    die sich einfacher debuggen läßt.
  18. */
  19.  
  20.  
  21. #include <windows.h>
  22.  
  23. #include <string.h>
  24.  
  25.  
  26. #define APIENTRY FAR _export PASCAL
  27. #define SHORT    short
  28. #define DUMMYREFERENCE(a) (a)=(a)
  29.  
  30.  
  31. typedef struct tagGLOBALS
  32. {
  33.   HANDLE hInstance;
  34. } GLOBALS;
  35.  
  36. GLOBALS globaldata;
  37.  
  38.  
  39. /* Prototyp für Funktion aus lm_util.dll */
  40.  
  41. BOOL LgdDefProc (LPLONG lRet, HWND hWnd, WORD msg, WORD wParam, LONG lParam);
  42.  
  43.  
  44.  
  45. /* Prototypen für Funktionen aus dieser Datei */
  46.  
  47. VOID APIENTRY    ScreenSaverID (LPWORD lpwMagic,
  48.                 LPLONG lplFunctions,
  49.                 LPSTR  lpchName,
  50.                 SHORT  cchName,
  51.                 LPSTR  lpchDesc,
  52.                 SHORT  cchDesc);
  53.  
  54. LONG APIENTRY    ScreenSaver (LONG lDuration, LONG lFlags);
  55.  
  56. VOID APIENTRY    ScreenSaverOptions (HWND hwnd);
  57.  
  58. VOID APIENTRY    ScreenSaverAbout   (HWND hwnd);
  59.  
  60.  
  61.  
  62. /* Prototyp für Funktion aus ss_cDem2.c */
  63.  
  64. LONG Blackness (LONG lDuration, LONG lFlags);
  65.  
  66.  
  67.  
  68. /* Implementierung */
  69.  
  70. VOID APIENTRY    ScreenSaverID (LPWORD lpwMagic,
  71.                 LPLONG lplFunctions,
  72.                 LPSTR  lpchName,
  73.                 SHORT  cchName,
  74.                 LPSTR  lpchDesc,
  75.                 SHORT  cchDesc)
  76. {
  77.   *lpwMagic = 0x6874;
  78.   *lplFunctions = 8 + 1;    /* 1: about, 2:options, 3:both */
  79.                         /* 4: erfordert nichtleeren bildschirm */
  80.                         /* 8: hinterläßt leeren bildschirm */   
  81.   strncpy (lpchName, "zC-Blackness", cchName-1);
  82.   /* das erste zeichen des namens wird nicht angezeigt, es legt
  83.     lediglich die sortierung fest. */
  84.  
  85.   if (cchName > 0)
  86.     lpchName [cchName-1] = 0;
  87.   /* strncpy erzeugt keine NULL-terminierten string, deshalb
  88.      sicherheitshalber ein NULL-Byte anfügen */
  89.  
  90.   strncpy (lpchDesc,
  91.        "Blackness:\n\nMacht den Bildschirm schwarz\n\nBeispiel eines einfachen Screen Savers\n",
  92.        cchDesc-1);
  93.   if (cchDesc > 0)
  94.     lpchName [cchDesc-1] = 0;
  95. }
  96.  
  97. LONG APIENTRY    ScreenSaver (LONG lDuration, LONG lFlags)
  98. {
  99.   /* Blackness in ss_cDem2.c */
  100.  
  101.   return Blackness (lDuration, lFlags);
  102. }
  103.  
  104. VOID APIENTRY    ScreenSaverOptions (HWND hwnd)
  105. {
  106.   DUMMYREFERENCE (hwnd);
  107. }
  108.  
  109. VOID APIENTRY    ScreenSaverAbout   (HWND hwnd)
  110. {
  111.   MessageBox (hwnd, "Beispiel zu 'The Lights Go Down'\n(C) 1992 Leo Minor",
  112.           "Blackness", MB_OK | MB_APPLMODAL);
  113. }
  114.  
  115.  
  116. #ifndef _RUN
  117. int FAR PASCAL LibMain( HANDLE hInstance,
  118.             WORD wDataSeg,
  119.             WORD wHeapSize,
  120.             LPSTR lpszCmdLine)
  121. {
  122.   DUMMYREFERENCE (wDataSeg);
  123.   DUMMYREFERENCE (wHeapSize);
  124.   DUMMYREFERENCE (lpszCmdLine);
  125.  
  126.   globaldata.hInstance = hInstance;
  127.   return 1;
  128. }
  129. #endif
  130.  
  131.  
  132. #ifdef _RUN
  133. int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance,
  134. LPSTR lpCmdLine, int nCmdShow)
  135. {
  136.   globaldata.hInstance = hInstance;
  137.  
  138.   ScreenSaver (20, 0);  /* für 20 Sekunden aktivieren */
  139. }
  140. #endif
  141.