349 lines
8 KiB
C++
349 lines
8 KiB
C++
//////////////////////////////////////////////////////////////////////////////
|
|
/*++
|
|
|
|
Copyright (C) Microsoft Corporation, 1997 - 1999
|
|
|
|
Module Name:
|
|
|
|
About.cpp
|
|
|
|
Abstract:
|
|
|
|
Implementation file for the CSnapinAbout class.
|
|
|
|
The CSnapinAbout class implements the ISnapinAbout interface which enables the MMC
|
|
console to get copyright and version information from the snap-in.
|
|
The console also uses this interface to obtain images for the static folder
|
|
from the snap-in.
|
|
|
|
|
|
Revision History:
|
|
mmaguire 11/6/97 - created using MMC snap-in wizard
|
|
|
|
--*/
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
// BEGIN INCLUDES
|
|
//
|
|
// standard includes:
|
|
//
|
|
#include "Precompiled.h"
|
|
//
|
|
// where we can find declaration for main class in this file:
|
|
//
|
|
#include "About.h"
|
|
//
|
|
//
|
|
// where we can find declarations needed in this file:
|
|
//
|
|
|
|
//
|
|
// END INCLUDES
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
/*++
|
|
|
|
CSnapinAbout::GetSnapinDescription
|
|
|
|
|
|
Enables the console to obtain the text for the snap-in's description box.
|
|
|
|
|
|
HRESULT GetSnapinDescription(
|
|
LPOLESTR * lpDescription // Pointer to the description text.
|
|
);
|
|
|
|
|
|
Parameters
|
|
|
|
lpDescription
|
|
[out] Pointer to the text for the description box on an About property page.
|
|
|
|
|
|
Return Values
|
|
|
|
S_OK
|
|
The text was successfully obtained.
|
|
|
|
|
|
Remarks
|
|
Memory for out parameters must be allocated using CoTaskMemAlloc. This function is documented in the Platform SDK.
|
|
|
|
--*/
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
STDMETHODIMP CSnapinAbout::GetSnapinDescription (LPOLESTR *lpDescription)
|
|
{
|
|
ATLTRACE(_T("+NAPMMC+:# CSnapinAbout::GetSnapinDescription\n"));
|
|
|
|
USES_CONVERSION;
|
|
|
|
TCHAR szBuf[256];
|
|
if (::LoadString(_Module.GetResourceInstance(), IDS_NAPSNAPIN_DESC, szBuf, 256) == 0)
|
|
return E_FAIL;
|
|
|
|
*lpDescription = (LPOLESTR)CoTaskMemAlloc((lstrlen(szBuf) + 1) * sizeof(TCHAR));
|
|
if (*lpDescription == NULL)
|
|
return E_OUTOFMEMORY;
|
|
|
|
ocscpy(*lpDescription, T2OLE(szBuf));
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
/*++
|
|
|
|
CSnapinAbout::GetProvider
|
|
|
|
|
|
Enables the console to obtain the snap-in provider's name.
|
|
|
|
|
|
HRESULT GetProvider(
|
|
LPOLESTR * lpName // Pointer to the provider's name
|
|
);
|
|
|
|
|
|
Parameters
|
|
|
|
lpName
|
|
[out] Pointer to the text making up the snap-in provider's name.
|
|
|
|
|
|
Return Values
|
|
|
|
S_OK
|
|
The name was successfully obtained.
|
|
|
|
|
|
Remarks
|
|
|
|
Memory for out parameters must be allocated using CoTaskMemAlloc. This function is documented in the Platform SDK.
|
|
|
|
--*/
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
STDMETHODIMP CSnapinAbout::GetProvider (LPOLESTR *lpName)
|
|
{
|
|
ATLTRACE(_T("+NAPMMC+:# CSnapinAbout::GetProvider\n"));
|
|
|
|
USES_CONVERSION;
|
|
TCHAR szBuf[256];
|
|
if (::LoadString(_Module.GetResourceInstance(), IDS_NAPSNAPIN_PROVIDER, szBuf, 256) == 0)
|
|
return E_FAIL;
|
|
|
|
*lpName = (LPOLESTR)CoTaskMemAlloc((lstrlen(szBuf) + 1) * sizeof(TCHAR));
|
|
if (*lpName == NULL)
|
|
return E_OUTOFMEMORY;
|
|
|
|
ocscpy(*lpName, T2OLE(szBuf));
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
/*++
|
|
|
|
CSnapinAbout::GetSnapinVersion
|
|
|
|
|
|
Enables the console to obtain the snap-in's version number.
|
|
|
|
|
|
HRESULT GetSnapinVersion(
|
|
LPOLESTR* lpVersion // Pointer to the version number.
|
|
);
|
|
|
|
|
|
Parameters
|
|
|
|
lpVersion
|
|
[out] Pointer to the text making up the snap-in's version number.
|
|
|
|
|
|
Return Values
|
|
|
|
S_OK
|
|
The version number was successfully obtained.
|
|
|
|
|
|
Remarks
|
|
|
|
Memory for out parameters must be allocated using CoTaskMemAlloc. This function is documented in the Platform SDK.
|
|
|
|
--*/
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
STDMETHODIMP CSnapinAbout::GetSnapinVersion (LPOLESTR *lpVersion)
|
|
{
|
|
ATLTRACE(_T("+NAPMMC+:# CSnapinAbout::GetSnapinVersion\n"));
|
|
|
|
USES_CONVERSION;
|
|
TCHAR szBuf[256];
|
|
if (::LoadString(_Module.GetResourceInstance(), IDS_NAPSNAPIN_VERSION, szBuf, 256) == 0)
|
|
return E_FAIL;
|
|
|
|
*lpVersion = (LPOLESTR)CoTaskMemAlloc((lstrlen(szBuf) + 1) * sizeof(TCHAR));
|
|
if (*lpVersion == NULL)
|
|
return E_OUTOFMEMORY;
|
|
|
|
ocscpy(*lpVersion, T2OLE(szBuf));
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
/*++
|
|
|
|
CSnapinAbout::GetSnapinImage
|
|
|
|
|
|
Enables the console to obtain the snap-in's main icon to be used in the About box.
|
|
|
|
|
|
HRESULT GetSnapinImage(
|
|
HICON * hAppIcon // Pointer to the application's main icon
|
|
);
|
|
|
|
|
|
Parameters
|
|
|
|
hAppIcon
|
|
[out] Pointer to the handle of the main icon of the snap-in that is to be used in the About property page.
|
|
|
|
|
|
Return Values
|
|
|
|
S_OK
|
|
The handle to the icon was successfully obtained.
|
|
|
|
ISSUE: What do I return if I can't get the icon?
|
|
|
|
Remarks
|
|
|
|
Memory for out parameters must be allocated using CoTaskMemAlloc. This function is documented in the Platform SDK.
|
|
|
|
--*/
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
STDMETHODIMP CSnapinAbout::GetSnapinImage (HICON *hAppIcon)
|
|
{
|
|
ATLTRACE(_T("+NAPMMC+:# CSnapinAbout::GetSnapinImage\n"));
|
|
|
|
|
|
// ISSUE: be sure it is GetSnapinImage that returns this icon and not something
|
|
// from GetStaticFolderImage.
|
|
|
|
// ISSUE: should probably use LoadImage here instead
|
|
if ( NULL == (*hAppIcon = ::LoadIcon(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDI_NAP_SNAPIN_IMAGE) ) ) )
|
|
return E_FAIL;
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
/*++
|
|
|
|
CSnapinAbout::GetStaticFolderImage
|
|
|
|
|
|
Allows the console to obtain the static folder images for the scope and result panes.
|
|
|
|
As of version 1.1 of MMC, the icon returned here will be the icon used on
|
|
the root node of our snapin.
|
|
|
|
|
|
|
|
HRESULT GetStaticFolderImage(
|
|
HBITMAP * hSmallImage, // Pointer to a handle to a small icon.
|
|
HBITMAP * hSmallImageOpen, // Pointer to a handle to open folder
|
|
// icon.
|
|
HBITMAP * hLargeImage, // Pointer to a handle to a large icon.
|
|
COLORREF * cMask // Color used to generate a mask.
|
|
);
|
|
|
|
|
|
Parameter
|
|
|
|
hSmallImage
|
|
[out] Pointer to the handle of a small icon (16x16n pixels) in either the scope or result view pane.
|
|
|
|
hSmallImageOpen
|
|
[out] Pointer to the handle of a small open-folder icon (16x16n pixels).
|
|
|
|
hLargImage
|
|
[out] Pointer to the handle of a large icon (32x32n pixels).
|
|
|
|
cMask
|
|
[out] Pointer to a COLORREF structure that specifies the color used to generate a mask. This structure is documented in the Platform SDK.
|
|
|
|
|
|
Return Values
|
|
|
|
S_OK
|
|
The icon was successfully obtained.
|
|
|
|
ISSUE: What should we return if we fail?
|
|
|
|
--*/
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
STDMETHODIMP CSnapinAbout::GetStaticFolderImage (
|
|
HBITMAP *hSmallImage,
|
|
HBITMAP *hSmallImageOpen,
|
|
HBITMAP *hLargeImage,
|
|
COLORREF *cMask)
|
|
{
|
|
|
|
ATLTRACE(_T("+NAPMMC+:# CSnapinAbout::GetStaticFolderImage\n"));
|
|
|
|
/*
|
|
|
|
if( NULL == (*hSmallImageOpen = (HBITMAP) LoadImage(
|
|
_Module.GetResourceInstance(), // handle of the instance that contains the image
|
|
MAKEINTRESOURCE(IDB_CRAPWIZ_OPEN_16), // name or identifier of image
|
|
IMAGE_BITMAP, // type of image
|
|
0, // desired width
|
|
0, // desired height
|
|
LR_DEFAULTCOLOR // load flags
|
|
) ) )
|
|
{
|
|
return E_FAIL;
|
|
}
|
|
|
|
|
|
if( NULL == (*hSmallImage = (HBITMAP) LoadImage(
|
|
_Module.GetResourceInstance(), // handle of the instance that contains the image
|
|
MAKEINTRESOURCE(IDB_CRAPWIZ_16), // name or identifier of image
|
|
IMAGE_BITMAP, // type of image
|
|
0, // desired width
|
|
0, // desired height
|
|
LR_DEFAULTCOLOR // load flags
|
|
) ) )
|
|
{
|
|
return E_FAIL;
|
|
}
|
|
|
|
if( NULL == (*hLargeImage = (HBITMAP) LoadImage(
|
|
_Module.GetResourceInstance(), // handle of the instance that contains the image
|
|
MAKEINTRESOURCE(IDB_CRAPWIZ_32), // name or identifier of image
|
|
IMAGE_BITMAP, // type of image
|
|
0, // desired width
|
|
0, // desired height
|
|
LR_DEFAULTCOLOR // load flags
|
|
) ) )
|
|
{
|
|
return E_FAIL;
|
|
}
|
|
|
|
|
|
*/
|
|
return S_OK;
|
|
}
|