Figure 7: main.cpp file of sample application
#include "main.h" #include "init.h" #include "request.h" #include "resultiou.h" #include <iostream.h> #include <assert.h> const int MAX_STR_LENGTH = 256; // Helper functions ostream & operator<<(ostream &os, const BSTR &bstr) { assert( SysStringLen( bstr) < MAX_STR_LENGTH); char sz[ MAX_STR_LENGTH]; wcstombs( sz, bstr, MAX_STR_LENGTH); os << sz; return os; } ostream & operator<<(ostream &os, const VARIANT &v) { VARIANT vAsBstr; ::VariantInit( &vAsBstr); if (SUCCEEDED(::VariantChangeType(&vAsBstr, const_cast< VARIANT *>( &v), 0, VT_BSTR))) os << vAsBstr.bstrVal; else os << "<unable to convert value>"; ::VariantClear( &vAsBstr); return os; } // COM initialization const Init init; // Derived IOU class class MyIOU : public ResultIOU { public: void ResultIOUComplete() { VARIANT result = Redeem(); cout << result << endl; } }; void main(int argc, char *argv[]) { bool notify = false; if( argc == 2 && stricmp( argv[1], "/asynch" ) == 0 ) notify = true; MyIOU iou; Request request; if (!request. select(L"ADDRESS WHERE BUSINESS = 'HotData, Inc.'")) cout << Error::Description(); else if (!request.send(notify, iou)) cout << Error::Description(); else if (!notify) iou.ResultIOUComplete(); cout << "Press Enter to end..." << endl; cin.get(); }