windows-nt/Source/XPSP1/NT/multimedia/opengl/scrsave/common/glscrnsv.hxx
2020-09-26 16:20:57 +08:00

71 lines
2.1 KiB
C++

/******************************Module*Header*******************************\
* Module Name: glscrnsv.hxx
*
* Defines and externals for screen saver common shell
*
* Copyright (c) 1996 Microsoft Corporation
*
\**************************************************************************/
#ifndef __glscrnsv_hxx__
#define __glscrnsv_hxx__
#include "sscommon.h"
#include "sswproc.hxx"
#include "palette.hxx"
// Screen saver mode types
enum {
SS_TYPE_FULLSCREEN = 0, // full-screen (/s)
SS_TYPE_PREVIEW, // child preview (/p)
SS_TYPE_NORMAL, // normal window (/w)
SS_TYPE_CONFIG // config dialog (/c), ()
};
// Various flags
#define SS_PALETTE_TAKEOVER (1 << 0)
/**************************************************************************\
* SCRNSAVE
*
\**************************************************************************/
class SCRNSAVE {
public:
PSSW psswMain; // top level window
PSSW psswGL; // the window running GL (temporary)
BOOL bInForeground; // TRUE if ss is in foreground (has focus)
int type; // type (e.g. /s, /p, /c)
SS_PAL *pssPal; // global palette
PSSC pssc; // client screen saver configuration request
SS_GL_CONFIG GLc; // GL configuration (for old style)
SSW_TABLE sswTable; // table of HWND/PSSW pairs
HBRUSH hbrBg; // global bg brush
int flags; // various flags
SCRNSAVE( int type, LPARAM lParam );
SCRNSAVE( int type );
~SCRNSAVE();
BOOL SetupInitialWindows();
PSSW CreateChildWindow( FLOATER_INFO *pFloater );
PSSW CreateChildWindow( PSSW psswParent, FLOATER_INFO *pFloater );
BOOL bInBackground() { return !bInForeground; }
BOOL bResSwitch;
#ifdef SS_DEBUG
SS_TIMER timer;
BOOL bDoTiming;
#endif
private:
void Init(); // called by constructors
LPARAM initParam; // param passed in at startup
BOOL CreateInitialWindows();
BOOL CreateMainWindow();
void CloseWindows();
};
// one and only screen saver instance
extern SCRNSAVE *gpss;
#endif // __glscrnsv_hxx__