This COM stuff isn't as easy as falling off a log, is it? I want to use an ActiveX control provided by the people I work for. It has about 70 functions for controlling a small motor via a USB port. The simplest function just throws an About Box up on the screen, so I thought I'd start there. My objects seem to create ok, but no about box displays. I just modded the MSAgent demo code. Any thoughts on what more I need to do?
Code:
'Attempt to use 3rd party ActiveX Control #COMPILER PBWIN 9 #COMPILE EXE #DIM ALL %ID_START = 1000 %ID_STOP = 1001 %ID_EVENTLIST = 1003 GLOBAL hDlg AS LONG #INCLUDE "NstSquiggleCtrl.inc" ' NST ActiveX control file generated by PBrow.exe #INCLUDE "Win32api.inc" ' Win32 Api include file CALLBACK FUNCTION DlgProc STATIC MotorFunc AS Int__DNstSquiggleCtrl STATIC MotorEvents AS Int__DNstSquiggleCtrlEvents SELECT CASE AS LONG CBMSG CASE %WM_INITDIALOG LET MotorFunc = NEWCOM $PROGID_NstSquiggleCtrlLib_NstSquiggleCtrl1 IF ISFALSE(ISOBJECT(MotorFunc)) THEN ? "Creation of Motor Object failed" ELSE ? "MotorFunc Object Created OK" MotorEvents = CLASS "CLASS_Int__DNstSquiggleCtrlEvents" IF ISFALSE(ISOBJECT(MotorEvents)) THEN ? "Creation of Motor Events Object failed" ELSE ? " Motor Events Object Created OK" EVENTS FROM MotorFunc CALL MotorEvents CONTROL ENABLE CBHNDL, %ID_START CASE %WM_COMMAND SELECT CASE AS LONG CBCTL CASE %ID_START IF CBCTLMSG = %BN_CLICKED OR CBCTLMSG = 1 THEN OBJECT CALL MotorFunc.AboutBox '********** NO ABOUT BOX DISPLAYS *********** CONTROL DISABLE CBHNDL, %ID_START CONTROL ENABLE CBHNDL, %ID_STOP END IF CASE %ID_STOP IF CBCTLMSG = %BN_CLICKED OR CBCTLMSG = 1 THEN BEEP CONTROL ENABLE CBHNDL, %ID_START CONTROL DISABLE CBHNDL, %ID_STOP END IF END SELECT CASE %WM_DESTROY IF ISTRUE(ISOBJECT(MotorEvents)) THEN EVENTS END MotorEvents END IF END SELECT END FUNCTION FUNCTION PBMAIN () AS LONG DIALOG NEW 0, "Squiggle ActiveX Test", 201, 122, 198, 115, %WS_POPUP OR %WS_BORDER OR %WS_DLGFRAME OR %WS_CAPTION OR _ %WS_SYSMENU OR %WS_MINIMIZEBOX OR %WS_CLIPSIBLINGS OR %WS_VISIBLE OR %DS_MODALFRAME OR %DS_3DLOOK OR _ %DS_NOFAILCREATE OR %DS_SETFONT, %WS_EX_CONTROLPARENT OR %WS_EX_LEFT OR %WS_EX_LTRREADING OR _ %WS_EX_RIGHTSCROLLBAR, TO hDlg CONTROL ADD BUTTON, hDlg, %ID_START, "About", 5, 5, 50, 15, %WS_CHILD OR %WS_VISIBLE OR %WS_DISABLED OR _ %WS_TABSTOP OR %BS_TEXT OR %BS_PUSHBUTTON OR %BS_CENTER OR %BS_VCENTER, %WS_EX_LEFT OR %WS_EX_LTRREADING CONTROL ADD BUTTON, hDlg, %ID_STOP, "Stop", 5, 25, 50, 15, %WS_CHILD OR %WS_VISIBLE OR %WS_DISABLED OR _ %WS_TABSTOP OR %BS_TEXT OR %BS_PUSHBUTTON OR %BS_CENTER OR %BS_VCENTER, %WS_EX_LEFT OR %WS_EX_LTRREADING 'CONTROL ADD LISTBOX, hDlg, %ID_EVENTLIST, , 70, 0, 125, 110, %WS_CHILD OR %WS_VISIBLE OR %WS_TABSTOP OR %WS_VSCROLL, _ ' %WS_EX_CLIENTEDGE OR %WS_EX_LEFT OR %WS_EX_LTRREADING OR %WS_EX_RIGHTSCROLLBAR DIALOG SHOW MODAL hDlg, CALL DlgProc END FUNCTION
Comment