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

📄 olevtbl.c

📁 英文版的 想要的话可以下载了 为大家服务
💻 C
字号:
/*
 * OLEVTBL.C
 *
 * Creates or frees the procedure instances for the server, document,
 * and object VTBLs.  There are two functions for each table:  one
 * to initialize the table, the other to free the instances in the table.
 *
 * Copyright(c) Microsoft Corp. 1992-1994 All Rights Reserved
 * Win32 version, January 1994
 */


#ifdef MAKEOLESERVER


#include <windows.h>
#include <ole.h>
#include "cosmo.h"
#include "oleglobl.h"

#ifdef MSC
/*
 * This disables Microsoft VC++ 1.x warnings we get from assigning
 * functions with our app-specific prototypes to the fixed prototypes
 * in the VTBL structures.  The functionality of this application was
 * verified before adding this pragma.
 */
#pragma warning(disable:4028)
#ifndef WIN32
#pragma warning(disable:4113)
#endif
#endif


/*
 * FOLEVtblInitServer
 *
 * Purpose:
 *  Creates procedure instances for all the OLE methods required
 *  by the server library for standard server methods.
 *
 * Parameters:
 *  hInst           HINSTANCE of the application instance.
 *  pvt             LPOLESERVERVTBL to the VTBL to initialize.
 *
 * Return Value:
 *  None
 *
 * Customization:
 *  None required.
 */

BOOL WINAPI FOLEVtblInitServer(HINSTANCE hInst, LPOLESERVERVTBL pvt)
    {
    BOOL        fRet=TRUE;

   #ifdef WIN32
    pvt->Create            =ServerCreate;
    pvt->CreateFromTemplate=ServerCreateFromTemplate;
    pvt->Edit              =ServerEdit;
    pvt->Execute           =ServerExecute;
    pvt->Exit              =ServerExit;
    pvt->Open              =ServerOpen;
    pvt->Release           =ServerRelease;
   #else
    pvt->Create            =(LPVOID)MakeProcInstance(ServerCreate,             hInst);
    pvt->CreateFromTemplate=(LPVOID)MakeProcInstance(ServerCreateFromTemplate, hInst);
    pvt->Edit              =(LPVOID)MakeProcInstance(ServerEdit,               hInst);
    pvt->Execute           =(LPVOID)MakeProcInstance(ServerExecute,            hInst);
    pvt->Exit              =(LPVOID)MakeProcInstance(ServerExit,               hInst);
    pvt->Open              =(LPVOID)MakeProcInstance(ServerOpen,               hInst);
    pvt->Release           =(LPVOID)MakeProcInstance(ServerRelease,            hInst);

    fRet =(NULL!=pvt->Create);
    fRet&=(NULL!=pvt->CreateFromTemplate);
    fRet&=(NULL!=pvt->Edit);
    fRet&=(NULL!=pvt->Execute);
    fRet&=(NULL!=pvt->Exit);
    fRet&=(NULL!=pvt->Open);
    fRet&=(NULL!=pvt->Release);
   #endif

    return fRet;
    }


/*
 * OLEVtblFreeServer
 *
 * Purpose:
 *  Frees all procedure instances in the server VTBL.
 *
 * Parameters:
 *  pvt             LPOLESERVERVTBL to the VTBL to free.
 *
 * Return Value:
 *  none
 *
 * Customization:
 *  None required.
 */

void WINAPI OLEVtblFreeServer(LPOLESERVERVTBL pvt)
    {
   #ifndef WIN32
    FreeProcInstance(pvt->Create);
    FreeProcInstance(pvt->CreateFromTemplate);
    FreeProcInstance(pvt->Edit);
    FreeProcInstance(pvt->Exit);
    FreeProcInstance(pvt->Open);
    FreeProcInstance(pvt->Release);
   #endif

    return;
    }





/*
 * FOLEVtblInitDocument
 *
 * Purpose:
 *  Creates procedure instances for all the OLE methods required
 *  for document methods.
 *
 * Parameters:
 *  hInst           HINSTANCE of the application instance.
 *  pvt             LPOLESERVERDOCVTBL to the VTBL to initialize.
 * 
 * Return Value:
 *  None
 *
 * Customization:
 *  None required.
 */

BOOL WINAPI FOLEVtblInitDocument(HINSTANCE hInst, LPOLESERVERDOCVTBL pvt)
    {
    BOOL        fRet=TRUE;

   #ifdef WIN32
    pvt->Close           =DocClose;
    pvt->GetObject       =DocGetObject;
    pvt->Execute         =DocExecute;
    pvt->Release         =DocRelease;
    pvt->Save            =DocSave;
    pvt->SetColorScheme  =DocSetColorScheme;
    pvt->SetDocDimensions=DocSetDocDimensions;
    pvt->SetHostNames    =DocSetHostNames;
   #else
    pvt->Close           =(LPVOID)MakeProcInstance(DocClose,            hInst);
    pvt->GetObject       =(LPVOID)MakeProcInstance(DocGetObject,        hInst);
    pvt->Execute         =(LPVOID)MakeProcInstance(DocExecute,          hInst);
    pvt->Release         =(LPVOID)MakeProcInstance(DocRelease,          hInst);
    pvt->Save            =(LPVOID)MakeProcInstance(DocSave,             hInst);
    pvt->SetColorScheme  =(LPVOID)MakeProcInstance(DocSetColorScheme,   hInst);
    pvt->SetDocDimensions=(LPVOID)MakeProcInstance(DocSetDocDimensions, hInst);
    pvt->SetHostNames    =(LPVOID)MakeProcInstance(DocSetHostNames,     hInst);

    fRet =(NULL!=pvt->Close);
    fRet&=(NULL!=pvt->GetObject);
    fRet&=(NULL!=pvt->Execute);
    fRet&=(NULL!=pvt->Release);
    fRet&=(NULL!=pvt->Save);
    fRet&=(NULL!=pvt->SetColorScheme);
    fRet&=(NULL!=pvt->SetDocDimensions);
    fRet&=(NULL!=pvt->SetHostNames);
   #endif

    return fRet;
    }




/*
 * OLEVtblFreeDocument
 *
 * Purpose:
 *  Frees all procedure instances in the document VTBL.
 *
 * Parameters:
 *  pvt             LPOLESERVERDOCVTBL to the VTBL to free.
 *
 * Return Value:
 *  none
 *
 * Customization:
 *  None required.
 */

void WINAPI OLEVtblFreeDocument(LPOLESERVERDOCVTBL pvt)
    {
   #ifndef WIN32
    FreeProcInstance(pvt->Close);
    FreeProcInstance(pvt->GetObject);
    FreeProcInstance(pvt->Release);
    FreeProcInstance(pvt->Save);
    FreeProcInstance(pvt->SetColorScheme);
    FreeProcInstance(pvt->SetDocDimensions);
    FreeProcInstance(pvt->SetHostNames);
   #endif

    return;
    }





/*
 * FOLEVtblInitObject
 *
 * Purpose:
 *  Creates procedure instances for all the OLE methods required
 *  for object methods.
 *
 * Parameters:
 *  hInst           HINSTANCE of the application instance.
 *  pvt             LPOLEOBJECTVTBL to free.
 * 
 * Return Value:
 *  None
 *
 * Customization:
 *  Your application might not use global variables for srvrvtbl,
 *  docvtbl, and objvtbl.
 */

BOOL WINAPI FOLEVtblInitObject(HINSTANCE hInst, LPOLEOBJECTVTBL pvt)
    {
    BOOL        fRet=TRUE;

    /*
     * Local variables are used here just to make this one assignment
     * more readable since it requires some typecasting to compile clean
     * at warning level 3.
     */
   #ifdef WIN32
    pvt->QueryProtocol  =ObjQueryProtocol;
    pvt->DoVerb         =ObjDoVerb;
    pvt->EnumFormats    =ObjEnumFormats;
    pvt->GetData        =ObjGetData;
    pvt->Release        =ObjRelease;
    pvt->SetBounds      =ObjSetBounds;
    pvt->SetColorScheme =ObjSetColorScheme;
    pvt->SetData        =ObjSetData;
    pvt->SetTargetDevice=ObjSetTargetDevice;
    pvt->Show           =ObjShow;
   #else
    pvt->QueryProtocol  =(LPVOID)MakeProcInstance((FARPROC)ObjQueryProtocol, hInst);;
    pvt->DoVerb         =(LPVOID)MakeProcInstance(ObjDoVerb, hInst);
    pvt->EnumFormats    =(LPVOID)MakeProcInstance(ObjEnumFormats, hInst);
    pvt->GetData        =(LPVOID)MakeProcInstance(ObjGetData, hInst);
    pvt->Release        =(LPVOID)MakeProcInstance(ObjRelease, hInst);
    pvt->SetBounds      =(LPVOID)MakeProcInstance(ObjSetBounds, hInst);
    pvt->SetColorScheme =(LPVOID)MakeProcInstance(ObjSetColorScheme, hInst);
    pvt->SetData        =(LPVOID)MakeProcInstance(ObjSetData, hInst);
    pvt->SetTargetDevice=(LPVOID)MakeProcInstance(ObjSetTargetDevice, hInst);
    pvt->Show           =(LPVOID)MakeProcInstance(ObjShow, hInst);

    fRet =(NULL!=pvt->QueryProtocol);
    fRet&=(NULL!=pvt->DoVerb);
    fRet&=(NULL!=pvt->EnumFormats);
    fRet&=(NULL!=pvt->GetData);
    fRet&=(NULL!=pvt->Release);
    fRet&=(NULL!=pvt->SetBounds);
    fRet =(NULL!=pvt->SetColorScheme);
    fRet&=(NULL!=pvt->SetData);
    fRet&=(NULL!=pvt->SetTargetDevice);
    fRet&=(NULL!=pvt->Show);
   #endif

    return fRet;    //TRUE by default in Win32
    }





/*
 * OLEVtblFreeObject
 *
 * Purpose:
 *  Frees all procedure instances in the object VTBL.
 *
 * Parameters:
 *  pvt             LPOLEOBJECTVTBL to the VTBL to free.
 *
 * Return Value:
 *  none
 *
 * Customization:
 *  None required.
 */

void WINAPI OLEVtblFreeObject(LPOLEOBJECTVTBL pvt)
    {
   #ifndef WIN32
    FreeProcInstance(pvt->DoVerb);
    FreeProcInstance(pvt->EnumFormats);
    FreeProcInstance(pvt->GetData);
    FreeProcInstance((FARPROC)pvt->QueryProtocol);
    FreeProcInstance(pvt->Release);
    FreeProcInstance(pvt->SetBounds);
    FreeProcInstance(pvt->SetColorScheme);
    FreeProcInstance(pvt->SetData);
    FreeProcInstance(pvt->SetTargetDevice);
    FreeProcInstance(pvt->Show);
   #endif

    return;
    }



#endif //MAKEOLESERVER

⌨️ 快捷键说明

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