Announcement
Collapse
No announcement yet.
using a 3rd party activex control
Collapse
X
-
You have to use OBJECT CALL/GET because it has a dispatch-only interface, not a dual one. Therefore, direct interface calls can't be used with it.
-
Hurrah! Thank-you, that does it, and yes, I thought it was the file name. I do have to use OBJECT CALL or I get method-or-property-expected error. The first step is hardest, but now that I can get one response from the thing, the rest should come a lot easier. Thanks again.
Conrad
Leave a comment:
-
I guess that you have been confused because the example uses "WMPlayer.OCX", but it happens that this is the ProgID of the Windows Media Player control, whose file name is WMP.DLL.
Leave a comment:
-
CONTROL ADD "AtlAxWin", hDlg, %ID_NST, "NstSquiggleCtrl.ocx", 0, 0, 0, 0, %WS_VISIBLE OR %WS_CHILD
Use:
Code:CONTROL ADD "AtlAxWin", hDlg, %ID_NST, "NSTSQUIGGLECTRL.NstSquiggleCtrlCtrl.1", 0, 0, 0, 0, %WS_VISIBLE OR %WS_CHILD
Leave a comment:
-
That fixed up the compile, but still no joy with my control. Oddly, the program does succeed in bringingup my dial-up window! This control drops into VB and C++ programs at work- a C++ and VB-centric place, but it would be really nice if I could get it to work through PB. Here's what I tried-
Code:' attempt to use activex motor controller #COMPILE EXE #DIM ALL #INCLUDE ONCE "ATL.INC" ' from Jose file collection #INCLUDE ONCE "NSTSQUIGGLECTRL.INC" ' from PBrowser %ID_NST = 1001 ' ======================================================================================== ' Main ' ======================================================================================== FUNCTION WINMAIN (BYVAL hInstance AS DWORD, BYVAL hPrevInstance AS DWORD, BYVAL lpszCmdLine AS ASCIIZ PTR, BYVAL nCmdShow AS LONG) AS LONG LOCAL hDlg AS LONG AtlAxWinInit ' // Initialize ATL - must be called before creating an AtlAxWin71 window DIALOG NEW 0, "Motor ActiveX Demo", , , 400, 240, %WS_OVERLAPPED OR %WS_THICKFRAME OR %WS_SYSMENU OR _ %WS_MINIMIZEBOX OR %WS_MAXIMIZEBOX OR %WS_VISIBLE OR %DS_CENTER TO hDlg CONTROL ADD "AtlAxWin", hDlg, %ID_NST, "NstSquiggleCtrl.ocx", 0, 0, 0, 0, %WS_VISIBLE OR %WS_CHILD DIALOG SHOW MODAL hDlg, CALL DlgProc END FUNCTION ' ======================================================================================== ' ======================================================================================== ' Main Dialog procedure ' ======================================================================================== CALLBACK FUNCTION DlgProc() AS LONG LOCAL MotorFunc AS Int__DNstSquiggleCtrl SELECT CASE CBMSG CASE %WM_INITDIALOG ' Get the IDispatch of the control MotorFunc = AtlAxGetDispatch(GetDlgItem(CBHNDL, %ID_NST)) IF ISTRUE ISOBJECT(MotorFunc) THEN MotorFunc.AboutBox() 'error 598, METHOD or PROPERTY name expected 'if I use OBJECT CALL or no function I get a dial up window! MotorFunc = NOTHING END IF CASE %WM_COMMAND SELECT CASE CBCTL CASE %IDOK IF CBCTLMSG = %BN_CLICKED THEN END IF CASE %IDCANCEL IF CBCTLMSG = %BN_CLICKED THEN DIALOG END CBHNDL, 0 END SELECT END SELECT END FUNCTION ' ========================================================================================
Code:' Generated by: PowerBASIC COM Browser v.2.00.0058 ' DateTime : 8/28/2008 at 9:59 PM ' ------------------------------------------------ ' Library Name: NstSquiggleCtrlLib ' Library File: C:\Program Files\New Scale Technologies\OcxCtrls\NstSquiggleCtrl.ocx ' Description : NstSquiggleCtrl ActiveX Control module ' Help File : C:\Program Files\New Scale Technologies\OcxCtrls\NstSquiggleCtrl.hlp ' Help Context : 0 ' GUID : {7E571154-E5EC-4AB6-A1DC-3E18C2438E51} ' LCID : 0 ' Version : 1.0 ' Version Dependant ProgID's $PROGID_NstSquiggleCtrlLib_NstSquiggleCtrl1 = "NSTSQUIGGLECTRL.NstSquiggleCtrlCtrl.1" ' Class Indentifiers $CLSID_NstSquiggleCtrlLib_NstSquiggleCtrl = GUID$("{8D226E4F-527B-4DDD-940B-A1D927BB8BCE}") $CLSID_NstSquiggleCtrlLib_Event__DNstSquiggleCtrlEvents = GUID$("{47E43D15-CC58-495E-82AD-7C0F52AE5F7C}") ' Interface Indentifiers $IID_NstSquiggleCtrlLib_Int__DNstSquiggleCtrl = GUID$("{6C302104-F021-419C-A3AD-0C8080D10BEE}") $IID_NstSquiggleCtrlLib_Int__DNstSquiggleCtrlEvents = GUID$("{CD1D39E3-B43A-4C5A-922B-BD9C1B3393EB}") ' Macros MACRO enumDir = LONG MACRO enumUnits = LONG MACRO enumTraj = LONG ' __MIDL___MIDL_itf_NstSquiggleCtrl_0000_0001 enumeration %Dir_Reverse = 0 %Dir_Forward = 1 ' __MIDL___MIDL_itf_NstSquiggleCtrl_0000_0002 enumeration %Units_enc = 0 %Units_nm = 1 %Units_um = 2 %Units_mm = 3 %Units_in = 4 %Units_uRad = 5 %Units_Rad = 6 %Units_aSec = 7 %Units_deg = 8 %Units_grad = 9 ' __MIDL___MIDL_itf_NstSquiggleCtrl_0000_0003 enumeration %Target_Absolute = 0 %Target_Relative = 1 ' Interface Name : Int__DNstSquiggleCtrl ' Description : Dispatch interface for NstSquiggleCtrl Control ' ClassID : $CLSID_NstSquiggleCtrlLib_NstSquiggleCtrl INTERFACE IDBIND Int__DNstSquiggleCtrl MEMBER CALL AboutBox <-552> () MEMBER CALL Get_PortBaudRate <2> (IN PortIndex AS LONG<0>) AS LONG MEMBER CALL Set_PortBaudRate <2> (IN PortIndex AS LONG<0>, IN Rhs AS LONG<1>) MEMBER CALL Get_IsPortOpen <8> (IN PortIndex AS LONG<0>) AS LONG MEMBER CALL Set_IsPortOpen <8> (IN PortIndex AS LONG<0>, IN Rhs AS INTEGER<1>) MEMBER CALL Get_PortAxes <9> (IN PortIndex AS LONG<0>) AS LONG MEMBER CALL Set_PortAxes <9> (IN PortIndex AS LONG<0>, IN Rhs AS LONG<1>) MEMBER CALL Get_AxisPort <11> (IN AxisIndex AS LONG<0>) AS STRING MEMBER CALL Set_AxisPort <11> (IN AxisIndex AS LONG<0>, IN Rhs AS STRING<1>) MEMBER CALL Get_PosUnits <12> (IN AxisIndex AS LONG<0>) AS LONG MEMBER CALL Set_PosUnits <12> (IN AxisIndex AS LONG<0>, IN Rhs AS LONG<1>) MEMBER CALL Get_SpdUnits <13> (IN AxisIndex AS LONG<0>) AS LONG MEMBER CALL Set_SpdUnits <13> (IN AxisIndex AS LONG<0>, IN Rhs AS LONG<1>) MEMBER CALL Get_EncUnits <14> (IN AxisIndex AS LONG<0>) AS LONG MEMBER CALL Set_EncUnits <14> (IN AxisIndex AS LONG<0>, IN Rhs AS LONG<1>) MEMBER CALL Get_EncResolution <15> (IN AxisIndex AS LONG<0>) AS DOUBLE MEMBER CALL Set_EncResolution <15> (IN AxisIndex AS LONG<0>, IN Rhs AS DOUBLE<1>) MEMBER CALL Get_TangentDriveRadius <16> (IN AxisIndex AS LONG<0>) AS DOUBLE MEMBER CALL Set_TangentDriveRadius <16> (IN AxisIndex AS LONG<0>, IN Rhs AS DOUBLE<1>) MEMBER CALL Get_EncRefEnable <17> (IN AxisIndex AS LONG<0>) AS LONG MEMBER CALL Set_EncRefEnable <17> (IN AxisIndex AS LONG<0>, IN Rhs AS INTEGER<1>) MEMBER CALL Get_CL_Enable <18> (IN AxisIndex AS LONG<0>) AS LONG MEMBER CALL Set_CL_Enable <18> (IN AxisIndex AS LONG<0>, IN Rhs AS INTEGER<1>) MEMBER CALL Get_CL_Interval <19> (IN AxisIndex AS LONG<0>) AS DOUBLE MEMBER CALL Set_CL_Interval <19> (IN AxisIndex AS LONG<0>, IN Rhs AS DOUBLE<1>) MEMBER CALL Get_Position <20> (IN AxisIndex AS LONG<0>) AS DOUBLE MEMBER CALL Set_Position <20> (IN AxisIndex AS LONG<0>, IN Rhs AS DOUBLE<1>) MEMBER CALL Get_Status <21> (IN AxisIndex AS LONG<0>) AS LONG MEMBER CALL Set_Status <21> (IN AxisIndex AS LONG<0>, IN Rhs AS LONG<1>) MEMBER CALL Get_PosError <22> (IN AxisIndex AS LONG<0>) AS DOUBLE MEMBER CALL Set_PosError <22> (IN AxisIndex AS LONG<0>, IN Rhs AS DOUBLE<1>) MEMBER CALL Get_OL_SpeedRatio <23> (IN AxisIndex AS LONG<0>) AS DOUBLE MEMBER CALL Set_OL_SpeedRatio <23> (IN AxisIndex AS LONG<0>, IN Rhs AS DOUBLE<1>) MEMBER CALL Get_OL_DriveMode <24> (IN AxisIndex AS LONG<0>) AS LONG MEMBER CALL Set_OL_DriveMode <24> (IN AxisIndex AS LONG<0>, IN Rhs AS LONG<1>) MEMBER CALL QueryPosStatus <25> (IN AxisIndex AS LONG<0>) AS LONG MEMBER CALL MoveAbsolute <26> (IN AxisIndex AS LONG<0>, IN PB_Target AS DOUBLE<1>) AS LONG MEMBER CALL MoveRelative <27> (IN Index AS LONG<0>, IN Distance AS DOUBLE<1>) AS LONG MEMBER CALL MoveMtrSteps <28> (IN Index AS LONG<0>, IN Dir AS LONG<1>, IN COUNT AS LONG<2>, IN Period AS DOUBLE<3>, IN _ DutyCycle AS DOUBLE<4>) AS LONG MEMBER CALL FreeRun <29> (IN AxisIndex AS LONG<0>, IN Dir AS LONG<1>, IN Duration AS DOUBLE<2>) AS LONG MEMBER CALL STOP <30> (IN AxisIndex AS LONG<0>, IN Decelerate AS INTEGER<1>) AS LONG MEMBER CALL GetCL_Speed <31> (IN AxisIndex AS LONG<0>, IN pSpeed AS VARIANT<1>, IN pAccel AS VARIANT<2>, IN pCutoff AS _ VARIANT<3>) AS LONG MEMBER CALL SetCL_Speed <32> (IN AxisIndex AS LONG<0>, IN SPEED AS DOUBLE<1>, IN PB_Accel AS DOUBLE<2>, IN Cutoff AS _ DOUBLE<3>) AS LONG MEMBER CALL GetOL_Speed <33> (IN AxisIndex AS LONG<0>, IN pPercMax AS VARIANT<1>) AS LONG MEMBER CALL SetOL_Speed <34> (IN AxisIndex AS LONG<0>, IN PercMax AS DOUBLE<1>) AS LONG MEMBER CALL CONNECT <35> () AS LONG MEMBER CALL SendString <37> (IN AxisIndex AS LONG<0>, IN newCmd AS STRING<1>) AS STRING MEMBER CALL ShowProperties <38> () AS LONG MEMBER CALL AddPort <39> (IN PB_Name AS STRING<0>) AS LONG MEMBER CALL RemovePort <40> (IN PB_Name AS STRING<0>) AS LONG MEMBER CALL UpdateFirmware <41> (IN AxisIndex AS LONG<0>, IN FileName AS STRING<1>, IN AutoStart AS INTEGER<2>) AS LONG MEMBER CALL GetCL_PID <42> (IN AxisIndex AS LONG<0>, IN pProportional AS VARIANT<1>, IN pIncremental AS VARIANT<2>, IN _ pDifferential AS VARIANT<3>) AS LONG MEMBER CALL SetCL_PID <43> (IN AxisIndex AS LONG<0>, IN Proportional AS LONG<1>, IN Incremental AS LONG<2>, IN _ Differential AS LONG<3>) AS LONG MEMBER CALL GetCL_MinDriveAmplitude <44> (IN AxisIndex AS LONG<0>, IN pValue AS VARIANT<1>) AS LONG MEMBER CALL SetCL_MinDriveAmplitude <45> (IN AxisIndex AS LONG<0>, IN Value AS DOUBLE<1>) AS LONG MEMBER CALL GetCL_SoftTravelLimits <46> (IN AxisIndex AS LONG<0>, IN pFwdLimit AS VARIANT<1>, IN pRevLimit AS VARIANT<2>, _ IN pLimitWindow AS VARIANT<3>) AS LONG MEMBER CALL SetCL_SoftTravelLimits <47> (IN AxisIndex AS LONG<0>, IN FwdLimit AS DOUBLE<1>, IN RevLimit AS DOUBLE<2>, IN _ LimitWindow AS DOUBLE<3>) AS LONG MEMBER CALL SetEEPROM_Password <48> (IN AxisIndex AS LONG<0>, IN Password AS STRING<1>) AS LONG MEMBER CALL GetEEPROM_String <49> (IN AxisIndex AS LONG<0>, IN Address AS LONG<1>, IN Bytes AS LONG<2>) AS STRING MEMBER CALL SetEEPROM_String <50> (IN AxisIndex AS LONG<0>, IN Address AS LONG<1>, IN newVal AS STRING<2>) AS LONG MEMBER CALL GetEEPROM_Integer <51> (IN AxisIndex AS LONG<0>, IN Address AS LONG<1>, IN Bytes AS LONG<2>) AS LONG MEMBER CALL SetEEPROM_Integer <52> (IN AxisIndex AS LONG<0>, IN Address AS LONG<1>, IN newVal AS LONG<2>, IN Bytes AS _ LONG<3>) AS LONG MEMBER CALL Initialize <53> () AS LONG MEMBER CALL ZeroEncoder <54> (IN AxisIndex AS LONG<0>) AS LONG MEMBER CALL ShowEEPROM <55> (IN AxisIndex AS LONG<0>) AS LONG MEMBER CALL GetBoardAddress <56> (IN AxisIndex AS LONG<0>, IN pAddress AS VARIANT<1>) AS LONG MEMBER CALL SetBoardAddress <57> (IN AxisIndex AS LONG<0>, IN Address AS LONG<1>) AS LONG MEMBER CALL GetBoardBaudRate <58> (IN AxisIndex AS LONG<0>, IN PB_Port AS LONG<1>, IN pRateType AS VARIANT<2>) AS LONG MEMBER CALL SetBoardBaudRate <59> (IN AxisIndex AS LONG<0>, IN PB_Port AS LONG<1>, IN RateType AS LONG<2>) AS LONG MEMBER CALL GetDriveSignal <60> (IN AxisIndex AS LONG<0>, IN pPeriod AS VARIANT<1>, IN pDC1 AS VARIANT<2>, IN pDC2 AS _ VARIANT<3>, IN pPhase AS VARIANT<4>) AS LONG MEMBER CALL SetDriveSignal <61> (IN AxisIndex AS LONG<0>, IN Period AS DOUBLE<1>, IN DC1 AS DOUBLE<2>, IN DC2 AS _ DOUBLE<3>, IN Phase AS DOUBLE<4>, IN bUpdEEPROM AS INTEGER<5>) AS LONG MEMBER CALL IsAxisMultiplexed <62> (IN AxisIndex AS LONG<0>) AS LONG MEMBER CALL GetSelectedMultiplexedAxis <63> (IN AxisIndex AS LONG<0>, IN pSubAxis AS VARIANT<1>) AS LONG MEMBER CALL SetSelectedMultiplexedAxis <64> (IN AxisIndex AS LONG<0>, IN SubAxis AS LONG<1>) AS LONG MEMBER CALL IsAxisPresent <65> (IN AxisIndex AS LONG<0>) AS LONG MEMBER CALL Get_EncVendor <66> (IN AxisIndex AS LONG<0>) AS STRING MEMBER CALL Set_EncVendor <66> (IN AxisIndex AS LONG<0>, IN Rhs AS STRING<1>) MEMBER CALL Get_CL_StallEnable <67> (IN AxisIndex AS LONG<0>) AS LONG MEMBER CALL Set_CL_StallEnable <67> (IN AxisIndex AS LONG<0>, IN Rhs AS LONG<1>) MEMBER CALL Get_CL_StallTolerance <68> (IN AxisIndex AS LONG<0>) AS DOUBLE MEMBER CALL Set_CL_StallTolerance <68> (IN AxisIndex AS LONG<0>, IN Rhs AS DOUBLE<1>) MEMBER CALL ShowTravelLimits <69> (IN AxisIndex AS LONG<0>) AS LONG MEMBER CALL GetPortName <70> (IN PortIndex AS LONG<0>) AS STRING MEMBER CALL GetAxisPortDesc <71> (IN AxisIndex AS LONG<0>) AS STRING MEMBER CALL Get_CL_TravelLimitEnable <72> (IN AxisIndex AS LONG<0>) AS LONG MEMBER CALL Set_CL_TravelLimitEnable <72> (IN AxisIndex AS LONG<0>, IN Rhs AS LONG<1>) MEMBER CALL Get_CL_StallIncTolerance <73> (IN AxisIndex AS LONG<0>) AS LONG MEMBER CALL Set_CL_StallIncTolerance <73> (IN AxisIndex AS LONG<0>, IN Rhs AS LONG<1>) MEMBER CALL ShowStallTolerance <74> (IN AxisIndex AS LONG<0>) AS LONG MEMBER CALL LoadTrajectoryFromFile <75> (IN AxisIndex AS LONG<0>, IN PB_Type AS LONG<1>, IN FilePath AS STRING<2>, IN _ StartRec AS LONG<3>, IN COLUMN AS LONG<4>, IN Delim AS LONG<5>, IN COUNT AS LONG<6>) AS LONG MEMBER CALL LoadTrajectoryFromArray <76> (IN AxisIndex AS LONG<0>, IN PB_Type AS LONG<1>, IN pTargets AS VARIANT<2>, IN _ COUNT AS LONG<3>) AS LONG MEMBER CALL StartTrajectory <77> (IN AxisIndex AS LONG<0>, IN StartIndex AS LONG<1>, IN COUNT AS LONG<2>, IN Interval AS _ DOUBLE<3>, IN Cycles AS LONG<4>, IN CycleDelay AS DOUBLE<5>, IN Flags AS LONG<6>) AS LONG MEMBER CALL ShowTrajectorySetup <78> (IN AxisIndex AS LONG<0>) AS LONG MEMBER CALL ShowLifeTest <79> (IN AxisIndex AS LONG<0>) AS LONG MEMBER CALL GetEEPROM_Password <80> (IN AxisIndex AS LONG<0>) AS LONG MEMBER CALL GetLifeTestDlg <81> (IN AxisIndex AS LONG<0>) AS QUAD MEMBER CALL StartLifeTest <82> (IN AxisIndex AS LONG<0>, IN Minimize AS LONG<1>) AS LONG MEMBER CALL RunUserProgram <83> (IN ID AS LONG<0>, IN CmdStr AS STRING<1>, IN DirStr AS STRING<2>, IN Flags AS LONG<3>) _ AS LONG MEMBER CALL GetUserProgramStatus <84> (IN ID AS LONG<0>) AS LONG MEMBER CALL ShowHiResAdcSetup <85> (IN AxisIndex AS LONG<0>) AS LONG MEMBER CALL MoveMtrStepsWithLimit <86> (IN Index AS LONG<0>, IN Dir AS LONG<1>, IN COUNT AS LONG<2>, IN Period AS _ DOUBLE<3>, IN DutyCycle AS DOUBLE<4>, IN TravelLimit AS DOUBLE<5>) AS LONG MEMBER CALL QueryElapsedStatus <87> (IN Index AS LONG<0>, IN pElapsed AS VARIANT<1>) AS LONG MEMBER CALL ShowScanTest <88> (IN AxisIndex AS LONG<0>) AS LONG MEMBER GET Ports <1> () AS STRING MEMBER LET Ports <1> () MEMBER GET OnErrorThrowException <3> () AS INTEGER MEMBER LET OnErrorThrowException <3> () MEMBER GET LastErrorCode <4> () AS LONG MEMBER LET LastErrorCode <4> () MEMBER GET LastErrorText <5> () AS STRING MEMBER LET LastErrorText <5> () MEMBER GET LastErrorPort <6> () AS STRING MEMBER LET LastErrorPort <6> () MEMBER GET PortCount <7> () AS LONG MEMBER LET PortCount <7> () MEMBER GET AxisCount <10> () AS LONG MEMBER LET AxisCount <10> () END INTERFACE ' Interface Name : Int__DNstSquiggleCtrlEvents ' Description : Event interface for NstSquiggleCtrl Control ' ClassID : $CLSID_NstSquiggleCtrlLib_Event__DNstSquiggleCtrlEvents CLASS Class_Int__DNstSquiggleCtrlEvents $CLSID_NstSquiggleCtrlLib_Event__DNstSquiggleCtrlEvents AS EVENT INTERFACE Int__DNstSquiggleCtrlEvents $IID_NstSquiggleCtrlLib_Int__DNstSquiggleCtrlEvents INHERIT IDISPATCH END INTERFACE END CLASS
Conrad
Leave a comment:
-
To compile the examples without modification you need to use my new include files instead of the ones provided by PB. You can download them at http://www.jose.it-berater.org/smffo...sg8191#msg8191
I also have my own browser: http://www.jose.it-berater.org/index.html
Leave a comment:
-
Hi Jose- the amount of work you've done with this stuff just boggles the mind! I see about what's going on, but can't compile the examples. I assume the two include files are created with the PBrowser (does the version of Media Player matter?), and what file do the equates like %true come from? That's where my compile fails.
Leave a comment:
-
To use a visual AxtiveX control you need an OLE container. What you have to do depends of the container. Here is an example of how to embed the Windows Media Player ActiveX control using ATL.DLL as the container: http://www.jose.it-berater.org/smffo...p?topic=2714.0
Leave a comment:
-
using a 3rd party activex control
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
Tags: None
Leave a comment: