131 lines
4.1 KiB
C++
131 lines
4.1 KiB
C++
|
/*======================================================================================//
|
||
|
| Windows NT Process Control //
|
||
|
| //
|
||
|
|Copyright (c) 1998 Sequent Computer Systems, Incorporated. All rights reserved. //
|
||
|
| //
|
||
|
|File Name: About.cpp //
|
||
|
| //
|
||
|
|Description: Implementation of ISnapinAbout Interface for ProcCon //
|
||
|
| //
|
||
|
|Created: Paul Skoglund 09-1998 //
|
||
|
| //
|
||
|
|Rev History: //
|
||
|
| //
|
||
|
|=======================================================================================*/
|
||
|
|
||
|
|
||
|
#include "StdAfx.h"
|
||
|
#include "ProcCon.h"
|
||
|
#include "About.h"
|
||
|
|
||
|
|
||
|
#define MAX_STR_RESOURCE_LEN (256)
|
||
|
#define MAX_STR_RESOURCE_SIZE (sizeof(TCHAR) * MAX_STR_RESOURCE_LEN)
|
||
|
|
||
|
|
||
|
CAbout::CAbout() : VersionObj(_Module.GetModuleInstance())
|
||
|
{
|
||
|
ATLTRACE( _T("CAbout::CAbout()\n") );
|
||
|
}
|
||
|
|
||
|
|
||
|
CAbout::~CAbout()
|
||
|
{
|
||
|
ATLTRACE( _T("CAbout::~CAbout()\n") );
|
||
|
}
|
||
|
|
||
|
HRESULT CAbout::WrapLoadString(LPOLESTR *ptr, int nID)
|
||
|
{
|
||
|
*ptr = reinterpret_cast<LPOLESTR> (CoTaskMemAlloc(MAX_STR_RESOURCE_SIZE));
|
||
|
if (!*ptr)
|
||
|
return E_FAIL;
|
||
|
|
||
|
if (LoadString(_Module.GetResourceInstance(), nID, *ptr, MAX_STR_RESOURCE_LEN))
|
||
|
return S_OK;
|
||
|
|
||
|
CoTaskMemFree(*ptr);
|
||
|
*ptr = NULL;
|
||
|
|
||
|
return E_FAIL;
|
||
|
}
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// ISnapinAbout Implementation:
|
||
|
//
|
||
|
STDMETHODIMP CAbout::GetSnapinDescription (LPOLESTR* lpDescription)
|
||
|
{
|
||
|
ATLTRACE( _T("CAbout::GetSnapinDescription()\n") );
|
||
|
return WrapLoadString(lpDescription, IDS_DESCRIPTION);
|
||
|
}
|
||
|
|
||
|
STDMETHODIMP CAbout::GetProvider(LPOLESTR* lpName)
|
||
|
{
|
||
|
ATLTRACE( _T("CAbout::GetProvider()\n") );
|
||
|
|
||
|
int len = (_tcslen(VersionObj.strGetCompanyName()) + 1 ) * sizeof(TCHAR);
|
||
|
|
||
|
*lpName = reinterpret_cast<LPOLESTR> (CoTaskMemAlloc(len));
|
||
|
if (!*lpName)
|
||
|
return E_FAIL;
|
||
|
|
||
|
_tcscpy(*lpName, VersionObj.strGetCompanyName());
|
||
|
|
||
|
return S_OK;
|
||
|
}
|
||
|
|
||
|
STDMETHODIMP CAbout::GetSnapinVersion(LPOLESTR* lpVersion)
|
||
|
{
|
||
|
ATLTRACE( _T("CAbout::GetSnapinVersion()\n") );
|
||
|
|
||
|
int len = (_tcslen(VersionObj.GetFileVersion()) + 1 ) * sizeof(TCHAR);
|
||
|
|
||
|
len += _tcslen(VersionObj.GetFileFlags()) * sizeof(TCHAR);
|
||
|
|
||
|
*lpVersion = reinterpret_cast<LPOLESTR> (CoTaskMemAlloc(len));
|
||
|
if (!*lpVersion)
|
||
|
return E_FAIL;
|
||
|
|
||
|
_tcscpy(*lpVersion, VersionObj.GetFileVersion());
|
||
|
_tcscat(*lpVersion, VersionObj.GetFileFlags());
|
||
|
|
||
|
return S_OK;
|
||
|
}
|
||
|
|
||
|
STDMETHODIMP CAbout::GetSnapinImage(HICON* hAppIcon)
|
||
|
{
|
||
|
ATLTRACE( _T("CAbout::GetSnapinImage()\n") );
|
||
|
|
||
|
ASSERT(hAppIcon);
|
||
|
*hAppIcon = LoadIcon(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDI_PROCCON));
|
||
|
ASSERT( *hAppIcon );
|
||
|
return *hAppIcon ? S_OK : E_FAIL;
|
||
|
}
|
||
|
|
||
|
STDMETHODIMP CAbout::GetStaticFolderImage
|
||
|
(
|
||
|
HBITMAP* hSmallImage,
|
||
|
HBITMAP* hSmallImageOpen,
|
||
|
HBITMAP* hLargeImage,
|
||
|
COLORREF* cLargeMask
|
||
|
)
|
||
|
{
|
||
|
ATLTRACE( _T("CAbout::GetStaticFolderImage()\n") );
|
||
|
|
||
|
if (!hSmallImage || !hSmallImageOpen || !hLargeImage || !cLargeMask)
|
||
|
return S_FALSE;
|
||
|
|
||
|
*hSmallImage = (HBITMAP) ::LoadImage(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDB_NODES_16x16), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR );
|
||
|
ASSERT(hSmallImage);
|
||
|
|
||
|
*hSmallImageOpen = (HBITMAP) ::LoadImage(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDB_NODES_16x16), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR );
|
||
|
ASSERT(hSmallImageOpen);
|
||
|
|
||
|
*hLargeImage = (HBITMAP) ::LoadImage(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDB_NODES_32x32), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR );
|
||
|
ASSERT(hLargeImage);
|
||
|
|
||
|
*cLargeMask = RGB(255,0, 255);
|
||
|
|
||
|
return S_OK;
|
||
|
}
|