|
|
//
// Application Verifier UI
// Copyright (c) Microsoft Corporation, 2001
//
//
//
// module: AVGlobal.cpp
// author: DMihai
// created: 02/23/2001
//
// Description:
//
//
#include "stdafx.h"
#include "appverif.h"
#include "AVUtil.h"
#include "AVGlobal.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
///////////////////////////////////////////////////////////////////////////
//
// Report an error using a dialog box or a console message.
// The message format string is loaded from the resources.
//
void __cdecl AVErrorResourceFormat( UINT uIdResourceFormat, ... ) { TCHAR szMessage[ 256 ]; TCHAR strFormat[ 256 ]; BOOL bResult; va_list prms;
//
// Load the format string from the resources
//
bResult = AVLoadString( uIdResourceFormat, strFormat, ARRAY_LENGTH( strFormat ) );
ASSERT( bResult );
if( bResult ) { va_start (prms, uIdResourceFormat);
//
// Format the message in our local buffer
//
_vsntprintf ( szMessage, ARRAY_LENGTH( szMessage ), strFormat, prms);
if( g_bCommandLineMode ) { //
// Command console mode
//
_putts( szMessage ); TRACE( _T( "%s\n" ), szMessage ); } else { //
// GUI mode
//
AfxMessageBox( szMessage, MB_OK | MB_ICONSTOP ); }
va_end (prms); } }
///////////////////////////////////////////////////////////////////////////
//
// Print out a message to the console
// The message string is loaded from the resources.
//
void __cdecl AVTPrintfResourceFormat( UINT uIdResourceFormat, ... ) { TCHAR szMessage[ 256 ]; TCHAR strFormat[ 256 ]; BOOL bResult; va_list prms;
ASSERT( g_bCommandLineMode );
//
// Load the format string from the resources
//
bResult = AVLoadString( uIdResourceFormat, strFormat, ARRAY_LENGTH( strFormat ) );
ASSERT( bResult );
if( bResult ) { va_start (prms, uIdResourceFormat);
//
// Format the message in our local buffer
//
_vsntprintf ( szMessage, ARRAY_LENGTH( szMessage ), strFormat, prms);
_putts( szMessage );
va_end (prms); } }
///////////////////////////////////////////////////////////////////////////
//
// Print out a simple (non-formatted) message to the console
// The message string is loaded from the resources.
//
void AVPrintStringFromResources( UINT uIdString ) { TCHAR szMessage[ 256 ];
ASSERT( g_bCommandLineMode );
VERIFY( AVLoadString( uIdString, szMessage, ARRAY_LENGTH( szMessage ) ) );
_putts( szMessage ); }
///////////////////////////////////////////////////////////////////////////
//
// Report an error using a dialog box or a console message.
// The message string is loaded from the resources.
//
void AVMesssageFromResource( UINT uIdString ) { TCHAR szMessage[ 256 ];
VERIFY( AVLoadString( uIdString, szMessage, ARRAY_LENGTH( szMessage ) ) );
if( g_bCommandLineMode ) { //
// Command console mode
//
_putts( szMessage ); } else { //
// GUI mode
//
AfxMessageBox( szMessage, MB_OK | MB_ICONINFORMATION ); } }
///////////////////////////////////////////////////////////////////////////
//
// Display a message box with a message from the resources.
//
INT AVMesssageBoxFromResource( UINT uIdString, UINT uMsgBoxType ) { TCHAR szMessage[ 256 ];
VERIFY( AVLoadString( uIdString, szMessage, ARRAY_LENGTH( szMessage ) ) );
ASSERT( FALSE == g_bCommandLineMode );
//
// GUI mode
//
return AfxMessageBox( szMessage, uMsgBoxType ); }
///////////////////////////////////////////////////////////////////////////
//
// Load a string from resources.
// Return TRUE if we successfully loaded and FALSE if not.
//
BOOL AVLoadString( ULONG uIdResource, TCHAR *szBuffer, ULONG uBufferLength ) { ULONG uLoadStringResult;
if( uBufferLength < 1 ) { ASSERT( FALSE ); return FALSE; }
uLoadStringResult = LoadString ( g_hProgramModule, uIdResource, szBuffer, uBufferLength );
//
// We should never try to load non-existent strings.
//
ASSERT (uLoadStringResult > 0);
return (uLoadStringResult > 0); }
///////////////////////////////////////////////////////////////////////////
//
// Load a string from resources.
// Return TRUE if we successfully loaded and FALSE if not.
//
BOOL AVLoadString( ULONG uIdResource, CString &strText ) { TCHAR szText[ 256 ]; BOOL bSuccess;
bSuccess = AVLoadString( uIdResource, szText, ARRAY_LENGTH( szText ) );
if( TRUE == bSuccess ) { strText = szText; } else { strText = ""; }
return bSuccess; }
/////////////////////////////////////////////////////////////////////////////
BOOL AVSetWindowText( CWnd &Wnd, ULONG uIdResourceString ) { BOOL bLoaded; CString strText;
//
// It's safe to use CString::LoadString here because we are
// in GUI mode
//
ASSERT( FALSE == g_bCommandLineMode );
bLoaded = strText.LoadString( uIdResourceString );
ASSERT( TRUE == bLoaded );
Wnd.SetWindowText( strText );
return ( TRUE == bLoaded ); }
/////////////////////////////////////////////////////////////////////////////
BOOL AVRtlCharToInteger( LPCTSTR String, IN ULONG Base OPTIONAL, OUT PULONG Value ) { TCHAR c, Sign; ULONG Result, Digit, Shift;
while ((Sign = *String++) <= _T( ' ' )) { if (!*String) { String--; break; } }
c = Sign; if (c == _T( '-' ) || c == _T( '+' ) ) { c = *String++; }
if (!ARGUMENT_PRESENT( (ULONG_PTR)(Base) )) { Base = 10; Shift = 0; if (c == _T( '0' ) ) { c = *String++; if (c == _T( 'x' ) ) { Base = 16; Shift = 4; } else if (c == _T( 'o' ) ) { Base = 8; Shift = 3; } else if (c == _T( 'b' ) ) { Base = 2; Shift = 1; } else { String--; }
c = *String++; } } else { switch( Base ) { case 16: Shift = 4; break; case 8: Shift = 3; break; case 2: Shift = 1; break; case 10: Shift = 0; break; default: return FALSE; } }
Result = 0; while (c) { if (c >= _T( '0' ) && c <= _T( '9' ) ) { Digit = c - '0'; } else if (c >= _T( 'A' ) && c <= _T( 'F' ) ) { Digit = c - 'A' + 10; } else if (c >= _T( 'a' ) && c <= _T( 'f' ) ) { Digit = c - _T( 'a' ) + 10; } else { break; }
if (Digit >= Base) { break; }
if (Shift == 0) { Result = (Base * Result) + Digit; } else { Result = (Result << Shift) | Digit; }
c = *String++; }
if (Sign == _T( '-' ) ) { Result = (ULONG)(-(LONG)Result); }
*Value = Result;
return TRUE; }
/////////////////////////////////////////////////////////////////////////////
BOOL AVWriteStringHexValueToRegistry( HKEY hKey, LPCTSTR szValueName, DWORD dwValue ) { LONG lResult; TCHAR szValue[ 32 ];
_stprintf( szValue, _T( "0x%08X" ), dwValue );
lResult = RegSetValueEx( hKey, szValueName, 0, REG_SZ, (BYTE *)szValue, _tcslen( szValue ) * sizeof( TCHAR ) + sizeof( TCHAR ) );
return ( lResult == ERROR_SUCCESS ); }
|