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