Thanks for the response - here is the relevant code using the single interface:
GLOBAL CameraBox1 AS DWORD
GLOBAL CameraBox2 AS DWORD
GLOBAL pAMC1 AS IAxisMediaControl
GLOBAL pAMC1Events1 AS IAxisMediaControlEventsImpl
GLOBAL pAMC2 AS IAxisMediaControl
GLOBAL pAMC2Events2 AS IAxisMediaControlEventsImpl
CameraBox1 = pWindow.AddOCX(hMainwindow&, %Canvas1, "AxisMediaControl.AxisMediaControl", "", Cam1Xp, Cam1Yp, CamXsz, CamYsz)
CameraBox2 = pWindow.AddOCX(hMainwindow&, %Canvas2, "AxisMediaControl.AxisMediaControl", "", Cam2Xp, Cam2Yp, CamXsz, CamYsz)
LET pAMC1 = NEWCOM CLSID $CLSID_AxisMediaControl
LET pAMC1Events1 = CLASS "CIAxisMediaControlEvents"
pAMC1 = OC_GetDispatch(CameraBox1) ' Initialise pAMC object
EVENTS FROM pAMC1 CALL pAMC1Events1
LET pAMC2 = NewCOM CLSID $CLSID_AxisMediaControl
LET pAMC2Events2 = CLASS "CIAxisMediaControlEvents"
pAMC2 = OC_GetDispatch(CameraBox2) ' Initialise pAMC object
EVENTS FROM pAMC2 CALL pAMC2Events2
As far as I understand - any code in the class method is common to the AMC instances so for an error
I send the EZ_SendEvent back to my main loop but am unable to ascertain the source object.
: ' =====================================================================================
METHOD OnError <1> ( _
BYVAL prm_theErrorCode AS LONG _ ' theErrorCode VT_I4 <Long>
, BYVAL prm_theErrorInfo AS WSTRING _ ' theErrorInfo VT_BSTR
) ' void
' *** Insert your code here ***
EZ_DPrint FUNCNAME$
EZ_SendEvent "AXIS", 1, prm_theErrorCode, 0
ErrorString = prm_theErrorInfo
EZ_DPrint "ErrorInfo: " + prm_theErrorInfo
END METHOD
Event Loop:
SUB OtherForm_Events(FormName$, CID&, CMsg&, CVal&, Cancel&)
SELECT CASE FormName$
CASE "{OPENDLG}", "{SAVEDLG}", "{OPENDLGX}", "{SAVEDLGX}", "{COLORDLG}", "{FONTDLG}", "{PRINTDLG}", "{PAGEDLG}", "{FINDDLG}"
CASE "{ABORTDLG}"
CASE "{MSGBOX}"
CASE "{APP}" ' Not a Form
SELECT CASE CMsg&
CASE %EZ_NoTheme
CASE %EZ_Terminate
END SELECT
CASE "AXIS"
HandleAxisMessage CID&, CMsg&, CVal&
' EZ_DPrint "AXIS Msg Info: " + FormName$ + " CID: " + STR$(CID&) + " CMsg: " + STR$(CMsg&) + " CVal: " + STR$(CVal&)
' EZ_DPrint "ErrorString in Object: " + ErrorString
CASE "{MEDIATEST}"
'Do something
CASE ELSE
END SELECT
END SUB
thanks,
Stuart