199 lines
8.3 KiB
C
199 lines
8.3 KiB
C
/*****************************************************************************\
|
|
* *
|
|
* scrnsave.h Windows NT 3.1 screensaver defines and definitions. *
|
|
* *
|
|
* Version 1.0 *
|
|
* *
|
|
* NOTE: windows.h must be #included first *
|
|
* *
|
|
* Windows NT NOTE: (Differences from Win 3.1 Screensavers) *
|
|
* *
|
|
* All Screensavers are required to have a Description string *
|
|
* of no more than 25 chars for display by the Control Panel's *
|
|
* Desktop applet. This is string 1 in the resource string *
|
|
* table of the Windows 32-bit screen saver .SCR (.EXE) file. *
|
|
* *
|
|
* Passwords for Windows NT Screen Savers are handled by the *
|
|
* Winlogon process. If the registry value: *
|
|
* *
|
|
* HKEY_CURRENT_USER\Control Panel\Desktop\ScreenSaverIsSecure *
|
|
* *
|
|
* is nonzero, Winlogon will ask for the User's login password *
|
|
* before allowing the Screen Saver to exit. All password data *
|
|
* and dialogs have been removed from individual Screensavers. *
|
|
* *
|
|
* *
|
|
* Copyright (c) 1992-1999, Microsoft Corp. All rights reserved. *
|
|
* *
|
|
\*****************************************************************************/
|
|
|
|
#ifndef _INC_SCRNSAVE
|
|
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
|
|
#define _INC_SCRNSAVE
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif
|
|
|
|
#include <pshpack1.h> /* Assume byte packing throughout */
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" { /* Assume C declarations for C++ */
|
|
#endif /* __cplusplus */
|
|
|
|
|
|
/* MANDATORY string required in .RC file
|
|
* This string should contain a less than 25 char name/description of the
|
|
* screen saver. This string is what will be seen by the user in the Control
|
|
* Panel's Desktop applet screen saver listbox.
|
|
*/
|
|
|
|
#define IDS_DESCRIPTION 1
|
|
|
|
/* Icon resource ID.
|
|
*
|
|
* This should be the first icon used and must have this resource number.
|
|
* This is needed as the first icon in the file will be grabbed
|
|
*/
|
|
#define ID_APP 100
|
|
#define DLG_SCRNSAVECONFIGURE 2003
|
|
|
|
#define idsIsPassword 1000
|
|
#define idsIniFile 1001
|
|
#define idsScreenSaver 1002
|
|
#define idsPassword 1003
|
|
#define idsDifferentPW 1004
|
|
#define idsChangePW 1005
|
|
#define idsBadOldPW 1006
|
|
#define idsAppName 1007
|
|
#define idsNoHelpMemory 1008
|
|
#define idsHelpFile 1009
|
|
#define idsDefKeyword 1010
|
|
|
|
/* This function is the Window Procedure for the screen saver. It is
|
|
* up to the programmer to handle any of the messages that wish to be
|
|
* interpretted. Any unused messages are then passed back to
|
|
* DefScreenSaverProc if desired which will take default action on any
|
|
* unprocessed message...
|
|
*/
|
|
#ifdef UNICODE
|
|
LRESULT WINAPI ScreenSaverProcW (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
|
|
# define ScreenSaverProc ScreenSaverProcW
|
|
#else
|
|
LRESULT WINAPI ScreenSaverProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
|
|
#endif
|
|
|
|
/* This function performs default message processing. Currently handles
|
|
* the following messages:
|
|
*
|
|
* WM_SYSCOMMAND: return FALSE if wParam is SC_SCREENSAVE or SC_CLOSE
|
|
*
|
|
* WM_DESTROY: PostQuitMessage(0)
|
|
*
|
|
* WM_SETCURSOR: By default, this will set the cursor to a null cursor,
|
|
* thereby removing it from the screen.
|
|
*
|
|
* WM_LBUTTONDOWN:
|
|
* WM_MBUTTONDOWN:
|
|
* WM_RBUTTONDOWN:
|
|
* WM_KEYDOWN:
|
|
* WM_KEYUP:
|
|
* WM_MOUSEMOVE: By default, these will cause the program to terminate.
|
|
* Unless the password option is enabled. In that case
|
|
* the DlgGetPassword() dialog box is brought up.
|
|
*
|
|
* WM_NCACTIVATE:
|
|
* WM_ACTIVATEAPP:
|
|
* WM_ACTIVATE: By default, if the wParam parameter is FALSE (signifying
|
|
* that transfer is being taken away from the application),
|
|
* then the program will terminate. Termination is
|
|
* accomplished by generating a WM_CLOSE message. This way,
|
|
* if the user sets something up in the WM_CREATE, a
|
|
* WM_DESTROY will be generated and it can be destroyed
|
|
* properly.
|
|
* This message is ignored, however is the password option
|
|
* is enabled.
|
|
*/
|
|
LRESULT WINAPI DefScreenSaverProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
|
|
/* A function is also needed for configuring the screen saver. The function
|
|
* should be exactly like it is below and must be exported such that the
|
|
* program can use MAKEPROCINSTANCE on it and call up a dialog box. Further-
|
|
* more, the template used for the dialog must be called
|
|
* ScreenSaverConfigure to allow the main function to access it...
|
|
*/
|
|
BOOL WINAPI ScreenSaverConfigureDialog (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
|
|
|
|
/* To allow the programmer the ability to register child control windows, this
|
|
* function is called prior to the creation of the dialog box. Any
|
|
* registering that is required should be done here, or return TRUE if none
|
|
* is needed...
|
|
*/
|
|
BOOL WINAPI RegisterDialogClasses (HANDLE hInst);
|
|
|
|
/* The following functions are called by DefScreenSaverProc and must
|
|
* be exported by all screensavers using this model.
|
|
*/
|
|
|
|
/*
|
|
* There are only three other points that should be of notice:
|
|
* 1) The screen saver must have a string declared as 'szAppName' contaning the
|
|
* name of the screen saver, and it must be declared as a global.
|
|
* 2) The screen saver EXE file should be renamed to a file with a SCR
|
|
* extension so that the screen saver dialog from the control panel can
|
|
* find it when is searches for screen savers.
|
|
*/
|
|
#define WS_GT (WS_GROUP | WS_TABSTOP)
|
|
|
|
#define MAXFILELEN 13
|
|
#define TITLEBARNAMELEN 40
|
|
#define APPNAMEBUFFERLEN 40
|
|
#define BUFFLEN 255
|
|
|
|
/* The following globals are defined in scrnsave.lib */
|
|
extern HINSTANCE hMainInstance;
|
|
extern HWND hMainWindow;
|
|
extern BOOL fChildPreview;
|
|
extern TCHAR szName[TITLEBARNAMELEN];
|
|
extern TCHAR szAppName[APPNAMEBUFFERLEN];
|
|
extern TCHAR szIniFile[MAXFILELEN];
|
|
extern TCHAR szScreenSaver[22];
|
|
extern TCHAR szHelpFile[MAXFILELEN];
|
|
extern TCHAR szNoHelpMemory[BUFFLEN];
|
|
extern UINT MyHelpMessage;
|
|
|
|
/* OPTIONAL - Win95 Only */
|
|
|
|
#define SCRM_VERIFYPW WM_APP
|
|
/*
|
|
* This message is sent to the main screen saver window when password
|
|
* protection is enabled and the user is trying to close the screen saver. You
|
|
* can process this message and provide your own validation technology. If you
|
|
* process this message, you should also support the ScreenSaverChangePassword
|
|
* function, described below. Return zero from this message if the password
|
|
* check failed. Return nonzero for success. If you run out of memory or
|
|
* encounter a similar class of error, return non-zero so the user isn't left
|
|
* out in the cold. The default action is to call the Windows Master
|
|
* Password Router to validate the user's password.
|
|
*/
|
|
|
|
void WINAPI ScreenSaverChangePassword( HWND hParent );
|
|
/*
|
|
* You supply this if you provide your own authentication. Windows will call
|
|
* it when the user wants to change the password. An implementation of this
|
|
* function should present password change UI to the user.
|
|
* You should only supply this function if you also hook the SCRM_VERIFYPW
|
|
* message to validate passwords.
|
|
* The default action is to call the Windows Master Password Router.
|
|
*/
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
#include <poppack.h>
|
|
|
|
#pragma option pop /*P_O_Pop*/
|
|
#endif /* !_INC_SCRNSAVE */
|