79 lines
3.2 KiB
C++
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_ */
|
|
|