M
Michael C
Jon Davis said:That said, you listed three APIs that do not relate to the target market
for VB6,
That is *highly* debatable. Questions about directshow, cd burning and wia
are quite common in the newsgroups. Third party solutions or free code for
any of these are also very common.
including the OP. As for "shell functions", if you mean Win32 calls VB6
can do it without issue.
No i don't mean the win32 api, I'm talking about all the shell com objects.
Take IShellFolder as an example.
I have worked with VB4-6 for nearly a decade, I have never seen a "*huge*
number of interfaces" inaccessible to VB4-6.
Just because you haven't seen them doesn't mean they don't exist. There are
literally thousands of com interfaces implemented by various windows
functionality that vb6 cannot use (DirectShow on it's own has 500 or so and
it's only 1 part of DirectX). I never realised how many there were until I
started implementing them in C#.
Rather, I am aware of a *huge* number of interfaces that are required to
be implemented in order to have properly implemented ActiveX control, as
opposed to just an IUnknown-exposed COM object, and as such I have seen
several interfaces that were inaccessible to VB4-6 but were later on
cleaned up to Microsoft ActiveX conformance standards. Much of the DirectX
API was among them.
Generally when MS do this it is a fairly cut down version. The WIA component
was pretty good but only worked on winxp sp1. The directshow component was
woeful.
I'm not sure what you're talking about. You can use polymorphic interfaces
in VB6 and advise / unadvise the interface to a callback function via COM.
Take the ISampleGrabberCB interface as an example. It works fairly simply by
calling a method in your class every time a frame is received and passes a
pointer to the bitmap data. You can't implement this callback in vb6 because
it can't implement a pure IUknown interface.
You can also use this method to create event sinks with COM objects that
implement IConnectionPoint. I think we discussed homework...?
The other thing that is *really* sucky about vb6s implementation of com is
the 'weight' of each object. You can't create too many objects because each
object takes too much memory and takes too long to create and destroy.
10,000 objects is not really usuable. That might sound like a lot but it's
only a 100x100 grid.
Michael