⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 w32win32.cpp

📁 Windows CE 6.0 Word Application 源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
{
    return ::GlobalAlloc( uFlags, dwBytes );
}

HGLOBAL WINAPI CW32System::GlobalFree( HGLOBAL hMem )
{
    return hMem ? ::GlobalFree( hMem ) : NULL;
}

UINT WINAPI CW32System::GlobalFlags( HGLOBAL hMem )
{
    return ::GlobalFlags( hMem );
}

HGLOBAL WINAPI CW32System::GlobalReAlloc( HGLOBAL hMem, DWORD dwBytes, UINT uFlags )
{
    return ::GlobalReAlloc( hMem, dwBytes, uFlags );
}

DWORD WINAPI CW32System::GlobalSize( HGLOBAL hMem )
{
    return ::GlobalSize( hMem );
}

LPVOID WINAPI CW32System::GlobalLock( HGLOBAL hMem )
{
    return ::GlobalLock( hMem );
}

HGLOBAL WINAPI CW32System::GlobalHandle( LPCVOID pMem )
{
    return ::GlobalHandle( pMem );
}

BOOL WINAPI CW32System::GlobalUnlock( HGLOBAL hMem )
{
    return ::GlobalUnlock( hMem );
}

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;
}

BOOL CW32System::FormatMatchesKeyboard( const CCharFormat *pFormat )
{
    #pragma message ("Review : Incomplete")
    return FALSE;
}

HKL CW32System::GetKeyboardLayout( DWORD dwTId )
{
    return ::GetKeyboardLayout( dwTId );
}

int CW32System::GetKeyboardLayoutList ( int, HKL FAR * )
{
    #pragma message ("Review : Incomplete")
    return 0;
}

enum DLL_ENUM{
    DLL_OLEAUT32,
    DLL_OLE32
};

static HINSTANCE hOleAut32 = NULL;
static HINSTANCE hOle32 = NULL;

static void SetProcAddr( void * &pfunc, DLL_ENUM which, char * fname )
{
    HINSTANCE hdll = NULL;
    EnterCriticalSection(&g_CriticalSection);
    if (pfunc == NULL)
    {
        switch (which) {
        case DLL_OLEAUT32 :
            if (hOleAut32 == NULL)
                hOleAut32 = W32->LoadLibrary(L"oleaut32.dll" );
            Assert( hOleAut32 != NULL );
            hdll = hOleAut32;
            break;
        case DLL_OLE32 :
            if (hOle32 == NULL)
                hOle32 = W32->LoadLibrary(L"ole32.dll" );
            Assert( hOle32 != NULL );
            hdll = hOle32;
            break;
        }
        Assert(hdll != NULL);
        pfunc = GetProcAddress( hdll, fname );
    }
    Assert(pfunc != NULL );
    LeaveCriticalSection(&g_CriticalSection);
}

void CW32System::FreeOle()
{
    if (hOleAut32 || hOle32) {
        EnterCriticalSection(&g_CriticalSection);
        if (hOleAut32 != NULL && FreeLibrary(hOleAut32)) {
            hOleAut32 = NULL;
        }
        if (hOle32 != NULL && FreeLibrary(hOle32)) {
            hOle32 = NULL;
        }
        LeaveCriticalSection(&g_CriticalSection);
    }
}

#define RE_OLEAUTAPI(name)      DECLSPEC_IMPORT HRESULT (STDAPICALLTYPE *name)
#define RE_OLEAUTAPI_(type, name)   DECLSPEC_IMPORT type (STDAPICALLTYPE *name)

typedef RE_OLEAUTAPI(LRTL_CAST)(REFGUID, WORD, WORD, LCID, ITypeLib **);
HRESULT CW32System::LoadRegTypeLib (
    REFGUID rguid,
    WORD wmajor,
    WORD wminor,
    LCID lcid,
    ITypeLib ** pptlib
)
{
    static void *pLoadRegTypeLib = NULL;
    if (pLoadRegTypeLib == NULL)
        SetProcAddr( pLoadRegTypeLib, DLL_OLEAUT32, "LoadRegTypeLib" );
    return ((LRTL_CAST)pLoadRegTypeLib)(rguid, wmajor, wminor, lcid, pptlib);
}

typedef RE_OLEAUTAPI(LTL_CAST)(const OLECHAR *, ITypeLib **);
HRESULT CW32System::LoadTypeLib ( const OLECHAR *szfile, ITypeLib **pptlib )
{
    static void *pLoadTypeLib = NULL;
    if (pLoadTypeLib == NULL)
        SetProcAddr( pLoadTypeLib, DLL_OLEAUT32, "LoadTypeLib" );
    return ((LTL_CAST)pLoadTypeLib)(szfile, pptlib);
}

typedef RE_OLEAUTAPI_(BSTR, SAS_CAST)(const OLECHAR *);
BSTR CW32System::SysAllocString ( const OLECHAR * sz )
{
    static void *pSysAllocString = NULL;
    if (pSysAllocString == NULL)
        SetProcAddr( pSysAllocString, DLL_OLEAUT32, "SysAllocString" );
    return ((SAS_CAST)pSysAllocString)(sz);
}

typedef RE_OLEAUTAPI_(BSTR, SASL_CAST)(const OLECHAR *, UINT);
BSTR CW32System::SysAllocStringLen ( const OLECHAR *pch, UINT cch )
{
    static void *pSysAllocStringLen = NULL;
    if (pSysAllocStringLen == NULL)
        SetProcAddr( pSysAllocStringLen, DLL_OLEAUT32, "SysAllocStringLen" );
    return ((SASL_CAST)pSysAllocStringLen)(pch, cch);
}

typedef RE_OLEAUTAPI_(void, SFS_CAST)(BSTR);
void CW32System::SysFreeString ( BSTR bstr )
{
    static void *pSysFreeString = NULL;
    if (pSysFreeString == NULL)
        SetProcAddr( pSysFreeString, DLL_OLEAUT32, "SysFreeString" );
    ((SFS_CAST)pSysFreeString)(bstr);
}

typedef RE_OLEAUTAPI_(UINT, SSL_CAST)(BSTR);
UINT CW32System::SysStringLen ( BSTR bstr )
{
    static void *pSysStringLen = NULL;
    if (pSysStringLen == NULL)
        SetProcAddr( pSysStringLen, DLL_OLEAUT32, "SysStringLen" );
    return ((SSL_CAST)pSysStringLen)(bstr);
}

typedef RE_OLEAUTAPI_(void, VI_CAST)(VARIANTARG *);
void CW32System::VariantInit ( VARIANTARG * pvarg )
{
    static void *pVariantInit = NULL;
    if (pVariantInit == NULL)
        SetProcAddr( pVariantInit, DLL_OLEAUT32, "VariantInit" );
    ((VI_CAST)pVariantInit)(pvarg);
}

#define RE_OLE32API(name)       DECLSPEC_IMPORT HRESULT (STDAPICALLTYPE *name)
#define RE_OLE32API_(type, name) DECLSPEC_IMPORT type (STDAPICALLTYPE *name)

typedef RE_OLE32API(OCFD_CAST)(LPDATAOBJECT, REFIID, DWORD,
                               LPFORMATETC, LPOLECLIENTSITE,
                               LPSTORAGE, void **);
HRESULT CW32System::OleCreateFromData (
    LPDATAOBJECT pDataObj,
    REFIID riid,
    DWORD renderopt,
    LPFORMATETC pfetc,
    LPOLECLIENTSITE pClientSite,
    LPSTORAGE pStg,
    void **ppvObj
)
{
    static void *pOleCreateFromData = NULL;
    if (pOleCreateFromData == NULL)
        SetProcAddr( pOleCreateFromData, DLL_OLE32, "OleCreateFromData" );
    return ((OCFD_CAST)pOleCreateFromData)(pDataObj, riid, renderopt, pfetc, pClientSite, pStg, ppvObj);
}

typedef RE_OLE32API_(void, CTMF_CAST)(LPVOID);
void CW32System::CoTaskMemFree ( LPVOID pv )
{
    static void *pCoTaskMemFree = NULL;
    if (pCoTaskMemFree == NULL)
        SetProcAddr( pCoTaskMemFree, DLL_OLE32, "CoTaskMemFree" );
    ((CTMF_CAST)pCoTaskMemFree)(pv);
}

typedef RE_OLE32API(CBC_CAST)(DWORD, LPBC *);
HRESULT CW32System::CreateBindCtx ( DWORD reserved, LPBC * ppbc )
{
    static void *pCreateBindCtx = NULL;
    if (pCreateBindCtx == NULL)
        SetProcAddr( pCreateBindCtx, DLL_OLE32, "CreateBindCtx" );
    return ((CBC_CAST)pCreateBindCtx)(reserved, ppbc);
}

typedef RE_OLE32API_(HANDLE, ODD_CAST)(HANDLE, CLIPFORMAT, UINT);
HANDLE CW32System::OleDuplicateData ( HANDLE hSrc, CLIPFORMAT cfFormat, UINT uFlags )
{
    static void *pOleDuplicateData = NULL;
    if (pOleDuplicateData == NULL)
        SetProcAddr( pOleDuplicateData, DLL_OLE32, "OleDuplicateData" );
    return ((ODD_CAST)pOleDuplicateData)(hSrc, cfFormat, uFlags);
}

typedef RE_OLE32API(CTAC_CAST)(REFCLSID, REFCLSID);
HRESULT CW32System::CoTreatAsClass ( REFCLSID clsidold, REFCLSID clsidnew )
{
    static void *pCoTreatAsClass = NULL;
    if (pCoTreatAsClass == NULL)
        SetProcAddr( pCoTreatAsClass, DLL_OLE32, "CoTreatAsClass" );
    return ((CTAC_CAST)pCoTreatAsClass)(clsidold, clsidnew);
}

typedef RE_OLE32API(PIFC_CAST)(REFCLSID, LPOLESTR *);
HRESULT CW32System::ProgIDFromCLSID ( REFCLSID clsid, LPOLESTR * lplpszProgId )
{
    static void *pProgIDFromCLSID = NULL;
    if (pProgIDFromCLSID == NULL)
        SetProcAddr( pProgIDFromCLSID, DLL_OLE32, "ProgIDFromCLSID" );
    return ((PIFC_CAST)pProgIDFromCLSID)(clsid, lplpszProgId);
}

typedef RE_OLE32API(OCITO_CAST)(LPSTORAGE, LPOLESTREAM);
HRESULT CW32System::OleConvertIStorageToOLESTREAM ( LPSTORAGE pstg, LPOLESTREAM lpolestream)
{
    static void *pOleConvertIStorageToOLESTREAM = NULL;
    if (pOleConvertIStorageToOLESTREAM == NULL)
        SetProcAddr( pOleConvertIStorageToOLESTREAM, DLL_OLE32, "OleConvertIStorageToOLESTREAM" );
    return ((OCITO_CAST)pOleConvertIStorageToOLESTREAM)(pstg, lpolestream);
}

typedef RE_OLE32API(OCITOX_CAST)(LPSTORAGE, CLIPFORMAT, LONG, LONG, DWORD, LPSTGMEDIUM, LPOLESTREAM);
HRESULT CW32System::OleConvertIStorageToOLESTREAMEx (
    LPSTORAGE pstg,
    CLIPFORMAT cf,
    LONG lwidth,
    LONG lheight,
    DWORD dwsize,
    LPSTGMEDIUM pmedium,
    LPOLESTREAM lpolestream
)
{
    static void *pOleConvertIStorageToOLESTREAMEx = NULL;
    if (pOleConvertIStorageToOLESTREAMEx == NULL)
        SetProcAddr( pOleConvertIStorageToOLESTREAMEx, DLL_OLE32, "OleConvertIStorageToOLESTREAMEx" );
    return ((OCITOX_CAST)pOleConvertIStorageToOLESTREAMEx)
        (pstg,cf, lwidth, lheight, dwsize, pmedium, lpolestream);
}

typedef RE_OLE32API(OS_CAST)(LPPERSISTSTORAGE, LPSTORAGE, BOOL);
HRESULT CW32System::OleSave ( LPPERSISTSTORAGE pPS, LPSTORAGE pstg, BOOL fSameAsLoad )
{
    static void *pOleSave = NULL;
    if (pOleSave == NULL)
        SetProcAddr( pOleSave, DLL_OLE32, "OleSave" );
    return ((OS_CAST)pOleSave)(pPS, pstg, fSameAsLoad);
}

typedef RE_OLE32API(SCDOI_CAST)(ILockBytes *, DWORD, DWORD, IStorage **);
HRESULT CW32System::StgCreateDocfileOnILockBytes (
    ILockBytes *plkbyt,
    DWORD grfmode,
    DWORD res,
    IStorage **ppstg
)
{
    static void *pStgCreateDocfileOnILockBytes = NULL;
    if (pStgCreateDocfileOnILockBytes == NULL)
        SetProcAddr( pStgCreateDocfileOnILockBytes, DLL_OLE32, "StgCreateDocfileOnILockBytes" );
    return ((SCDOI_CAST)pStgCreateDocfileOnILockBytes)(plkbyt, grfmode, res, ppstg);
}

typedef RE_OLE32API(CIOH_CAST)(HGLOBAL, BOOL, ILockBytes **);
HRESULT CW32System::CreateILockBytesOnHGlobal ( HGLOBAL hGlobal, BOOL fDel, ILockBytes **pplkbyt )
{
    static void *pCreateILockBytesOnHGlobal = NULL;
    if (pCreateILockBytesOnHGlobal == NULL)
        SetProcAddr( pCreateILockBytesOnHGlobal, DLL_OLE32, "CreateILockBytesOnHGlobal" );
    return ((CIOH_CAST)pCreateILockBytesOnHGlobal)(hGlobal, fDel, pplkbyt);
}

typedef RE_OLE32API(OCLTF_CAST)(LPCOLESTR, REFIID, DWORD, LPFORMATETC,
                                LPOLECLIENTSITE, LPSTORAGE, void **);
HRESULT CW32System::OleCreateLinkToFile(
    LPCOLESTR pstr,
    REFIID rid,
    DWORD renderopt,
    LPFORMATETC pfetc,
    LPOLECLIENTSITE psite,
    LPSTORAGE pstg,
    void **ppstg
)
{
    static void *pOleCreateLinkToFile = NULL;
    if (pOleCreateLinkToFile == NULL)
        SetProcAddr( pOleCreateLinkToFile, DLL_OLE32, "OleCreateLinkToFile" );
    return ((OCLTF_CAST)pOleCreateLinkToFile)(pstr, rid, renderopt, pfetc, psite, pstg, ppstg);
}

typedef RE_OLE32API_(LPVOID, CTMA_CAST)(ULONG);
LPVOID CW32System::CoTaskMemAlloc ( ULONG cb )
{
    static void *pCoTaskMemAlloc = NULL;
    if (pCoTaskMemAlloc == NULL)
        SetProcAddr( pCoTaskMemAlloc, DLL_OLE32, "CoTaskMemAlloc" );
    return ((CTMA_CAST)pCoTaskMemAlloc)(cb);
}

typedef RE_OLE32API_(LPVOID, CTMR_CAST)(LPVOID, ULONG);
LPVOID CW32System::CoTaskMemRealloc ( LPVOID pv, ULONG cv)
{
    static void *pCoTaskMemRealloc = NULL;
    if (pCoTaskMemRealloc == NULL)
        SetProcAddr( pCoTaskMemRealloc, DLL_OLE32, "CoTaskMemRealloc" );
    return ((CTMR_CAST)pCoTaskMemRealloc)(pv, cv);
}

typedef RE_OLE32API(OI_CAST)(LPVOID);
HRESULT CW32System::OleInitialize ( LPVOID pvres )
{
    static void *pOleInitialize = NULL;
    if (pOleInitialize == NULL)
        SetProcAddr( pOleInitialize, DLL_OLE32, "OleInitialize" );
    return ((OI_CAST)pOleInitialize)(pvres);
}

typedef RE_OLE32API_(void, OUI_CAST)( void );
void CW32System::OleUninitialize ( void )
{
    static void *pOleUninitialize = NULL;
    if (pOleUninitialize == NULL)
        SetProcAddr( pOleUninitialize, DLL_OLE32, "OleUninitialize" );
    ((OUI_CAST)pOleUninitialize)();
}

typedef RE_OLE32API(OSC_CAST)(IDataObject *);
HRESULT CW32System::OleSetClipboard ( IDataObject *pdo )
{
    static void *pOleSetClipboard = NULL;
    if (pOleSetClipboard == NULL)
        SetProcAddr( pOleSetClipboard, DLL_OLE32, "OleSetClipboard" );
    return ((OSC_CAST)pOleSetClipboard)(pdo);
}

typedef RE_OLE32API(OFC_CAST)(void);
HRESULT CW32System::OleFlushClipboard ( void )
{
    static void *pOleFlushClipboard = NULL;
    if (pOleFlushClipboard == NULL)
        SetProcAddr( pOleFlushClipboard, DLL_OLE32, "OleFlushClipboard" );
    return ((OFC_CAST)pOleFlushClipboard)();
}

typedef RE_OLE32API(OICC_CAST)(IDataObject *);
HRESULT CW32System::OleIsCurrentClipboard ( IDataObject *pdo )
{
    static void *pOleIsCurrentClipboard = NULL;
    if (pOleIsCurrentClipboard == NULL)
        SetProcAddr( pOleIsCurrentClipboard, DLL_OLE32, "OleIsCurrentClipboard" );
    return ((OICC_CAST)pOleIsCurrentClipboard)(pdo);
}

typedef RE_OLE32API(DDD_CAST)(IDataObject *, IDropSource *,
            DWORD, DWORD *);
HRESULT CW32System::DoDragDrop ( IDataObject *pdo, IDropSource *pds, DWORD dweffect, DWORD *pdweffect )
{
    static void *pDoDragDrop = NULL;
    if (pDoDragDrop == NULL)
        SetProcAddr( pDoDragDrop, DLL_OLE32, "DoDragDrop" );
    return ((DDD_CAST)pDoDragDrop)(pdo, pds, dweffect, pdweffect);
}

typedef RE_OLE32API(OGC_CAST)(IDataObject **);
HRESULT CW32System::OleGetClipboard ( IDataObject **ppdo )
{
    static void *pOleGetClipboard = NULL;
    if (pOleGetClipboard == NULL)
        SetProcAddr( pOleGetClipboard, DLL_OLE32, "OleGetClipboard" );
    return ((OGC_CAST)pOleGetClipboard)(ppdo);
}

typedef RE_OLE32API(RDD_CAST)(HWND, IDropTarget *);
HRESULT CW32System::RegisterDragDrop ( HWND hwnd, IDropTarget *pdt )
{
    static void *pRegisterDragDrop = NULL;
    if (pRegisterDragDrop == NULL)
        SetProcAddr( pRegisterDragDrop, DLL_OLE32, "RegisterDragDrop" );
    return ((RDD_CAST)pRegisterDragDrop)(hwnd, pdt);
}

typedef RE_OLE32API(OCLFD_CAST)(IDataObject *, REFIID, DWORD,
                                LPFORMATETC, IOleClientSite *,
                                IStorage *, void **);
HRESULT CW32System::OleCreateLinkFromData (
    IDataObject *pdo,
    REFIID rid,
    DWORD renderopt,
    LPFORMATETC pfetc,
    IOleClientSite *psite,
    IStorage *pstg,
    void **ppv
)
{
    static void *pOleCreateLinkFromData = NULL;
    if (pOleCreateLinkFromData == NULL)
        SetProcAddr( pOleCreateLinkFromData, DLL_OLE32, "OleCreateLinkFromData" );
    return ((OCLFD_CAST)pOleCreateLinkFromData)
        (pdo, rid, renderopt, pfetc, psite, pstg, ppv);
}

typedef RE_OLE32API(OCSFD_CAST)(IDataObject *, REFIID, DWORD,
                                LPFORMATETC, IOleClientSite *,
                                IStorage *, void **);
HRESULT CW32System::OleCreateStaticFromData (
    IDataObject *pdo,
    REFIID rid,
    DWORD renderopt,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -