Solved

How to define IDL methods, callable from VB?

Posted on 2001-07-10
7
580 Views
Last Modified: 2013-11-25
Where can I find appropriate documentation on the subset of IDL (Interface Definition Language) functionality I can use when writing COM objects I want to be callable from Visual Basic.

I'm writing a few C++ utility functions in COM objects to be used by Visual Basic.  I'm sure there must be some documentation on what's valid and what's not, but I'm having a hard time finding it!  ;->

Typical error --
  "Compile error:"
  "Function or interface marked as restricted, or the function uses an Automation type not supported in Visual Basic"

Thanks!
0
Comment
Question by:JeffGrigg
  • 4
  • 2
7 Comments
 
LVL 3

Expert Comment

by:jrspano
ID: 6270770
why don't you just let c++ do it for you? Visual C++ 6 will generate everything you need when makeing com objects.
0
 
LVL 3

Expert Comment

by:jrspano
ID: 6270777
there is also some stuff about idl in the msdn library.  it has a fractal sample.
0
 

Author Comment

by:JeffGrigg
ID: 6270847
Well yes, VC++ 6 will "do all the IDL and C++ code generation for me," when I right click on the interface, select Add Method, and then type in the method name, and then >>> type in all the gory IDL details of all the parameters making sure to conform to all the *unknown* rules of types that Visual Basic is able to use <<<.

It's that last little step I'm having trouble with.  ;->
0
ScreenConnect 6.0 Free Trial

Want empowering updates? You're in the right place! Discover new features in ScreenConnect 6.0, based on partner feedback, to keep you business operating smoothly and optimally (the way it should be). Explore all of the extras and enhancements for yourself!

 

Author Comment

by:JeffGrigg
ID: 6270992
Found partial answer on http://www.yukondude.com/articletamevbwithidl.asp

It contains a table I found helpful:
  Visual Basic Data Type -> IDL Data Type
  Boolean -> VARIANT_BOOL
  Byte -> unsigned char
  Collection -> _Collection*
  Currency -> CURRENCY
  Date -> DATE
  Double -> double
  Integer -> short
  Long -> long
  Object -> IDispatch*
  Recordset -> _Recordset*
  Single -> float
  String -> BSTR
  Variant -> VARIANT
  no parameters -> void
Figure 2 / Visual Basic data types and their corresponding data types in IDL
0
 

Author Comment

by:JeffGrigg
ID: 6277330
I seem to recall reading an article from Developmentor (http://www.developmentor.com) describing the limits of VB-implementable interfaces, but I can't find it.
_ _ _

On the other hand, I've found useful information in MSDN under the "oleautomation" keyword, from the MIDL language:  "The oleautomation attribute indicates that an interface is compatible with OLE Automation. The parameters and return types specified for its members must be OLE Automation-compatible, as listed in the following table."

Type -> Description
===================
boolean -> The MIDL base type boolean is incompatible with the oleautomation attribute. Use VARIANT_BOOL instead.
unsigned -> char 8-bit unsigned data item.
Double -> 64-bit IEEE floating-point number.
Float -> 32-bit IEEE floating-point number.
Int -> Integer whose size is system dependent. On 32-bit platforms, MIDL treats int as a 32-bit signed integer.
Long -> 32-bit signed integer.
Short -> 16-bit signed integer.
BSTR -> Length-prefixed string, as described in the OLE Automation topicBSTR.
CY -> (Formerly CURRENCY) 8-byte fixed-point number.
DATE -> 64-bit floating-point fractional number of days since December 30, 1899.
SCODE -> Built-in error type that corresponds to HRESULT.
Enum -> Signed integer, whose size is system-dependent. In remote operations, enum objects are treated as 16-bit unsigned entities. Applying the v1_enum attribute to an enum type definition allows enum objects to be transmitted as 32-bit entities.
IDispatch * -> Pointer to IDispatch interface (VT_DISPATCH).
IUnknown * -> Pointer to interface that is not derived from IDispatch (VT_UNKNOWN). (Any OLE interface can be represented by its IUnknown interface.)
0
 
LVL 49

Accepted Solution

by:
DanRollins earned 100 total points
ID: 7153031
JeffGrigg, an EE Moderator will handle this for you.
Moderator, my recommended disposition is:

    Refund points and save as a 0-pt PAQ.

DanRollins -- EE database cleanup volunteer
0
 

Author Comment

by:JeffGrigg
ID: 7153217
Good suggestion.

Thank you for tracking down and cleaning up outdated questions.  (You can have the points for that.  ;-)
0

Featured Post

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

If you have ever used Microsoft Word then you know that it has a good spell checker and it may have occurred to you that the ability to check spelling might be a nice piece of functionality to add to certain applications of yours. Well the code that…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…

809 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question