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.
206 lines
6.8 KiB
206 lines
6.8 KiB
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation 1996-2001.
|
|
//
|
|
// File: about.cpp
|
|
//
|
|
// Contents: implementation of CAbout, CSCEAbout, CSCMAbout, CSSAbout,
|
|
// CRSOPAbout & CLSAbout
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
#include "stdafx.h"
|
|
#include "resource.h"
|
|
#include "about.h"
|
|
|
|
#include <ntverp.h>
|
|
#define OUT_VERSION VER_PRODUCTVERSION_STR
|
|
#define OUT_PROVIDER VER_COMPANYNAME_STR
|
|
/////////////////////////////////////////////////////////////////////
|
|
CSCEAbout::CSCEAbout()
|
|
{
|
|
m_uIdStrProvider = IDS_SNAPINABOUT_PROVIDER;
|
|
m_uIdStrVersion = IDS_SNAPINABOUT_VERSION;
|
|
m_uIdStrDescription = IDS_SCEABOUT_DESCRIPTION;
|
|
m_uIdIconImage = IDI_SCE_APP;
|
|
m_uIdBitmapSmallImage = IDB_SCE_SMALL;
|
|
m_uIdBitmapSmallImageOpen = IDB_SCE_SMALL;
|
|
m_uIdBitmapLargeImage = IDB_SCE_LARGE;
|
|
m_crImageMask = RGB(255, 0, 255);
|
|
}
|
|
|
|
CSCMAbout::CSCMAbout()
|
|
{
|
|
m_uIdStrProvider = IDS_SNAPINABOUT_PROVIDER;
|
|
m_uIdStrVersion = IDS_SNAPINABOUT_VERSION;
|
|
m_uIdStrDescription = IDS_SCMABOUT_DESCRIPTION;
|
|
m_uIdIconImage = IDI_SCE_APP;
|
|
m_uIdBitmapSmallImage = IDB_SCE_SMALL;
|
|
m_uIdBitmapSmallImageOpen = IDB_SCE_SMALL;
|
|
m_uIdBitmapLargeImage = IDB_SCE_LARGE;
|
|
m_crImageMask = RGB(255, 0, 255);
|
|
}
|
|
|
|
CSSAbout::CSSAbout()
|
|
{
|
|
m_uIdStrProvider = IDS_SNAPINABOUT_PROVIDER;
|
|
m_uIdStrVersion = IDS_SNAPINABOUT_VERSION;
|
|
m_uIdStrDescription = IDS_SSABOUT_DESCRIPTION;
|
|
m_uIdIconImage = IDI_SCE_APP;
|
|
m_uIdBitmapSmallImage = IDB_SCE_SMALL;
|
|
m_uIdBitmapSmallImageOpen = IDB_SCE_SMALL;
|
|
m_uIdBitmapLargeImage = IDB_SCE_LARGE;
|
|
m_crImageMask = RGB(255, 0, 255);
|
|
}
|
|
|
|
CRSOPAbout::CRSOPAbout()
|
|
{
|
|
m_uIdStrProvider = IDS_SNAPINABOUT_PROVIDER;
|
|
m_uIdStrVersion = IDS_SNAPINABOUT_VERSION;
|
|
m_uIdStrDescription = IDS_RSOPABOUT_DESCRIPTION;
|
|
m_uIdIconImage = IDI_SCE_APP;
|
|
m_uIdBitmapSmallImage = IDB_SCE_SMALL;
|
|
m_uIdBitmapSmallImageOpen = IDB_SCE_SMALL;
|
|
m_uIdBitmapLargeImage = IDB_SCE_LARGE;
|
|
m_crImageMask = RGB(255, 0, 255);
|
|
}
|
|
|
|
CLSAbout::CLSAbout()
|
|
{
|
|
m_uIdStrProvider = IDS_SNAPINABOUT_PROVIDER;
|
|
m_uIdStrVersion = IDS_SNAPINABOUT_VERSION;
|
|
m_uIdStrDescription = IDS_LSABOUT_DESCRIPTION;
|
|
m_uIdIconImage = IDI_SCE_APP;
|
|
m_uIdBitmapSmallImage = IDB_SCE_SMALL;
|
|
m_uIdBitmapSmallImageOpen = IDB_SCE_SMALL;
|
|
m_uIdBitmapLargeImage = IDB_SCE_LARGE;
|
|
m_crImageMask = RGB(255, 0, 255);
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
// HrLoadOleString()
|
|
//
|
|
// Load a string from the resource and return pointer to allocated
|
|
// OLE string.
|
|
//
|
|
// HISTORY
|
|
// 29-Jul-97 t-danm Creation.
|
|
//
|
|
HRESULT
|
|
HrLoadOleString(
|
|
UINT uStringId, // IN: String Id to load from the resource
|
|
OUT LPOLESTR * ppaszOleString) // OUT: Pointer to pointer to allocated OLE string
|
|
{
|
|
if (ppaszOleString == NULL) {
|
|
TRACE0("HrLoadOleString() - ppaszOleString is NULL.\n");
|
|
return E_POINTER;
|
|
}
|
|
CString strT; // Temporary string
|
|
AFX_MANAGE_STATE(AfxGetStaticModuleState()); // Needed for LoadString()
|
|
|
|
if( IDS_SNAPINABOUT_VERSION == uStringId ) //Raid #402163
|
|
{
|
|
strT = OUT_VERSION;
|
|
}
|
|
else
|
|
{
|
|
if( IDS_SNAPINABOUT_PROVIDER == uStringId )
|
|
{
|
|
strT = OUT_PROVIDER;
|
|
}
|
|
else
|
|
{
|
|
VERIFY( strT.LoadString(uStringId) );
|
|
}
|
|
}
|
|
*ppaszOleString = reinterpret_cast<LPOLESTR>
|
|
(CoTaskMemAlloc((strT.GetLength() + 1)* sizeof(wchar_t)));
|
|
if (*ppaszOleString == NULL) {
|
|
return E_OUTOFMEMORY;
|
|
}
|
|
USES_CONVERSION;
|
|
//This is a safe usage. ppaszOleString is just allocated based on the size of strT.
|
|
wcscpy(OUT *ppaszOleString, T2OLE((LPTSTR)(LPCTSTR)strT));
|
|
|
|
return S_OK;
|
|
} // HrLoadOleString()
|
|
|
|
|
|
STDMETHODIMP CAbout::GetSnapinDescription(OUT LPOLESTR __RPC_FAR *lpDescription)
|
|
{
|
|
return HrLoadOleString(m_uIdStrDescription, OUT lpDescription);
|
|
}
|
|
|
|
STDMETHODIMP CAbout::GetProvider(OUT LPOLESTR __RPC_FAR *lpName)
|
|
{
|
|
return HrLoadOleString(m_uIdStrProvider, OUT lpName);
|
|
}
|
|
|
|
STDMETHODIMP CAbout::GetSnapinVersion(OUT LPOLESTR __RPC_FAR *lpVersion)
|
|
{
|
|
return HrLoadOleString(m_uIdStrVersion, OUT lpVersion);
|
|
}
|
|
|
|
STDMETHODIMP CAbout::GetSnapinImage(OUT HICON __RPC_FAR *hAppIcon)
|
|
{
|
|
if (hAppIcon == NULL)
|
|
return E_POINTER;
|
|
AFX_MANAGE_STATE(AfxGetStaticModuleState()); // Required for AfxGetInstanceHandle()
|
|
*hAppIcon = ::LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(m_uIdIconImage));
|
|
if (*hAppIcon == NULL) {
|
|
ASSERT(FALSE && "Unable to load icon");
|
|
return E_FAIL;
|
|
}
|
|
return S_OK;
|
|
}
|
|
|
|
STDMETHODIMP CAbout::GetStaticFolderImage(
|
|
OUT HBITMAP __RPC_FAR *hSmallImage,
|
|
OUT HBITMAP __RPC_FAR *hSmallImageOpen,
|
|
OUT HBITMAP __RPC_FAR *hLargeImage,
|
|
OUT COLORREF __RPC_FAR *crMask)
|
|
{
|
|
//This is not a safe usage. All four pointers should be validated. Raid #550912, yanggao.
|
|
ASSERT(hSmallImage != NULL);
|
|
ASSERT(hSmallImageOpen != NULL);
|
|
ASSERT(hLargeImage != NULL);
|
|
ASSERT(crMask != NULL);
|
|
if( !hSmallImage || !hSmallImageOpen || !hLargeImage || !crMask )
|
|
{
|
|
return E_FAIL;
|
|
}
|
|
AFX_MANAGE_STATE(AfxGetStaticModuleState()); // Required for AfxGetInstanceHandle()
|
|
HINSTANCE hInstance = AfxGetInstanceHandle();
|
|
|
|
//Raid #379315, 4/27/2001
|
|
*hSmallImage = (HBITMAP)::LoadImage(
|
|
hInstance,
|
|
MAKEINTRESOURCE(m_uIdBitmapSmallImage),
|
|
IMAGE_BITMAP,
|
|
0, 0,
|
|
LR_SHARED
|
|
);
|
|
*hSmallImageOpen = (HBITMAP)::LoadImage(
|
|
hInstance,
|
|
MAKEINTRESOURCE(m_uIdBitmapSmallImageOpen),
|
|
IMAGE_BITMAP,
|
|
0, 0,
|
|
LR_SHARED
|
|
);
|
|
*hLargeImage = (HBITMAP)::LoadImage(
|
|
hInstance,
|
|
MAKEINTRESOURCE(m_uIdBitmapLargeImage),
|
|
IMAGE_BITMAP,
|
|
0, 0,
|
|
LR_SHARED
|
|
);
|
|
*crMask = m_crImageMask;
|
|
#ifdef _DEBUG
|
|
if (NULL == *hSmallImage || NULL == *hSmallImageOpen || NULL == *hLargeImage) {
|
|
TRACE0("WRN: CAbout::GetStaticFolderImage() - Unable to load all the bitmaps.\n");
|
|
return E_FAIL;
|
|
}
|
|
#endif
|
|
return S_OK;
|
|
}
|