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.
|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1999 - 1999
//
// File: snaphelp.h
//
//--------------------------------------------------------------------------
#ifndef _ATLSNAPHELP_H_
#define _ATLSNAPHELP_H_
//
// Include files
//
#include "htmlhelp.h"
//
// Allocates memory for a string, copies the string,
// and returns it to the caller. Throws exceptions.
//
inline LPOLESTR CoTaskDupString( LPOLESTR pszInput ) { USES_CONVERSION; LPOLESTR pszOut = NULL;
//
// We throw an exception if the following allocation fails.
//
pszOut = (LPOLESTR) CoTaskMemAlloc( ( wcslen( pszInput ) + 1 ) * sizeof( OLECHAR ) ); if ( pszOut == NULL ) throw;
wcscpy( pszOut, pszInput );
return( pszOut ); };
template <class T> class ATL_NO_VTABLE ISnapinHelpImpl : public ISnapinHelp { public: //
// Returns a helpfile name using the ATL module name
// and appending the appropriate suffix onto the filename.
//
STDMETHOD( GetHelpTopic )( LPOLESTR* lpCompiledHelpFile ) { _ASSERT( lpCompiledHelpFile != NULL ); USES_CONVERSION; HRESULT hr = E_FAIL; TCHAR szPath[ _MAX_PATH * 2 ]; TCHAR szDrive[ _MAX_DRIVE * 2 ], szDir[ _MAX_DIR * 2 ]; TCHAR szName[ _MAX_FNAME * 2 ], szExt[ _MAX_EXT ];
try { //
// Get the module filename.
//
if ( GetModuleFileName( _Module.GetModuleInstance(), szPath, sizeof( szPath ) / sizeof( TCHAR ) ) == NULL ) throw;
//
// Split the given path.
//
_tsplitpath( szPath, szDrive, szDir, szName, szExt ); _tmakepath( szPath, szDrive, szDir, szName, _T( ".chm" ) );
//
// Allocate the string and return it.
*lpCompiledHelpFile = CoTaskDupString( T2W( szPath ) ); hr = S_OK; } catch( ... ) { }
return( hr ); } };
#endif
|