81 lines
1.5 KiB
C++
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
|