ActiveX and RR

Chipp Walters chipp at chipp.com
Mon Aug 9 17:56:46 EDT 2004


Spent some talking with Chris today about ActiveX controls inside of RunRev.

Some on the list here have posited the notion that RR can't be taken 
seriously as a tool until (among other things) it has ActiveX support. 
While this may indeed be true, it is worth examining what really *is* 
ActiveX support and how does a product like RB 'support' it?

(Note: I expect this argument may also be true for Director, though I'm 
not positive. Perhaps Troy can shed some light).

Regarding ActiveX (from Chris):

1) He believes it's easy to add (in fact, we have a ActiveX instantiator 
in our XConnector code for Hemingway) with the following caveats:

a) You would need to know the CLSID of the ActiveX control you wanted to 
add (this could probably be done inside of RR using a Registry browser 
function).

b) You could display the ActiveX control/player easily on a card

c) You could set properties and call methods (assume you know the 
correct syntax)

All this is well and good...and in fact is how RB deals with them. The 
two major hard parts are:

1) 'event trapping' or sending events back and forth across the RR boundary.

2) 'type marshalling' or converting RR strings to the appropriate 
Windows API type.

The first can be done thru custom code in an external or an engine 
modification. Type marshalling is a bit more difficult and would make 
sense to have an engine modification in order to do this properly. 
Things like pointer handles and arrays are most difficult. This would 
mean we would need some way to convert strings to variants. Plus, 
there's the whole issue of unicode which makes things even harder...

Chris' opinion is that RB provides a subset of ActiveX support and 
doesn't handle the 'events' completely-- and that is why they have their 
'own' grids, tables, etc and don't use standard ActiveX ones (I assume 
the same is true for Director and 'Xtras'). It is also the reason why 
altBrowser is a custom external and not just an instantiatiated ActiveX 
wrapper.

So, to recap, it appears it would be fairly easy to have an 'ActiveX' 
wrapper external which could call ActiveX DLLs. But, the DLL it calls 
would not actually 'trap' events, but rather only have props set and 
methods called. How functional is this? Well, for one it could work as a 
player for different 'players' like Flash, IE, Acrobat,Excel, as long as 
you don't need callbacks...which is of limited use because most 
programmers want to 'get' the event messaging.

In fact, if one peruses the RB list, you will find instances of users 
being able to 'call' to the Windows Media Player and start playing a 
video. But, to able to respond to the video via callbacks, etc, is not 
supported.

Interesting, in talking with Jerry Daniels and Chris about this, the 
very first question they had was "What do you want to do which isn't 
currently supported?" Ken Ray has offered some good suggestions 
regarding existing ActiveX tables, grids and treeLists. But, to my 
knowledge, adding the full functionality of these ActiveX controls are 
difficult (if not impossible) both in RB and RR (and I assume Director 
as well).

Lastly, for those who have gotten this far:-) and think of ActiveX 
support a 'have2have' feature, I am wondering...How much would you 
consider paying for it? Or would you expect it to be in the 'Enterprise' 
version of RR?

-Chipp


More information about the use-livecode mailing list