Files
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

125 lines
3.1 KiB
C++

// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1998 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
#include "stdafx.h"
#ifdef AFX_CORE3_SEG
#pragma code_seg(AFX_CORE3_SEG)
#endif
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// Help and other support
// Strings in format ".....%1 .... %2 ...." etc.
void AFXAPI AfxFormatStrings(CString& rString, UINT nIDS,
LPCTSTR const* rglpsz, int nString)
{
TCHAR szFormat[256];
if (!AfxLoadString(nIDS, szFormat) != 0)
{
TRACE1("Error: failed to load AfxFormatString string 0x%04x.\n", nIDS);
ASSERT(FALSE);
return;
}
AfxFormatStrings(rString, szFormat, rglpsz, nString);
}
void AFXAPI AfxFormatStrings(CString& rString, LPCTSTR lpszFormat,
LPCTSTR const* rglpsz, int nString)
{
// determine length of destination string
int nTotalLen = 0;
LPCTSTR pchSrc = lpszFormat;
while (*pchSrc != '\0')
{
if (pchSrc[0] == '%' &&
( (pchSrc[1] >= '0' && pchSrc[1] <= '9') ||
(pchSrc[1] >= 'A' && pchSrc[1] <= 'Z')) )
{
// %A comes after %9 -- we'll need it someday
int i;
if (pchSrc[1] > '9')
i = 9 + (pchSrc[1] - 'A');
else
i = pchSrc[1] - '1';
pchSrc += 2;
if (i >= nString)
++nTotalLen;
else if (rglpsz[i] != NULL)
nTotalLen += lstrlen(rglpsz[i]);
}
else
{
if (_istlead(*pchSrc))
++nTotalLen, ++pchSrc;
++pchSrc;
++nTotalLen;
}
}
pchSrc = lpszFormat;
LPTSTR pchDest = rString.GetBuffer(nTotalLen);
while (*pchSrc != '\0')
{
if (pchSrc[0] == '%' &&
( (pchSrc[1] >= '0' && pchSrc[1] <= '9') ||
(pchSrc[1] >= 'A' && pchSrc[1] <= 'Z')) )
{
// %A comes after %9 -- we'll need it someday
int i;
if (pchSrc[1] > '9')
i = 9 + (pchSrc[1] - 'A');
else
i = pchSrc[1] - '1';
pchSrc += 2;
if (i >= nString)
{
TRACE1("Error: illegal string index requested %d.\n", i);
*pchDest++ = '?';
}
else if (rglpsz[i] != NULL)
{
lstrcpy(pchDest, rglpsz[i]);
pchDest += lstrlen(pchDest);
}
}
else
{
if (_istlead(*pchSrc))
*pchDest++ = *pchSrc++; // copy first of 2 bytes
*pchDest++ = *pchSrc++;
}
}
rString.ReleaseBuffer((int)((LPCTSTR)pchDest - (LPCTSTR)rString));
// ReleaseBuffer will assert if we went too far
}
void AFXAPI AfxFormatString1(CString& rString, UINT nIDS, LPCTSTR lpsz1)
{
AfxFormatStrings(rString, nIDS, &lpsz1, 1);
}
void AFXAPI AfxFormatString2(CString& rString, UINT nIDS, LPCTSTR lpsz1,
LPCTSTR lpsz2)
{
LPCTSTR rglpsz[2];
rglpsz[0] = lpsz1;
rglpsz[1] = lpsz2;
AfxFormatStrings(rString, nIDS, rglpsz, 2);
}
/////////////////////////////////////////////////////////////////////////////