PXV_Inst ActiveX Object

From PDF XChange PDF SDK
Revision as of 12:34, 5 June 2015 by Pifagor (Talk | contribs)

Jump to: navigation, search


Overview

The main ActiveX Object of PDF-XChange Editor SDK that provides general functionality and gives access to additional extensions within the SDK.

The GUID of object is:

{973BF60B-4CC6-4be0-B408-3D80E07FC2E6}

The interface control is:

IPXV_Inst

How to Instantiate

You may instantiate the object in the standard manner by using the CoCreateInstance function or by any other method that is appropriate for instantiating of regular ActiveX-objects in your preferred programming language.

For example, in C#:

AxPDFXEdit.AxPXV_Inst pdfInst = new AxPDFXEdit.AxPXV_Inst();

In VB6:

Dim pdfInst As PDFXEdit.PXV_Inst
...    
Set pdfInst = New PDFXEdit.PXV_Inst

In C++:

CComPtr<IPXV_Inst> spPDFInst;
HRESULT hr = CoCreateInstance(__uuidof(PXV_Inst), nullptr, CLSCTX_INPROC_SERVER, __uuidof(IPXV_Inst), (void**)&spPDFInst);

There also exists another way to get pointer to IPXV_Inst interface. For example, in C++:

typedef HRESULT (__cdecl *t_pPXV_GetInstance)(IPXV_Inst** ppInst);

#if defined _M_IX86
#define SDK_LIB_NAME	L"PDFXEditCore.x86.DLL"
#else
#define SDK_LIB_NAME	L"PDFXEditCore.x64.DLL"
#endif

CComPtr<IPXV_Inst> spPDFInst;
HMODULE hSDKLib = LoadLibrary(SDK_LIB_NAME);
t_pPXV_GetInstance pfn = (t_pPXV_GetInstance)GetProcAddress(hSDKLib, "PXV_GetInstance");
HRESULT hr = pfn(&spPDFInst);

- with this special method you will be able to use the SDK without regular installation as a COM-server on a client machine and this will function in most circumstances as required, However one important exception is that you may not instantiate the simple ActiveX Control using the described method (PXV_Control).

How to Use

To instantiate the Simple ActiveX you must first call the IPXV_Inst::Init function before any use of the SDK. This is required only once and if you have already previously created a PXV_Control object this does not have to be repeated again. It is also essential when all tasks are completed and use of the SDK is no longer required that you call IPXV_Inst::Shutdown to release all used resource and correctly close all working threads, etc. However, if the IPXV_Inst::Init method has not been called directly and only the simple PXV_Control is used, no such call is required. In conclusion, the IPXV_Inst::Shutdown method should be called for each and every instance IPXV_Inst::Init was called.