Click here to Skip to main content
15,887,175 members
Please Sign up or sign in to vote.
4.00/5 (1 vote)
See more:
I had a com, which was written in C#. How to use the VC6.0 to transfer the events?
C++
vivs_basic.tlh

#pragma once
#pragma pack(push, 8)
#include <comdef.h>
namespace vivs_basicLib {
// Forward references and typedefs
struct __declspec(uuid("19de40dc-789d-4397-a772-144eeea5996a"))
/* dispinterface */ _IVivsBasicEvents;
struct /* coclass */ VivsBasic;
struct __declspec(uuid("4bd5f387-217f-4807-8ad9-5a765a891d5b"))
/* dual interface */ IVivsBasic;
// Smart pointer typedef declarations
_COM_SMARTPTR_TYPEDEF(_IVivsBasicEvents, __uuidof(IDispatch));
_COM_SMARTPTR_TYPEDEF(IVivsBasic, __uuidof(IVivsBasic));

// Type library items
struct __declspec(uuid("19de40dc-789d-4397-a772-144eeea5996a"))
_IVivsBasicEvents : IDispatch
{
    // Wrapper methods for error-handling
    
    // Methods:
    HRESULT VodTimeChangeEvent (
        long formHandle,
        long timeStamp,
        float speed );
};
struct __declspec(uuid("74de7b83-2a14-4679-bc61-e05bf275083f"))
VivsBasic;
    // [ default ] interface IVivsBasic
    // [ default, source ] dispinterface _IVivsBasicEvents
struct __declspec(uuid("4bd5f387-217f-4807-8ad9-5a765a891d5b"))
IVivsBasic : IDispatch
{
    // Wrapper methods for error-handling
    HRESULT Login (
        _bstr_t bstrServer,
        unsigned short usServerPort,
        _bstr_t bstrUserName,
        _bstr_t bstrPassword );
}

C++
// VivsFunc.h
#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);
}

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

	// VideoInitEvents();
	 return 1;
 }
long CVivsFunc::VideoInitEvents()
 {
	long formHandle = 1;
	long timeStamp = 1;
	float speed = 1.0;
	 // Methods:
	 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;
}
Posted
Updated 18-Sep-10 20:12pm
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900