// 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!")