You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
171 lines
5.3 KiB
171 lines
5.3 KiB
// --------------------------------------------------------------------------
|
|
// Module Name: ThemeSection.cpp
|
|
//
|
|
// Copyright (c) 2000, Microsoft Corporation
|
|
//
|
|
// Class that wraps CUxThemeFile. CUxThemeFile automatically closes the section
|
|
// member variable handle. This makes usage of the class difficult because
|
|
// it doesn't duplicate the handle but it takes ownership. It does declare
|
|
// the handle as a PUBLIC member variable so we capitalize on this poor
|
|
// design. This class wraps CUxThemeFile to make the life of users of this
|
|
// class easier by not having them worry about closing the handles or not.
|
|
// When you use this class the handle is NOT closed.
|
|
//
|
|
// History: 2000-11-22 vtan created
|
|
// --------------------------------------------------------------------------
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include "ThemeSection.h"
|
|
|
|
#define goto !!DO NOT USE GOTO!! - DO NOT REMOVE THIS ON PAIN OF DEATH
|
|
|
|
// --------------------------------------------------------------------------
|
|
// CThemeSection::CThemeSection
|
|
//
|
|
// Arguments: <none>
|
|
//
|
|
// Returns: <none>
|
|
//
|
|
// Purpose: Constructor for CThemeSection.
|
|
//
|
|
// History: 2000-11-22 vtan created
|
|
// --------------------------------------------------------------------------
|
|
|
|
CThemeSection::CThemeSection (void)
|
|
|
|
{
|
|
}
|
|
|
|
// --------------------------------------------------------------------------
|
|
// CThemeSection::~CThemeSection
|
|
//
|
|
// Arguments: <none>
|
|
//
|
|
// Returns: <none>
|
|
//
|
|
// Purpose: Destructor for CThemeSection. This is TOTALLY BOGUS having to
|
|
// set an internal member variable contents to NULL to prevent
|
|
// it from releasing resources but the rest of the code relies
|
|
// on the auto-release behavior without duplication of the
|
|
// handle. This is done to protect this class from that hassle.
|
|
//
|
|
// History: 2000-11-22 vtan created
|
|
// --------------------------------------------------------------------------
|
|
|
|
CThemeSection::~CThemeSection (void)
|
|
|
|
{
|
|
_themeFile._hMemoryMap = NULL;
|
|
}
|
|
|
|
// --------------------------------------------------------------------------
|
|
// CThemeSection::operator CUxThemeFile*
|
|
//
|
|
// Arguments: <none>
|
|
//
|
|
// Returns: CUxThemeFile*
|
|
//
|
|
// Purpose: Automagic operator to convert from CThemeSection to
|
|
// CUxThemeFile* which keeps current usage transparent.
|
|
//
|
|
// History: 2000-11-22 vtan created
|
|
// --------------------------------------------------------------------------
|
|
|
|
CThemeSection::operator CUxThemeFile* (void)
|
|
|
|
{
|
|
return(&_themeFile);
|
|
}
|
|
|
|
// --------------------------------------------------------------------------
|
|
// CThemeSection::Open
|
|
//
|
|
// Arguments: hSection = Section to use.
|
|
// dwViewAccess = desired access for mapped view.
|
|
//
|
|
// Returns: HRESULT
|
|
//
|
|
// Purpose: Pass thru to CUxThemeFile::OpenFile.
|
|
//
|
|
// History: 2000-11-22 vtan created
|
|
// 2002-03-24 scotthan add dwViewAccess arg.
|
|
// --------------------------------------------------------------------------
|
|
|
|
HRESULT CThemeSection::Open (HANDLE hSection, DWORD dwViewAccess /* FILE_MAP_READ*/)
|
|
|
|
{
|
|
return(_themeFile.OpenFromHandle(hSection, dwViewAccess));
|
|
}
|
|
|
|
// --------------------------------------------------------------------------
|
|
// CThemeSection::ValidateData
|
|
//
|
|
// Arguments: fFullCheck = Perform a full check?
|
|
//
|
|
// Returns: HRESULT
|
|
//
|
|
// Purpose: Pass thru to CUxThemeFile::ValidateThemeData.
|
|
//
|
|
// History: 2000-11-22 vtan created
|
|
// --------------------------------------------------------------------------
|
|
|
|
HRESULT CThemeSection::ValidateData (bool fFullCheck)
|
|
|
|
{
|
|
return(_themeFile.ValidateThemeData(fFullCheck));
|
|
}
|
|
|
|
// --------------------------------------------------------------------------
|
|
// CThemeSection::CreateFromSection
|
|
//
|
|
// Arguments: hSection = Section to duplicate.
|
|
//
|
|
// Returns: HRESULT
|
|
//
|
|
// Purpose: Pass thru to CUxThemeFile::CreateFromSection.
|
|
//
|
|
// History: 2000-11-22 vtan created
|
|
// --------------------------------------------------------------------------
|
|
|
|
HRESULT CThemeSection::CreateFromSection (HANDLE hSection)
|
|
{
|
|
return(_themeFile.CreateFromSection(hSection));
|
|
}
|
|
|
|
// --------------------------------------------------------------------------
|
|
// CThemeSection::Get
|
|
//
|
|
// Arguments: <none>
|
|
//
|
|
// Returns: HANDLE
|
|
//
|
|
// Purpose: Returns the handle of the CUxThemeFile object. Because this
|
|
// class always NULLs out the handle it will get leaked. Once
|
|
// this handle is returned the caller owns the handle.
|
|
//
|
|
// History: 2000-11-22 vtan created
|
|
// --------------------------------------------------------------------------
|
|
|
|
HANDLE CThemeSection::Get (void) const
|
|
|
|
{
|
|
return(_themeFile._hMemoryMap);
|
|
}
|
|
|
|
// --------------------------------------------------------------------------
|
|
// CThemeSection::GetData
|
|
//
|
|
// Arguments: <none>
|
|
//
|
|
// Returns: PVOID
|
|
//
|
|
// Purpose: Returns a pointer to the theme data.
|
|
//
|
|
// History: 2002-03-24 scotthan created
|
|
// --------------------------------------------------------------------------
|
|
PVOID CThemeSection::GetData(void)
|
|
{
|
|
return _themeFile._pbThemeData;
|
|
}
|
|
|