eli
20th July 2011, 08:13
hello:
I get a activex controls (.OCX file) from manufacturer, this active controls can access a PCI card. I want to build a GUI to control this card. I use dumpcpp to create a "dospotpc.h" and "dospotpc.cpp" file:
dumpcpp {74676A0F-BB65-48A0-8044-F453692E9A8A} -o dospotpc
in file "dospotpc.h"
/************************************************** **************************
**
** Namespace DOSPOTPCLib generated by dumpcpp from type library
** C:\Program Files\DoSpotPC.OCX\DoSpotPC.ocx
**
************************************************** **************************/
#ifndef QAX_DUMPCPP_DOSPOTPCLIB_H
#define QAX_DUMPCPP_DOSPOTPCLIB_H
// Define this symbol to __declspec(dllexport) or __declspec(dllimport)
#ifndef DOSPOTPCLIB_EXPORT
#define DOSPOTPCLIB_EXPORT
#endif
#include <qaxobject.h>
#include <qaxwidget.h>
#include <qdatetime.h>
#include <qpixmap.h>
struct IDispatch;
// Referenced namespace
namespace DOSPOTPCLib {
class DOSPOTPCLIB_EXPORT _DDoSpotPC : public QAxObject
{
public:
_DDoSpotPC(IDispatch *subobject = 0, QAxObject *parent = 0)
: QAxObject((IUnknown*)subobject, parent)
{
internalRelease();
}
/*
Method AboutBox
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline void AboutBox();
/*
Method doGetDetectorsName
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doGetDetectorsName(int numDev, QString& DetSN1, QString& DetSN2);
/*
Method doGetDeviceNumber
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doGetDeviceNumber(int Hardware, int& numDev);
/*
Method doGetMeasureData
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doGetMeasureData(int numDev, QVariant& Xo, QVariant& Yo, QVariant& Po);
/*
Method doGetMeasureDataEx
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doGetMeasureDataEx(int numDev, double& Xo, double& Yo, double& Po);
/*
Method doGetQuadPower
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doGetQuadPower(int numDev, QVariant& PQ1, QVariant& PQ2);
/*
Method doSetHardware
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doSetHardware(int Hardware, int numDev);
/*
Method doSetSystemType
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline void doSetSystemType(int AppName);
/*
Method doSetWavelength
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doSetWavelength(int numDev, int Channel, int Wave);
// meta object functions
static const QMetaObject staticMetaObject;
virtual const QMetaObject *metaObject() const { return &staticMetaObject; }
virtual void *qt_metacast(const char *);
};
// skipping event interface _DDoSpotPCEvents
// Actual coclasses
class DOSPOTPCLIB_EXPORT DoSpotPC : public QAxWidget
{
public:
DoSpotPC(QWidget *parent = 0, Qt::WindowFlags f = 0)
: QAxWidget(parent, f)
{
setControl("{74676a0f-bb65-48a0-8044-f453692e9a8a}");
}
/*
Method AboutBox
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline void AboutBox();
/*
Method doGetDetectorsName
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doGetDetectorsName(int numDev, QString& DetSN1, QString& DetSN2);
/*
Method doGetDeviceNumber
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doGetDeviceNumber(int Hardware, int& numDev);
/*
Method doGetMeasureData
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doGetMeasureData(int numDev, QVariant& Xo, QVariant& Yo, QVariant& Po);
/*
Method doGetMeasureDataEx
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doGetMeasureDataEx(int numDev, double& Xo, double& Yo, double& Po);
/*
Method doGetQuadPower
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doGetQuadPower(int numDev, QVariant& PQ1, QVariant& PQ2);
/*
Method doSetHardware
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doSetHardware(int Hardware, int numDev);
/*
Method doSetSystemType
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline void doSetSystemType(int AppName);
/*
Method doSetWavelength
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doSetWavelength(int numDev, int Channel, int Wave);
// meta object functions
static const QMetaObject staticMetaObject;
virtual const QMetaObject *metaObject() const { return &staticMetaObject; }
virtual void *qt_metacast(const char *);
};
...................................
in class "DoSpotPC", this member function prototype:
inline int doGetDeviceNumber(int Hardware, int& numDev);
is not correct, according to the manual, this member function prototype should be
short doGetDeviceNumber(short Hardware, short* numDev);
I get stuck at here, the parameter 1 type should be a pointer. if I use this function like this:
int devNum;
s->doGetDeviceNumber(1, devNum);
I will get following error:
"Error calling IDispatch member: Type mismatch in parameter 1"
please give me some help, thx.
I get a activex controls (.OCX file) from manufacturer, this active controls can access a PCI card. I want to build a GUI to control this card. I use dumpcpp to create a "dospotpc.h" and "dospotpc.cpp" file:
dumpcpp {74676A0F-BB65-48A0-8044-F453692E9A8A} -o dospotpc
in file "dospotpc.h"
/************************************************** **************************
**
** Namespace DOSPOTPCLib generated by dumpcpp from type library
** C:\Program Files\DoSpotPC.OCX\DoSpotPC.ocx
**
************************************************** **************************/
#ifndef QAX_DUMPCPP_DOSPOTPCLIB_H
#define QAX_DUMPCPP_DOSPOTPCLIB_H
// Define this symbol to __declspec(dllexport) or __declspec(dllimport)
#ifndef DOSPOTPCLIB_EXPORT
#define DOSPOTPCLIB_EXPORT
#endif
#include <qaxobject.h>
#include <qaxwidget.h>
#include <qdatetime.h>
#include <qpixmap.h>
struct IDispatch;
// Referenced namespace
namespace DOSPOTPCLib {
class DOSPOTPCLIB_EXPORT _DDoSpotPC : public QAxObject
{
public:
_DDoSpotPC(IDispatch *subobject = 0, QAxObject *parent = 0)
: QAxObject((IUnknown*)subobject, parent)
{
internalRelease();
}
/*
Method AboutBox
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline void AboutBox();
/*
Method doGetDetectorsName
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doGetDetectorsName(int numDev, QString& DetSN1, QString& DetSN2);
/*
Method doGetDeviceNumber
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doGetDeviceNumber(int Hardware, int& numDev);
/*
Method doGetMeasureData
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doGetMeasureData(int numDev, QVariant& Xo, QVariant& Yo, QVariant& Po);
/*
Method doGetMeasureDataEx
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doGetMeasureDataEx(int numDev, double& Xo, double& Yo, double& Po);
/*
Method doGetQuadPower
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doGetQuadPower(int numDev, QVariant& PQ1, QVariant& PQ2);
/*
Method doSetHardware
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doSetHardware(int Hardware, int numDev);
/*
Method doSetSystemType
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline void doSetSystemType(int AppName);
/*
Method doSetWavelength
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doSetWavelength(int numDev, int Channel, int Wave);
// meta object functions
static const QMetaObject staticMetaObject;
virtual const QMetaObject *metaObject() const { return &staticMetaObject; }
virtual void *qt_metacast(const char *);
};
// skipping event interface _DDoSpotPCEvents
// Actual coclasses
class DOSPOTPCLIB_EXPORT DoSpotPC : public QAxWidget
{
public:
DoSpotPC(QWidget *parent = 0, Qt::WindowFlags f = 0)
: QAxWidget(parent, f)
{
setControl("{74676a0f-bb65-48a0-8044-f453692e9a8a}");
}
/*
Method AboutBox
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline void AboutBox();
/*
Method doGetDetectorsName
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doGetDetectorsName(int numDev, QString& DetSN1, QString& DetSN2);
/*
Method doGetDeviceNumber
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doGetDeviceNumber(int Hardware, int& numDev);
/*
Method doGetMeasureData
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doGetMeasureData(int numDev, QVariant& Xo, QVariant& Yo, QVariant& Po);
/*
Method doGetMeasureDataEx
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doGetMeasureDataEx(int numDev, double& Xo, double& Yo, double& Po);
/*
Method doGetQuadPower
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doGetQuadPower(int numDev, QVariant& PQ1, QVariant& PQ2);
/*
Method doSetHardware
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doSetHardware(int Hardware, int numDev);
/*
Method doSetSystemType
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline void doSetSystemType(int AppName);
/*
Method doSetWavelength
For more information, see help context 0 in C:\Program Files\DoSpotPC.OCX\DoSpotPC.hlp.
*/
inline int doSetWavelength(int numDev, int Channel, int Wave);
// meta object functions
static const QMetaObject staticMetaObject;
virtual const QMetaObject *metaObject() const { return &staticMetaObject; }
virtual void *qt_metacast(const char *);
};
...................................
in class "DoSpotPC", this member function prototype:
inline int doGetDeviceNumber(int Hardware, int& numDev);
is not correct, according to the manual, this member function prototype should be
short doGetDeviceNumber(short Hardware, short* numDev);
I get stuck at here, the parameter 1 type should be a pointer. if I use this function like this:
int devNum;
s->doGetDeviceNumber(1, devNum);
I will get following error:
"Error calling IDispatch member: Type mismatch in parameter 1"
please give me some help, thx.