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/NT **/ /** Copyright(c) Microsoft Corporation, 1997 - 1997 **/ /**********************************************************************/
/*
about.cpp base class for the IAbout interface for MMC
FILE HISTORY: */
#include <stdafx.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
DEBUG_DECLARE_INSTANCE_COUNTER(CAbout);
CAbout::CAbout() : m_hSmallImage(NULL), m_hSmallImageOpen(NULL), m_hLargeImage(NULL), m_hAppIcon(NULL) { DEBUG_INCREMENT_INSTANCE_COUNTER(CAbout); }
CAbout::~CAbout() { DEBUG_DECREMENT_INSTANCE_COUNTER(CAbout); if (m_hSmallImage) { DeleteObject(m_hSmallImage); }
if (m_hSmallImageOpen) { DeleteObject(m_hSmallImageOpen); }
if (m_hLargeImage) { DeleteObject(m_hLargeImage); }
if (m_hAppIcon) { DeleteObject(m_hAppIcon); } }
/*!--------------------------------------------------------------------------
CAbout::AboutHelper Helper to get information from resource file Author: ---------------------------------------------------------------------------*/ HRESULT CAbout::AboutHelper ( UINT nID, LPOLESTR* lpPtr ) { if (lpPtr == NULL) return E_POINTER;
CString s;
// Needed for Loadstring
AFX_MANAGE_STATE(AfxGetStaticModuleState());
HRESULT hr = hrOK;
COM_PROTECT_TRY {
s.LoadString(nID); *lpPtr = reinterpret_cast<LPOLESTR> (CoTaskMemAlloc((s.GetLength() + 1)* sizeof(wchar_t)));
if (*lpPtr == NULL) return E_OUTOFMEMORY;
lstrcpy(*lpPtr, (LPCTSTR)s); } COM_PROTECT_CATCH
return hr; }
/*!--------------------------------------------------------------------------
CAbout::GetSnapinDescription MMC calls this to get the snapin's description Author: ---------------------------------------------------------------------------*/ STDMETHODIMP CAbout::GetSnapinDescription ( LPOLESTR* lpDescription ) { return AboutHelper(GetAboutDescriptionId(), lpDescription); }
/*!--------------------------------------------------------------------------
CAbout::GetProvider MMC calls this to get the snapin's provider Author: ---------------------------------------------------------------------------*/ STDMETHODIMP CAbout::GetProvider ( LPOLESTR* lpName ) { return AboutHelper(GetAboutProviderId(), lpName); }
/*!--------------------------------------------------------------------------
CAbout::AboutHelper MMC calls this to get the snapin's version Author: ---------------------------------------------------------------------------*/ STDMETHODIMP CAbout::GetSnapinVersion ( LPOLESTR* lpVersion ) { return AboutHelper(GetAboutVersionId(), lpVersion); }
/*!--------------------------------------------------------------------------
CAbout::GetSnapinImage MMC calls this to get the snapin's icon Author: ---------------------------------------------------------------------------*/ STDMETHODIMP CAbout::GetSnapinImage ( HICON* hAppIcon ) { if (hAppIcon == NULL) return E_POINTER;
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if (NULL == m_hAppIcon) { m_hAppIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(GetAboutIconId())); } *hAppIcon = m_hAppIcon;
ASSERT(*hAppIcon != NULL); return (*hAppIcon != NULL) ? S_OK : E_FAIL; }
/*!--------------------------------------------------------------------------
CAbout::GetStaticFolderImage MMC calls this to get the bitmap for the snapin's root node Author: ---------------------------------------------------------------------------*/ STDMETHODIMP CAbout::GetStaticFolderImage ( HBITMAP* hSmallImage, HBITMAP* hSmallImageOpen, HBITMAP* hLargeImage, COLORREF* cLargeMask ) { if (NULL == hSmallImage || NULL == hSmallImageOpen || NULL == hLargeImage) { return E_POINTER; }
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if (NULL == m_hSmallImage) { m_hSmallImage = LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(GetSmallRootId())); } *hSmallImage = m_hSmallImage;
if (NULL == m_hSmallImageOpen) { m_hSmallImageOpen = LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(GetSmallOpenRootId())); } *hSmallImageOpen = m_hSmallImageOpen;
if (NULL == m_hLargeImage) { m_hLargeImage = LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(GetLargeRootId())); } *hLargeImage = m_hLargeImage;
*cLargeMask = GetLargeColorMask();
return S_OK; }
|