163 lines
4.0 KiB
C++
163 lines
4.0 KiB
C++
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
//
|
|
// Copyright (C) Microsoft Corporation, 1997 - 1999
|
|
//
|
|
// File: msgpopup.cpp
|
|
//
|
|
// This file contains MessageBox helper functions.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#include "pch.h"
|
|
#pragma hdrstop
|
|
|
|
|
|
/*******************************************************************
|
|
|
|
NAME: MsgPopup
|
|
|
|
SYNOPSIS: Displays a message to the user
|
|
|
|
ENTRY: hwnd - Owner window handle
|
|
pszMsgFmt - Main message text
|
|
pszTitle - MessageBox title
|
|
uType - MessageBox flags
|
|
hInstance - Module to load strings from. Only required if
|
|
pszMsgFmt or pszTitle is a string resource ID.
|
|
Optional format insert parameters.
|
|
|
|
EXIT:
|
|
|
|
RETURNS: MessageBox result
|
|
|
|
NOTES: Either of the string parameters may be string resource ID's.
|
|
|
|
HISTORY:
|
|
JeffreyS 11-Jun-1997 Created
|
|
|
|
********************************************************************/
|
|
|
|
int
|
|
WINAPIV
|
|
MsgPopup(HWND hwnd,
|
|
LPCTSTR pszMsgFmt,
|
|
LPCTSTR pszTitle,
|
|
UINT uType,
|
|
HINSTANCE hInstance,
|
|
...)
|
|
{
|
|
int nResult;
|
|
LPTSTR szMsg = NULL;
|
|
LPTSTR szTitle = NULL;
|
|
DWORD dwFormatResult;
|
|
va_list args;
|
|
|
|
if (pszMsgFmt == NULL)
|
|
return -1;
|
|
|
|
//
|
|
// Insert arguments into the format string
|
|
//
|
|
va_start(args, hInstance);
|
|
if (IS_INTRESOURCE(pszMsgFmt))
|
|
dwFormatResult = vFormatStringID(&szMsg, hInstance, (UINT)((ULONG_PTR)pszMsgFmt), &args);
|
|
else
|
|
dwFormatResult = vFormatString(&szMsg, pszMsgFmt, &args);
|
|
va_end(args);
|
|
|
|
if (!dwFormatResult)
|
|
return -1;
|
|
|
|
//
|
|
// Load the caption if necessary
|
|
//
|
|
if (pszTitle && IS_INTRESOURCE(pszTitle))
|
|
{
|
|
if (LoadStringAlloc(&szTitle, hInstance, (UINT)((ULONG_PTR)pszTitle)))
|
|
pszTitle = szTitle;
|
|
else
|
|
pszTitle = NULL;
|
|
}
|
|
|
|
//
|
|
// Display message box
|
|
//
|
|
nResult = MessageBox(hwnd, szMsg, pszTitle, uType);
|
|
|
|
LocalFreeString(&szMsg);
|
|
LocalFreeString(&szTitle);
|
|
|
|
return nResult;
|
|
}
|
|
|
|
|
|
/*******************************************************************
|
|
|
|
NAME: SysMsgPopup
|
|
|
|
SYNOPSIS: Displays a message to the user using a system error
|
|
message as an insert.
|
|
|
|
ENTRY: hwnd - Owner window handle
|
|
pszMsg - Main message text
|
|
pszTitle - MessageBox title
|
|
uType - MessageBox flags
|
|
hInstance - Module to load strings from. Only required if
|
|
pszMsg or pszTitle is a string resource ID.
|
|
dwErrorID - System defined error code (Insert 1)
|
|
pszInsert2 - Optional string to be inserted into pszMsg
|
|
|
|
EXIT:
|
|
|
|
RETURNS: MessageBox result
|
|
|
|
NOTES: Any of the string parameters may be string resource ID's.
|
|
|
|
HISTORY:
|
|
JeffreyS 11-Jun-1997 Created
|
|
|
|
********************************************************************/
|
|
|
|
int
|
|
WINAPI
|
|
SysMsgPopup(HWND hwnd,
|
|
LPCTSTR pszMsg,
|
|
LPCTSTR pszTitle,
|
|
UINT uType,
|
|
HINSTANCE hInstance,
|
|
DWORD dwErrorID,
|
|
LPCTSTR pszInsert2)
|
|
{
|
|
int nResult;
|
|
LPTSTR szInsert2 = NULL;
|
|
LPTSTR szErrorText = NULL;
|
|
|
|
//
|
|
// Load the 2nd insert string if necessary
|
|
//
|
|
if (pszInsert2 && IS_INTRESOURCE(pszInsert2))
|
|
{
|
|
if (LoadStringAlloc(&szInsert2, hInstance, (UINT)((ULONG_PTR)pszInsert2)))
|
|
pszInsert2 = szInsert2;
|
|
else
|
|
pszInsert2 = NULL;
|
|
}
|
|
|
|
//
|
|
// Get the error message string
|
|
//
|
|
if (dwErrorID)
|
|
{
|
|
GetSystemErrorText(&szErrorText, dwErrorID);
|
|
}
|
|
|
|
nResult = MsgPopup(hwnd, pszMsg, pszTitle, uType, hInstance, szErrorText, pszInsert2);
|
|
|
|
LocalFreeString(&szInsert2);
|
|
LocalFreeString(&szErrorText);
|
|
|
|
return nResult;
|
|
}
|