windows-nt/Source/XPSP1/NT/multimedia/directx/dplay/dvoice/dpvxlib/dpvxchar.cpp
2020-09-26 16:20:57 +08:00

81 lines
1.5 KiB
C++

/*==========================================================================
*
* Copyright (C) 1999 Microsoft Corporation. All Rights Reserved.
*
* File: dpvxlib.cpp
* Content: Useful char utility functions lib for sample apps
*
* History:
* Date By Reason
* ==== == ======
* 10/07/99 rodtoll Created It
* 06/28/2000 rodtoll Prefix Bug #38033
*
***************************************************************************/
#include "dpvxlibpch.h"
// Conversion Functions
int DPVDX_WideToAnsi(LPSTR lpStr,LPWSTR lpWStr,int cchStr)
{
int rval;
BOOL bDefault = FALSE;
if (!lpWStr && cchStr)
{
DebugBreak();
return 0;
}
// use the default code page (CP_ACP)
// -1 indicates WStr must be null terminated
rval = WideCharToMultiByte(CP_ACP,0,lpWStr,-1,lpStr,cchStr,
"-",&bDefault);
if (bDefault)
{
DebugBreak();
}
return rval;
}
HRESULT DPVDX_AllocAndConvertToANSI(LPSTR * ppszAnsi,LPWSTR lpszWide)
{
int iStrLen;
if (!lpszWide)
{
*ppszAnsi = NULL;
return S_OK;
}
// call wide to ansi to find out how big +1 for terminating NULL
iStrLen = DPVDX_WideToAnsi(NULL,lpszWide,0) + 1;
*ppszAnsi = new char[iStrLen];
if (!*ppszAnsi)
{
return E_OUTOFMEMORY;
}
DPVDX_WideToAnsi(*ppszAnsi,lpszWide,iStrLen);
return S_OK;
}
int DPVDX_AnsiToWide(LPWSTR lpWStr,LPSTR lpStr,int cchWStr)
{
int rval;
if (!lpStr && cchWStr)
{
return 0;
}
rval = MultiByteToWideChar(CP_ACP,0,lpStr,-1,lpWStr,cchWStr);
return rval;
} // AnsiToWide