Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

331 lines
9.0 KiB

//Copyright (c) 1998 - 1999 Microsoft Corporation
/*******************************************************************************
*
* common.c
*
* WINUTILS common C helper functions
*
* copyright notice: Copyright 1995, Citrix Systems Inc.
*
* $Author: butchd $ Butch Davis
*
* $Log: N:\NT\PRIVATE\UTILS\CITRIX\WINUTILS\COMMON\VCS\COMMON.C $
*
* Rev 1.3 16 Nov 1995 17:16:18 butchd
* update
*
* Rev 1.2 24 Mar 1995 17:23:58 butchd
* Added WINUTILS global instance handle
*
* Rev 1.1 20 Mar 1995 16:06:34 butchd
* Segregated code for WIN32 & WIN16 library builds
*
* Rev 1.0 28 Feb 1995 17:37:12 butchd
* Initial revision.
*
*******************************************************************************/
/*
* include files
*/
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include "common.h"
/*
* Common WINUTIL external variables
*/
extern LPCTSTR WinUtilsAppName;
extern HWND WinUtilsAppWindow;
extern HINSTANCE WinUtilsAppInstance;
////////////////////////////////////////////////////////////////////////////////
// common helper functions
/*******************************************************************************
*
* ErrorMessage - WINUTILS helper function
*
* Display an error message with variable arguments - main application
* window is owner of message box.
*
* ENTRY:
* nErrorResourceID (input)
* Resource ID of the format string to use in the error message.
* ... (input)
* Optional additional arguments to be used with format string.
*
* EXIT:
*
******************************************************************************/
void
ErrorMessage( int nErrorResourceID, ...)
{
TCHAR sz1[256], sz2[1024];
int length;
va_list args;
va_start( args, nErrorResourceID );
length = LoadString(WinUtilsAppInstance, nErrorResourceID, sz1, 256);
wvsprintf( sz2, sz1, args );
lstrcpy(sz1, WinUtilsAppName);
lstrcat(sz1, TEXT(" ERROR"));
MessageBox( WinUtilsAppWindow,
sz2, sz1, MB_OK | MB_ICONEXCLAMATION );
va_end(args);
} // end ErrorMessage
/*******************************************************************************
*
* ErrorMessageStr - WINUTILS helper function
*
* Load the specified error resource format string and format an error
* message string into the specified output buffer.
*
* ENTRY:
* pErrorString (output)
* Buffer to place formatted error string into.
* nErrorStringLen (input)
* Specifies maximum number of characters, including the terminator,
* that can be written to pErrorString.
* nErrorResourceID (input)
* Resource ID of the format string to use in the error message.
* ... (input)
* Optional additional arguments to be used with format string.
*
* EXIT:
*
******************************************************************************/
void
ErrorMessageStr( LPTSTR pErrorString,
int nErrorStringLen,
int nErrorResourceID, ...)
{
TCHAR sz1[256], sz2[1024];
int length;
va_list args;
va_start( args, nErrorResourceID );
length = LoadString(WinUtilsAppInstance, nErrorResourceID, sz1, 256);
wvsprintf( sz2, sz1, args );
lstrncpy(pErrorString, sz2, nErrorStringLen);
pErrorString[nErrorStringLen-1] = TEXT('\0');
va_end(args);
} // end ErrorMessage
/*******************************************************************************
*
* ErrorMessageWndA - WINUTILS helper function (ANSI version)
*
* Display an error message with variable arguments - caller specifies the
* owner of message box.
*
* ENTRY:
* hWnd (input)
* Window handle of owner window for the message box. If this is
* NULL, the main application window will be the owner.
* nErrorResourceID (input)
* Resource ID of the format string to use in the error message.
* ... (input)
* Optional additional arguments to be used with format string.
*
* EXIT:
*
******************************************************************************/
void
#ifdef WIN16
#define LoadStringA LoadString
#define wvsprintfA wvsprintf
#define lstrcpyA lstrcpy
#define lstrcatA lstrcat
#define MessageBoxA MessageBox
ErrorMessageWnd(
#else
ErrorMessageWndA(
#endif
HWND hWnd,
int nErrorResourceID, ...)
{
char sz1[256], sz2[1024];
int length;
va_list args;
va_start( args, nErrorResourceID );
length = LoadStringA(WinUtilsAppInstance, nErrorResourceID, sz1, 256);
wvsprintfA( sz2, sz1, args );
#ifdef UNICODE
wcstombs(sz1, WinUtilsAppName, sizeof(sz1));
#else
lstrcpyA(sz1, WinUtilsAppName);
#endif
lstrcatA(sz1, " ERROR");
MessageBoxA(
hWnd ? hWnd : WinUtilsAppWindow,
sz2, sz1, MB_OK | MB_ICONEXCLAMATION );
va_end(args);
} // end ErrorMessageWndA
#ifndef WIN16
/*******************************************************************************
*
* ErrorMessageWndW - WINUTILS helper function (UNICODE version)
*
* Display an error message with variable arguments - caller specifies the
* owner of message box.
*
* ENTRY:
* hWnd (input)
* Window handle of owner window for the message box. If this is
* NULL, the main application window will be the owner.
* nErrorResourceID (input)
* Resource ID of the format string to use in the error message.
* ... (input)
* Optional additional arguments to be used with format string.
*
* EXIT:
*
******************************************************************************/
void
ErrorMessageWndW( HWND hWnd,
int nErrorResourceID, ...)
{
WCHAR sz1[256], sz2[1024];
int length;
va_list args;
va_start( args, nErrorResourceID );
length = LoadStringW(WinUtilsAppInstance, nErrorResourceID, sz1, 256);
wvsprintfW( sz2, sz1, args );
#ifndef UNICODE
mbstowcs(sz1, WinUtilsAppName, lstrlenA(WinUtilsAppName)+1);
#else
lstrcpyW(sz1, WinUtilsAppName);
#endif
lstrcatW(sz1, L" ERROR");
MessageBoxW( hWnd ? hWnd : WinUtilsAppWindow,
sz2, sz1, MB_OK | MB_ICONEXCLAMATION );
va_end(args);
} // end ErrorMessageWndW
#endif // WIN16
/*******************************************************************************
*
* QuestionMessage - WINUTILS helper function
*
* Display a 'question' message with variable arguments and return the
* user's response - main application window is owner of message box.
*
* ENTRY:
* nType (input)
* Message box 'type' flags to determine the apperance and function
* of the generated MessageBox.
* nErrorResourceID (input)
* Resource ID of the format string to use in the error message.
* ... (input)
* Optional additional arguments to be used with format string.
*
* EXIT:
* (int) Returns the user response from the MessageBox function.
*
******************************************************************************/
int
QuestionMessage( UINT nType,
int nQuestionResourceID, ...)
{
TCHAR sz1[256], sz2[1024];
int reply, length;
va_list args;
va_start( args, nQuestionResourceID );
length = LoadString(WinUtilsAppInstance, nQuestionResourceID, sz1, 256);
wvsprintf( sz2, sz1, args );
reply = MessageBox( WinUtilsAppWindow,
sz2, WinUtilsAppName, nType );
va_end(args);
return(reply);
} // end QuestionMessage
/*******************************************************************************
*
* QuestionMessageWnd - WINUTILS helper function
*
* Display a 'question' message with variable arguments and return the
* user's response - caller specifies the owner of message box.
*
* ENTRY:
* hWnd (input)
* Window handle of owner window for the message box. If this is
* NULL, the main application window will be the owner.
* nType (input)
* Message box 'type' flags to determine the apperance and function
* of the generated MessageBox.
* nErrorResourceID (input)
* Resource ID of the format string to use in the error message.
* ... (input)
* Optional additional arguments to be used with format string.
*
* EXIT:
* (int) Returns the user response from the MessageBox function.
*
******************************************************************************/
int
QuestionMessageWnd( HWND hWnd,
UINT nType,
int nQuestionResourceID, ...)
{
TCHAR sz1[256], sz2[1024];
int reply, length;
va_list args;
va_start( args, nQuestionResourceID );
length = LoadString(WinUtilsAppInstance, nQuestionResourceID, sz1, 256);
wvsprintf( sz2, sz1, args );
reply = MessageBox( hWnd ? hWnd : WinUtilsAppWindow,
sz2, WinUtilsAppName, nType );
va_end(args);
return(reply);
} // end QuestionMessageWnd