Leaked source code of windows server 2003
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

//+---------------------------------------------------------------------------
//
// 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;
}