windows-nt/Source/XPSP1/NT/shell/ext/gina/dimmedwindow.h
2020-09-26 16:20:57 +08:00

79 lines
3.2 KiB
C++

// --------------------------------------------------------------------------
// Module Name: DimmedWindow.h
//
// Copyright (c) 2000, Microsoft Corporation
//
// Class that implements the dimmed window when displaying logoff / shut down
// dialog.
//
// History: 2000-05-18 vtan created
// --------------------------------------------------------------------------
#ifndef _DimmedWindow_
#define _DimmedWindow_
#include "unknwn.h"
// --------------------------------------------------------------------------
// CDimmedWindow::CDimmedWindow
//
// Purpose: Implements the dimmed window feature for the turn off dialog.
//
// History: 2000-05-17 vtan created
// --------------------------------------------------------------------------
class CDimmedWindow : public IUnknown
{
private:
CDimmedWindow (void);
CDimmedWindow (const CDimmedWindow& copyObject);
const CDimmedWindow& operator = (const CDimmedWindow& assignObject);
virtual ~CDimmedWindow (void);
public:
CDimmedWindow (HINSTANCE hInstance);
public:
// IUnknown methods
virtual HRESULT STDMETHODCALLTYPE QueryInterface (REFIID riid, void* *ppvObject);
virtual ULONG STDMETHODCALLTYPE AddRef (void);
virtual ULONG STDMETHODCALLTYPE Release (void);
HWND Create (void);
void SetupDim();
BOOL StepDim();
void Dither();
private:
int GetLowestScreenBitDepth (void) const;
bool IsForcedDimScreen (void) const;
bool IsDimScreen (void) const;
static LRESULT CALLBACK WndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
private:
LONG _lReferenceCount;
const HINSTANCE _hInstance;
ATOM _atom;
HWND _hwnd;
int _xVirtualScreen,
_yVirtualScreen,
_cxVirtualScreen,
_cyVirtualScreen;
bool _fDithered;
HDC _hdcDimmed;
HBITMAP _hbmOldDimmed;
HBITMAP _hbmDimmed;
void* _pvPixels;
int _idxChunk;
int _idxSaturation;
private:
static const TCHAR s_szWindowClassName[];
static const TCHAR s_szExplorerKeyName[];
static const TCHAR s_szExplorerPolicyKeyName[];
static const TCHAR s_szForceDimValueName[];
};
#endif /* _DimmedWindow_ */