CQG_Tester::CQG_Tester() : cqgObj(new CQGCEL(this)) // cqgObj is a QAxObject from the external library.
{
[COLOR
="#FF8C00"]connect(cqgObj,
SIGNAL(signal(const QString
&,
int,
void*)),
SLOT(onSignal
(QString,
int,
void*)));
[/COLOR
] connect(cqgObj, SIGNAL(CELStarted()), SLOT(requestDataSources()));
connect(cqgObj, SIGNAL(OnIdle()), SLOT(OnIdle()));
connect(cqgObj, SIGNAL(LineTimeChanged(const QDateTime&)), SLOT(LineTimeChanged(const QDateTime&)));
connect(cqgObj,
SIGNAL(propertyChanged
(const QString
&)),
SLOT(onPropertyChanged
(QString)));
connect(cqgObj,
SIGNAL(exception
(int,
const QString
&,
const QString
&,
const QString
&)),
SLOT(onException
(int,
QString,
QString,
QString)));
cqgObj->Startup();
}
CQG_Tester::CQG_Tester() : cqgObj(new CQGCEL(this)) // cqgObj is a QAxObject from the external library.
{
[COLOR="#FF8C00"]connect(cqgObj, SIGNAL(signal(const QString&,int,void*)), SLOT(onSignal(QString,int,void*)));[/COLOR]
connect(cqgObj, SIGNAL(CELStarted()), SLOT(requestDataSources()));
connect(cqgObj, SIGNAL(OnIdle()), SLOT(OnIdle()));
connect(cqgObj, SIGNAL(LineTimeChanged(const QDateTime&)), SLOT(LineTimeChanged(const QDateTime&)));
connect(cqgObj, SIGNAL(propertyChanged(const QString&)), SLOT(onPropertyChanged(QString)));
connect(cqgObj, SIGNAL(exception(int,const QString&,const QString&,const QString&)), SLOT(onException(int,QString,QString,QString)));
cqgObj->Startup();
}
To copy to clipboard, switch view to plain text mode
void CQG_Tester
::onSignal(const QString & name,
int argc,
void * argv
) {
VARIANTARG *params = (VARIANTARG*)argv;
if(name == "InstrumentDOMChanged(IDispatch*,IDispatch*,IDispatch*)") {
IDispatch * instrument_disp = params[argc-1].pdispVal;
//instrument_disp->AddRef(); [B]// LINE A[/B]
ICQGInstrument instrument(instrument_disp, cqgObj); // QAxObject from the external COM/dll
for(int i = 0; i < 2; ++i) {
ICQGDOMQuotes * dom = (i == 0 ? instrument.DOMAsks() : instrument.DOMBids()); // QAxObject from the external COM/dll
cout << (i == 0 ? "Asks: " : "Bids: ");
const int count = dom->Count();
for(int j = 0; j < count; ++j) {
ICQGQuote * quote = dom->Item(j);
cout << quote->Price() << ',' << quote->Volume() << ';';
}
}
cout << endl;
}
}
void CQG_Tester::onSignal(const QString & name, int argc, void * argv)
{
VARIANTARG *params = (VARIANTARG*)argv;
if(name == "InstrumentDOMChanged(IDispatch*,IDispatch*,IDispatch*)") {
IDispatch * instrument_disp = params[argc-1].pdispVal;
//instrument_disp->AddRef(); [B]// LINE A[/B]
ICQGInstrument instrument(instrument_disp, cqgObj); // QAxObject from the external COM/dll
for(int i = 0; i < 2; ++i) {
ICQGDOMQuotes * dom = (i == 0 ? instrument.DOMAsks() : instrument.DOMBids()); // QAxObject from the external COM/dll
cout << (i == 0 ? "Asks: " : "Bids: ");
const int count = dom->Count();
for(int j = 0; j < count; ++j) {
ICQGQuote * quote = dom->Item(j);
cout << quote->Price() << ',' << quote->Volume() << ';';
}
}
cout << endl;
}
}
To copy to clipboard, switch view to plain text mode
Bookmarks