Source code of Windows XP (NT5)
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.
|
|
/*--------------------------------------------------------------------------*
* * Microsoft Windows * Copyright (C) Microsoft Corporation, 1992 - 1999 * * File: picon.h * * Contents: Interface file for CPersistableIcon * * History: 19-Nov-98 jeffro Created * *--------------------------------------------------------------------------*/
#ifndef PICON_H
#define PICON_H
#pragma once
#include <objidl.h> // for IStorage
#include "tstring.h"
#include "smarticon.h"
#include "cpputil.h"
class CPersistableIconData { public: CPersistableIconData() : m_nIndex (-1) {}
CPersistableIconData(LPCTSTR pszIconFile, int nIndex) : m_strIconFile (pszIconFile), m_nIndex (nIndex) {}
// default copy construction and assignment are fine
// CPersistableIconData (const CPersistableIconData& other)
// CPersistableIconData& operator= (const CPersistableIconData& other)
void Clear () { m_strIconFile.erase(); m_nIndex = -1;
ASSERT (m_strIconFile.empty()); }
bool operator== (const CPersistableIconData& other) const { return ((m_nIndex == other.m_nIndex) && (m_strIconFile == other.m_strIconFile)); }
bool operator!= (const CPersistableIconData& other) const { return (!operator== (other)); }
public: tstring m_strIconFile; int m_nIndex;
};
class CXMLPersistableIcon;
class CPersistableIcon { DECLARE_NOT_COPIABLE (CPersistableIcon); DECLARE_NOT_ASSIGNABLE (CPersistableIcon);
// these guys need to assign new icons to the object
friend class CXMLPersistableIcon; friend HRESULT LoadIconFromXMLData(LPCSTR pFileData, DWORD dwLen, CPersistableIcon &persistableIcon);
public: CPersistableIcon () {} ~CPersistableIcon ();
operator bool () const { return (!m_Data.m_strIconFile.empty()); }
bool operator== (const CPersistableIconData& data) const { return (m_Data == data); }
bool operator!= (const CPersistableIconData& data) const { return (m_Data != data); }
CPersistableIcon& operator= (const CPersistableIconData& data);
HRESULT GetIcon (int nIconSize, CSmartIcon& icon) const;
void GetData (CPersistableIconData& data) const { data = m_Data; }
HRESULT Load (LPCWSTR pszFilename); HRESULT Load (IStorage* pstg);
private: void Cleanup(); bool ExtractIcons();
private: CPersistableIconData m_Data; CSmartIcon m_icon16; CSmartIcon m_icon32;
static const LPCWSTR s_pszDefaultStorage; static const LPCWSTR s_pszIconFileStream; static const LPCWSTR s_pszIconBitsStream;
};
IStream& operator>> (IStream& stm, CPersistableIconData& data);
extern const LPCWSTR g_pszCustomDataStorage;
#endif /* PICON_H */
|