I had a com, which was written in C#. How to use the VC6.0 to transfer the events?
vivs_basic.tlh
#pragma once
#pragma pack(push, 8)
#include <comdef.h>
namespace vivs_basicLib {
struct __declspec(uuid("19de40dc-789d-4397-a772-144eeea5996a"))
_IVivsBasicEvents;
struct VivsBasic;
struct __declspec(uuid("4bd5f387-217f-4807-8ad9-5a765a891d5b"))
IVivsBasic;
_COM_SMARTPTR_TYPEDEF(_IVivsBasicEvents, __uuidof(IDispatch));
_COM_SMARTPTR_TYPEDEF(IVivsBasic, __uuidof(IVivsBasic));
struct __declspec(uuid("19de40dc-789d-4397-a772-144eeea5996a"))
_IVivsBasicEvents : IDispatch
{
HRESULT VodTimeChangeEvent (
long formHandle,
long timeStamp,
float speed );
};
struct __declspec(uuid("74de7b83-2a14-4679-bc61-e05bf275083f"))
VivsBasic;
struct __declspec(uuid("4bd5f387-217f-4807-8ad9-5a765a891d5b"))
IVivsBasic : IDispatch
{
HRESULT Login (
_bstr_t bstrServer,
unsigned short usServerPort,
_bstr_t bstrUserName,
_bstr_t bstrPassword );
}
#import "vivs_basic.tlb"
using namespace vivs_basicLib;
class CVivsFunc
{
private:
IVivsBasicPtr p_vivs; _IVivsBasicEventsPtr p_events;
long VideoInitEvents();
public:
CVivsFunc();
virtual ~CVivsFunc();
long VideoInitSDK();
HRESULT VideoLogin(char* pszServer, unsigned short nServerPort, char* pszUserName, char* pszPassword);
}
VivsFunc.cpp
CVivsFunc::CVivsFunc()
{
if (FAILED(CoInitialize(NULL)))
{
printf("Unable to initialize COM");
}
}
CVivsFunc::~CVivsFunc()
{
CoUninitialize();
}
long CVivsFunc::VideoInitSDK()
{
if (FAILED(p_vivs.CreateInstance(__uuidof(VivsBasic))))
{
return -2;
}
if (FAILED(p_plan.CreateInstance(__uuidof(CarousePlan))))
{
return -3;
}
if (FAILED(p_events.CreateInstance(__uuidof(IDispatch))))
{
return -4;
}
return 1;
}
long CVivsFunc::VideoInitEvents()
{
long formHandle = 1;
long timeStamp = 1;
float speed = 1.0;
HRESULT hr = S_OK;
try
{
p_events->VodTimeChangeEvent (
formHandle, timeStamp, speed);
}
catch (_com_error e)
{
printf("event error!");
}
return hr;
}
HRESULT CVivsFunc::VideoLogin(char* pszServer, unsigned short nServerPort, char* pszUserName, char* pszPassword)
{
HRESULT hr = 1;
try
{
hr = p_vivs->Login(pszServer, nServerPort, pszUserName, pszPassword);
if (SUCCEEDED(hr))
{
printf("Login Successful!");
}
}
catch (_com_error e)
{
}
return hr;
}