Windows2003-3790/windows/richedit/re30/w32wince.cpp
2020-09-30 16:53:55 +02:00

1125 lines
25 KiB
C++

// Windows CE implementations of W32 Interfaces.
// The following function is needed only because a Windows CE dll must have at least one export
__declspec(dllexport) void Useless( void )
{
return;
}
LONG ValidateTextRange(TEXTRANGE *pstrg);
ATOM WINAPI CW32System::RegisterREClass(
const WNDCLASSW *lpWndClass,
const char *szAnsiClassName,
WNDPROC AnsiWndProc
)
{
// On Windows CE we don't do anything with ANSI window class
return ::RegisterClass(lpWndClass);
}
LRESULT CW32System::ANSIWndProc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
// Should never be used in WinCE
#pragma message ("Review : Incomplete")
return 0;
}
HGLOBAL WINAPI CW32System::GlobalAlloc( UINT uFlags, DWORD dwBytes )
{
#ifdef TARGET_NT
return ::GlobalAlloc( uFlags, dwBytes);
#else
return LocalAlloc( uFlags & GMEM_ZEROINIT, dwBytes );
#endif
}
HGLOBAL WINAPI CW32System::GlobalFree( HGLOBAL hMem )
{
#ifdef TARGET_NT
return ::GlobalFree( hMem );
#else
return LocalFree( hMem );
#endif
}
UINT WINAPI CW32System::GlobalFlags( HGLOBAL hMem )
{
#ifdef TARGET_NT
return ::GlobalFlags( hMem );
#else
return LocalFlags( hMem );
#endif
}
HGLOBAL WINAPI CW32System::GlobalReAlloc( HGLOBAL hMem, DWORD dwBytes, UINT uFlags )
{
#ifdef TARGET_NT
return ::GlobalReAlloc(hMem, dwBytes, uFlags);
#else
return LocalReAlloc( hMem, dwBytes, uFlags );
#endif
}
DWORD WINAPI CW32System::GlobalSize( HGLOBAL hMem )
{
#ifdef TARGET_NT
return ::GlobalSize( hMem );
#else
return LocalSize( hMem );
#endif
}
LPVOID WINAPI CW32System::GlobalLock( HGLOBAL hMem )
{
#ifdef TARGET_NT
return ::GlobalLock( hMem );
#else
return LocalLock( hMem );
#endif
}
HGLOBAL WINAPI CW32System::GlobalHandle( LPCVOID pMem )
{
#ifdef TARGET_NT
return ::GlobalHandle( pMem );
#else
return LocalHandle( pMem );
#endif
}
BOOL WINAPI CW32System::GlobalUnlock( HGLOBAL hMem )
{
#ifdef TARGET_NT
return ::GlobalUnlock( hMem );
#else
return LocalUnlock( hMem );
#endif
}
BOOL WINAPI CW32System::REGetCharWidth(
HDC hdc,
UINT iChar,
LPINT pAns,
UINT // For Windows CE the code page is not used
// as the A version is not called.
)
{
int i;
SIZE size;
TCHAR buff[2];
buff[0] = iChar;
buff[1] = 0;
if (GetTextExtentExPoint(hdc, buff, 1, 32000, &i, (LPINT)pAns, &size))
{
// pWidthData->width -= xOverhang; // Don't need since we use
// GetTextExtentPoint32()
return TRUE;
}
return FALSE;
}
BOOL WINAPI CW32System::REExtTextOut(
CONVERTMODE cm,
UINT uiCodePage,
HDC hdc,
int x,
int y,
UINT fuOptions,
CONST RECT *lprc,
const WCHAR *lpString,
UINT cbCount,
CONST INT *lpDx,
BOOL FEFontOnNonFEWin95
)
{
#pragma message ("Review : Incomplete")
return ExtTextOut(hdc, x, y, fuOptions, lprc, lpString, cbCount, lpDx);
}
CONVERTMODE WINAPI CW32System::DetermineConvertMode( BYTE tmCharSet )
{
#pragma message ("Review : Incomplete")
return CVT_NONE;
}
void WINAPI CW32System::CalcUnderlineInfo( CCcs *pcccs, TEXTMETRIC *ptm )
{
// Default calculation of size of underline
// Implements a heuristic in the absence of better font information.
SHORT dyDescent = pcccs->_yDescent;
if (0 == dyDescent)
{
dyDescent = pcccs->_yHeight >> 3;
}
pcccs->_dyULWidth = max(1, dyDescent / 4);
pcccs->_dyULOffset = (dyDescent - 3 * pcccs->_dyULWidth + 1) / 2;
if ((0 == pcccs->_dyULOffset) && (dyDescent > 1))
{
pcccs->_dyULOffset = 1;
}
pcccs->_dySOOffset = -ptm->tmAscent / 3;
pcccs->_dySOWidth = pcccs->_dyULWidth;
return;
}
BOOL WINAPI CW32System::ShowScrollBar( HWND hWnd, int wBar, BOOL bShow, LONG nMax )
{
SCROLLINFO si;
Assert(wBar == SB_VERT || wBar == SB_HORZ);
W32->ZeroMemory(&si, sizeof(SCROLLINFO));
si.cbSize = sizeof(SCROLLINFO);
si.fMask = SIF_RANGE | SIF_DISABLENOSCROLL;
if (bShow)
{
si.nMax = nMax;
}
::SetScrollInfo(hWnd, wBar, &si, TRUE);
return TRUE;
}
BOOL WINAPI CW32System::EnableScrollBar( HWND hWnd, UINT wSBflags, UINT wArrows )
{
BOOL fEnable = TRUE;
BOOL fApi;
SCROLLINFO si;
Assert (wSBflags == SB_VERT || wSBflags == SB_HORZ);
if (wArrows == ESB_DISABLE_BOTH)
{
fEnable = FALSE;
}
// Get the current scroll range
W32->ZeroMemory(&si, sizeof(SCROLLINFO));
si.cbSize = sizeof(SCROLLINFO);
si.fMask = SIF_RANGE;
fApi = ::GetScrollInfo(hWnd, wSBflags, &si);
if (fApi && !fEnable)
{
si.fMask = SIF_RANGE | SIF_DISABLENOSCROLL;
si.nMin = 0;
si.nMax = 0;
}
if (fApi) ::SetScrollInfo(hWnd, wSBflags, &si, TRUE);
return fApi ? TRUE : FALSE;
}
BOOL WINAPI CW32System::IsEnhancedMetafileDC( HDC )
{
// No enhanced metafile
return FALSE;
}
UINT WINAPI CW32System::GetTextAlign(HDC hdc)
{
// Review :: SHould we set last error?
return GDI_ERROR;
}
UINT WINAPI CW32System::SetTextAlign(HDC hdc, UINT uAlign)
{
// Review :: SHould we set last error?
return GDI_ERROR;
}
UINT WINAPI CW32System::InvertRect(HDC hdc, CONST RECT *prc)
{
HBITMAP hbm, hbmOld;
HDC hdcMem;
int nHeight, nWidth;
nWidth = prc->right-prc->left;
nHeight = prc->bottom-prc->top;
hdcMem = CreateCompatibleDC(hdc);
hbm = CreateCompatibleBitmap(hdc, nWidth, nHeight);
hbmOld = (HBITMAP) SelectObject(hdcMem, hbm);
BitBlt(hdcMem, 0, 0, nWidth, nHeight, hdc, prc->left, prc->top,
SRCCOPY);
FillRect(hdc, prc, (HBRUSH)GetStockObject(WHITE_BRUSH));
BitBlt(hdc, prc->left, prc->top, nWidth,
nHeight, hdcMem, 0, 0, SRCINVERT);
SelectObject(hdcMem, hbmOld);
DeleteDC(hdcMem);
DeleteObject(hbm);
return TRUE;
}
HPALETTE WINAPI CW32System::ManagePalette(
HDC,
CONST LOGPALETTE *,
HPALETTE &,
HPALETTE &
)
{
// No op for Windows CE
return NULL;
}
int WINAPI CW32System::GetMapMode(HDC)
{
// Only MM Text supported on Win CE
return MM_TEXT;
}
BOOL WINAPI CW32System::WinLPtoDP(HDC, LPPOINT, int)
{
// This is not available on Win CE
return 0;
}
long WINAPI CW32System::WvsprintfA( LONG cbBuf, LPSTR pszBuf, LPCSTR pszFmt, va_list arglist )
{
WCHAR wszBuf[64];
WCHAR wszFmt[64];
WCHAR *pwszBuf = wszBuf;
WCHAR *pwszFmt = wszFmt;
Assert(cbBuf < 64);
while (*pszFmt)
{
*pwszFmt++ = *pszFmt++;
if (*(pwszFmt - 1) == '%')
{
Assert(*pszFmt == 's' || *pszFmt == 'd' || *pszFmt == '0' || *pszFmt == 'c');
if (*pszFmt == 's')
{
*pwszFmt++ = 'h';
}
}
}
*pwszFmt = 0;
LONG cw = wvsprintf( wszBuf, wszFmt, arglist );
while (*pszBuf++ = *pwszBuf++);
Assert(cw < cbBuf);
return cw;
}
int WINAPI CW32System::MulDiv(int nNumber, int nNumerator, int nDenominator)
{
// Special handling for Win CE
// Must be careful to not cause divide by zero
// Note that overflow on the multiplication is not handled
// Hopefully that is not a problem for RichEdit use
// Added Guy's fix up for rounding.
// Conservative check to see if multiplication will overflow.
if (IN_RANGE(_I16_MIN, nNumber, _I16_MAX) &&
IN_RANGE(_I16_MIN, nNumerator, _I16_MAX))
{
return nDenominator ? ((nNumber * nNumerator) + (nDenominator / 2)) / nDenominator : -1;
}
__int64 NNumber = nNumber;
__int64 NNumerator = nNumerator;
__int64 NDenominator = nDenominator;
return NDenominator ? ((NNumber * NNumerator) + (NDenominator / 2)) / NDenominator : -1;
}
void CW32System::GetFacePriCharSet(HDC hdc, LOGFONT* plf)
{
plf->lfCharSet = 0;
}
void CW32System::CheckChangeKeyboardLayout ( CTxtSelection *psel, BOOL fChangedFont )
{
#pragma message ("Review : Incomplete")
return;
}
void CW32System::CheckChangeFont (
CTxtSelection *psel,
CTxtEdit * const ped,
BOOL fEnableReassign, // @parm Do we enable CTRL key?
const WORD lcID, // @parm LCID from WM_ message
UINT cpg // @parm code page to use (could be ANSI for far east with IME off)
)
{
#pragma message ("Review : Incomplete")
return;
}
HKL CW32System::GetKeyboardLayout ( DWORD )
{
#pragma message ("Review : Incomplete")
return NULL;
}
HRESULT CW32System::LoadRegTypeLib ( REFGUID, WORD, WORD, LCID, ITypeLib ** )
{
return E_NOTIMPL;
}
HRESULT CW32System::LoadTypeLib ( const OLECHAR *, ITypeLib ** )
{
return E_NOTIMPL;
}
BSTR CW32System::SysAllocString ( const OLECHAR * )
{
#pragma message ("Review : Incomplete")
return NULL;
}
BSTR CW32System::SysAllocStringLen ( const OLECHAR *, UINT )
{
#pragma message ("Review : Incomplete")
return NULL;
}
void CW32System::SysFreeString ( BSTR )
{
#pragma message ("Review : Incomplete")
return;
}
UINT CW32System::SysStringLen ( BSTR )
{
#pragma message ("Review : Incomplete")
return 0;
}
void CW32System::VariantInit ( VARIANTARG * )
{
#pragma message ("Review : Incomplete")
return;
}
HRESULT CW32System::OleCreateFromData ( LPDATAOBJECT, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, void ** )
{
#pragma message ("Review : Incomplete")
return 0;
}
void CW32System::CoTaskMemFree ( LPVOID )
{
#pragma message ("Review : Incomplete")
return;
}
HRESULT CW32System::CreateBindCtx ( DWORD, LPBC * )
{
#pragma message ("Review : Incomplete")
return 0;
}
HANDLE CW32System::OleDuplicateData ( HANDLE, CLIPFORMAT, UINT )
{
#pragma message ("Review : Incomplete")
return NULL;
}
HRESULT CW32System::CoTreatAsClass ( REFCLSID, REFCLSID )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::ProgIDFromCLSID ( REFCLSID, LPOLESTR * )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::OleConvertIStorageToOLESTREAM ( LPSTORAGE, LPOLESTREAM )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::OleConvertIStorageToOLESTREAMEx ( LPSTORAGE, CLIPFORMAT, LONG, LONG, DWORD, LPSTGMEDIUM, LPOLESTREAM )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::OleSave ( LPPERSISTSTORAGE, LPSTORAGE, BOOL )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::StgCreateDocfileOnILockBytes ( ILockBytes *, DWORD, DWORD, IStorage ** )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::CreateILockBytesOnHGlobal ( HGLOBAL, BOOL, ILockBytes ** )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::OleCreateLinkToFile ( LPCOLESTR, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, void ** )
{
#pragma message ("Review : Incomplete")
return 0;
}
LPVOID CW32System::CoTaskMemAlloc ( ULONG )
{
#pragma message ("Review : Incomplete")
return NULL;
}
LPVOID CW32System::CoTaskMemRealloc ( LPVOID, ULONG )
{
#pragma message ("Review : Incomplete")
return NULL;
}
HRESULT CW32System::OleInitialize ( LPVOID )
{
#pragma message ("Review : Incomplete")
return 0;
}
void CW32System::OleUninitialize ( )
{
#pragma message ("Review : Incomplete")
return;
}
HRESULT CW32System::OleSetClipboard ( IDataObject * )
{
return E_NOTIMPL;
}
HRESULT CW32System::OleFlushClipboard ( )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::OleIsCurrentClipboard ( IDataObject * )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::DoDragDrop ( IDataObject *, IDropSource *, DWORD, DWORD * )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::OleGetClipboard ( IDataObject ** )
{
return E_NOTIMPL;
}
HRESULT CW32System::RegisterDragDrop ( HWND, IDropTarget * )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::OleCreateLinkFromData ( IDataObject *, REFIID, DWORD, LPFORMATETC, IOleClientSite *, IStorage *, void ** )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::OleCreateStaticFromData ( IDataObject *, REFIID, DWORD, LPFORMATETC, IOleClientSite *, IStorage *, void ** )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::OleDraw ( IUnknown *, DWORD, HDC, LPCRECT )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::OleSetContainedObject ( IUnknown *, BOOL )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::CoDisconnectObject ( IUnknown *, DWORD )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::WriteFmtUserTypeStg ( IStorage *, CLIPFORMAT, LPOLESTR )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::WriteClassStg ( IStorage *, REFCLSID )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::SetConvertStg ( IStorage *, BOOL )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::ReadFmtUserTypeStg ( IStorage *, CLIPFORMAT *, LPOLESTR * )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::ReadClassStg ( IStorage *pstg, CLSID * )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::OleRun ( IUnknown * )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::RevokeDragDrop ( HWND )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::CreateStreamOnHGlobal ( HGLOBAL, BOOL, IStream ** )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::GetHGlobalFromStream ( IStream *pstm, HGLOBAL * )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::OleCreateDefaultHandler ( REFCLSID, IUnknown *, REFIID, void ** )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::CLSIDFromProgID ( LPCOLESTR, LPCLSID )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::OleConvertOLESTREAMToIStorage ( LPOLESTREAM, IStorage *, const DVTARGETDEVICE * )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::OleLoad ( IStorage *, REFIID, IOleClientSite *, void ** )
{
#pragma message ("Review : Incomplete")
return 0;
}
HRESULT CW32System::ReleaseStgMedium ( LPSTGMEDIUM pstgmed)
{
#pragma message ("Review : Incomplete")
// we don't use anything other than TYMED_HGLOBAL currently.
if (pstgmed && (pstgmed->tymed == TYMED_HGLOBAL)) {
::LocalFree(pstgmed->hGlobal);
}
return 0;
}
HRESULT CW32System::CoCreateInstance (REFCLSID rclsid, LPUNKNOWN pUnknown,
DWORD dwClsContext, REFIID riid, LPVOID *ppv)
{
#pragma message ("Review : Incomplete")
return S_FALSE;
}
void CW32System::FreeOle()
{
#pragma message ("Review : Incomplete")
}
void CW32System::FreeIME()
{
#pragma message ("Review : Incomplete")
}
BOOL CW32System::HaveAIMM()
{
#pragma message ("Review : Incomplete")
return FALSE;
}
BOOL CW32System::HaveIMEShare()
{
#pragma message ("Review : Incomplete")
return FALSE;
}
BOOL CW32System::getIMEShareObject(CIMEShare **ppIMEShare)
{
#pragma message ("Review : Incomplete")
return FALSE;
}
LRESULT CW32System::AIMMDefWndProc(HWND hWnd, UINT msg, WPARAM wparam, LPARAM lparam, LRESULT *plres)
{
#pragma message ("Review : Incomplete")
return S_FALSE;
}
LRESULT CW32System::AIMMGetCodePage(HKL hKL, UINT *uCodePage)
{
#pragma message ("Review : Incomplete")
return S_FALSE;
}
LRESULT CW32System::AIMMActivate(BOOL fRestoreLayout)
{
#pragma message ("Review : Incomplete")
return S_FALSE;
}
LRESULT CW32System::AIMMDeactivate(void)
{
#pragma message ("Review : Incomplete")
return S_FALSE;
}
LRESULT CW32System::AIMMFilterClientWindows(ATOM *aaClassList, UINT uSize)
{
#pragma message ("Review : Incomplete")
return S_FALSE;
}
BOOL CW32System::ImmInitialize( void )
{
#pragma message ("Review : Incomplete")
return FALSE;
}
void CW32System::ImmTerminate( void )
{
#pragma message ("Review : Incomplete")
return;
}
LONG CW32System::ImmGetCompositionStringA ( HIMC, DWORD, LPVOID, DWORD )
{
#pragma message ("Review : Incomplete")
return 0;
}
HIMC CW32System::ImmGetContext ( HWND )
{
#pragma message ("Review : Incomplete")
return 0;
}
BOOL CW32System::ImmSetCompositionFontA ( HIMC, LPLOGFONTA )
{
#pragma message ("Review : Incomplete")
return FALSE;
}
BOOL CW32System::ImmSetCompositionWindow ( HIMC, LPCOMPOSITIONFORM )
{
#pragma message ("Review : Incomplete")
return FALSE;
}
BOOL CW32System::ImmReleaseContext ( HWND, HIMC )
{
#pragma message ("Review : Incomplete")
return FALSE;
}
DWORD CW32System::ImmGetProperty ( HKL, DWORD )
{
#pragma message ("Review : Incomplete")
return 0;
}
BOOL CW32System::ImmGetCandidateWindow ( HIMC, DWORD, LPCANDIDATEFORM )
{
#pragma message ("Review : Incomplete")
return FALSE;
}
BOOL CW32System::ImmSetCandidateWindow ( HIMC, LPCANDIDATEFORM )
{
#pragma message ("Review : Incomplete")
return FALSE;
}
BOOL CW32System::ImmNotifyIME ( HIMC, DWORD, DWORD, DWORD )
{
#pragma message ("Review : Incomplete")
return FALSE;
}
HIMC CW32System::ImmAssociateContext ( HWND, HIMC )
{
#pragma message ("Review : Incomplete")
return NULL;
}
UINT CW32System::ImmGetVirtualKey ( HWND )
{
#pragma message ("Review : Incomplete")
return 0;
}
HIMC CW32System::ImmEscape ( HKL, HIMC, UINT, LPVOID )
{
#pragma message ("Review : Incomplete")
return NULL;
}
LONG CW32System::ImmGetOpenStatus ( HIMC )
{
#pragma message ("Review : Incomplete")
return 0;
}
BOOL CW32System::ImmGetConversionStatus ( HIMC, LPDWORD, LPDWORD )
{
#pragma message ("Review : Incomplete")
return FALSE;
}
HWND CW32System::ImmGetDefaultIMEWnd ( HWND )
{
#pragma message ("Review : Incomplete")
return NULL;
}
BOOL CW32System::FSupportSty ( UINT, UINT )
{
#pragma message ("Review : Incomplete")
return FALSE;
}
const IMESTYLE * CW32System::PIMEStyleFromAttr ( const UINT )
{
#pragma message ("Review : Incomplete")
return NULL;
}
const IMECOLORSTY * CW32System::PColorStyleTextFromIMEStyle ( const IMESTYLE * )
{
#pragma message ("Review : Incomplete")
return NULL;
}
const IMECOLORSTY * CW32System::PColorStyleBackFromIMEStyle ( const IMESTYLE * )
{
#pragma message ("Review : Incomplete")
return NULL;
}
BOOL CW32System::FBoldIMEStyle ( const IMESTYLE * )
{
#pragma message ("Review : Incomplete")
return FALSE;
}
BOOL CW32System::FItalicIMEStyle ( const IMESTYLE * )
{
#pragma message ("Review : Incomplete")
return FALSE;
}
BOOL CW32System::FUlIMEStyle ( const IMESTYLE * )
{
#pragma message ("Review : Incomplete")
return FALSE;
}
UINT CW32System::IdUlIMEStyle ( const IMESTYLE * )
{
#pragma message ("Review : Incomplete")
return 0;
}
COLORREF CW32System::RGBFromIMEColorStyle ( const IMECOLORSTY * )
{
#pragma message ("Review : Incomplete")
return 0;
}
BOOL CW32System::GetVersion(
DWORD *pdwPlatformId,
DWORD *pdwMajorVersion
)
{
OSVERSIONINFO osv;
osv.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
*pdwPlatformId = 0;
*pdwMajorVersion = 0;
if (GetVersionEx(&osv))
{
*pdwPlatformId = osv.dwPlatformId;
*pdwMajorVersion = osv.dwMajorVersion;
return TRUE;
}
return FALSE;
}
BOOL WINAPI CW32System::GetStringTypeEx(
LCID lcid,
DWORD dwInfoType,
LPCTSTR lpSrcStr,
int cchSrc,
LPWORD lpCharType
)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "GetStringTypeEx");
return ::GetStringTypeExW(lcid, dwInfoType, lpSrcStr, cchSrc, lpCharType);
}
LPWSTR WINAPI CW32System::CharLower(LPWSTR pwstr)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "CharLowerWrap");
return ::CharLowerW(pwstr);
}
DWORD WINAPI CW32System::CharLowerBuff(LPWSTR pwstr, DWORD cchLength)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "CharLowerBuffWrap");
return ::CharLowerBuffW(pwstr, cchLength);
}
DWORD WINAPI CW32System::CharUpperBuff(LPWSTR pwstr, DWORD cchLength)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "CharUpperBuffWrap");
return ::CharUpperBuffW(pwstr, cchLength);
}
HDC WINAPI CW32System::CreateIC(
LPCWSTR lpszDriver,
LPCWSTR lpszDevice,
LPCWSTR lpszOutput,
CONST DEVMODEW * lpInitData)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "CreateIC");
return ::CreateDCW( lpszDriver, lpszDevice, lpszOutput, lpInitData);
}
HANDLE WINAPI CW32System::CreateFile(
LPCWSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "CreateFile");
return ::CreateFileW(lpFileName,
dwDesiredAccess,
dwShareMode,
lpSecurityAttributes,
dwCreationDisposition,
dwFlagsAndAttributes,
hTemplateFile);
}
HFONT WINAPI CW32System::CreateFontIndirect(CONST LOGFONTW * plfw)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "CreateFontIndirect");
return ::CreateFontIndirectW(plfw);
}
int WINAPI CW32System::CompareString (
LCID Locale, // locale identifier
DWORD dwCmpFlags, // comparison-style options
LPCWSTR lpString1, // pointer to first string
int cchCount1, // size, in bytes or characters, of first string
LPCWSTR lpString2, // pointer to second string
int cchCount2 // size, in bytes or characters, of second string
)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "CompareString");
return ::CompareStringW(Locale, dwCmpFlags, lpString1, cchCount1, lpString2, cchCount2);
}
LRESULT WINAPI CW32System::DefWindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "DefWindowProc");
return ::DefWindowProcW(hWnd, msg, wParam, lParam);
}
int WINAPI CW32System::GetObject(HGDIOBJ hgdiObj, int cbBuffer, LPVOID lpvObj)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "GetObject");
return ::GetObjectW( hgdiObj, cbBuffer, lpvObj );
}
DWORD APIENTRY CW32System::GetProfileSection(
LPCWSTR ,
LPWSTR ,
DWORD
)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "GetProfileSection");
// Not available on Win CE
return 0;
}
int WINAPI CW32System::GetTextFace(
HDC hdc,
int cch,
LPWSTR lpFaceName
)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "GetTextFaceWrap");
return ::GetTextFaceW( hdc, cch, lpFaceName );
}
BOOL WINAPI CW32System::GetTextMetrics(HDC hdc, LPTEXTMETRICW lptm)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "GetTextMetrics");
return ::GetTextMetricsW( hdc, lptm);
}
LONG WINAPI CW32System::GetWindowLong(HWND hWnd, int nIndex)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "GetWindowLong");
return ::GetWindowLongW(hWnd, nIndex);
}
DWORD WINAPI CW32System::GetClassLong(HWND hWnd, int nIndex)
{
#pragma message ("Review : Incomplete")
return 0;
}
HBITMAP WINAPI CW32System::LoadBitmap(HINSTANCE hInstance, LPCWSTR lpBitmapName)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "LoadBitmap");
Assert(HIWORD(lpBitmapName) == 0);
return ::LoadBitmapW(hInstance, lpBitmapName);
}
HCURSOR WINAPI CW32System::LoadCursor(HINSTANCE hInstance, LPCWSTR lpCursorName)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "LoadCursor");
Assert(HIWORD(lpCursorName) == 0);
return (HCURSOR)lpCursorName;
}
HINSTANCE WINAPI CW32System::LoadLibrary(LPCWSTR lpLibFileName)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "LoadLibrary");
return ::LoadLibraryW(lpLibFileName);
}
LRESULT WINAPI CW32System::SendMessage(
HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "SendMessage");
return ::SendMessageW(hWnd, Msg, wParam, lParam);
}
LONG WINAPI CW32System::SetWindowLong(HWND hWnd, int nIndex, LONG dwNewLong)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "SetWindowLongWrap");
return ::SetWindowLongW(hWnd, nIndex, dwNewLong);
}
BOOL WINAPI CW32System::PostMessage(
HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "PostMessage");
return ::PostMessageW(hWnd, Msg, wParam, lParam);
}
BOOL WINAPI CW32System::UnregisterClass(LPCWSTR lpClassName, HINSTANCE hInstance)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "UnregisterClass");
return ::UnregisterClassW( lpClassName, hInstance);
}
int WINAPI CW32System::lstrcmp(LPCWSTR lpString1, LPCWSTR lpString2)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "lstrcmp");
return ::lstrcmpW(lpString1, lpString2);
}
int WINAPI CW32System::lstrcmpi(LPCWSTR lpString1, LPCWSTR lpString2)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "lstrcmpi");
return ::lstrcmpiW(lpString1, lpString2);
}
BOOL WINAPI CW32System::PeekMessage(
LPMSG lpMsg,
HWND hWnd,
UINT wMsgFilterMin,
UINT wMsgFilterMax,
UINT wRemoveMsg
)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "PeekMessage");
return ::PeekMessageW(lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax, wRemoveMsg);
}
DWORD WINAPI CW32System::GetModuleFileName(
HMODULE hModule,
LPWSTR lpFilename,
DWORD nSize
)
{
TRACEBEGIN(TRCSUBSYSWRAP, TRCSCOPEINTERN, "GetModuleFileName");
// On Windows CE we will always be known as riched20.dll
CopyMemory(lpFilename, TEXT("riched20.dll"), sizeof(TEXT("riched20.dll")));
return sizeof(TEXT("riched20.dll"))/sizeof(WCHAR) - 1;
}
BOOL WINAPI CW32System::GetCursorPos(
POINT *ppt
)
{
DWORD dw;
dw = GetMessagePos();
ppt->x = LOWORD(dw);
ppt->y = HIWORD(dw);
return TRUE;
}
#pragma message("JMO : Need to add Win CE version of InitSysParam!")