Re: #import ignores enums?
Hi Chris,
What I do is to create an ODLenums.h file and include it in the ODL
file near the top right after the importlibs but before the interface
definition.
When I create the property/method/event which uses the enum I am
careful to use 'long' instead of the enum itself. This forces the
wizard generated code to use a known type which allows the enum to
grow to any size. It will pick a 'short' if you let it use the enum.
Anyhow, then I go in and modify the wizard code in one place where it
uses it in the property/method definition in the ODL file. In my C++
code, I include the same ODLenums.h file and I use the enum type
throughout my program. This will give you the popup help and
eliminate confusion about which type is being marshalled by OLE.
Hope that helps you,
-GB
On Fri, 12 Oct 2007 08:21:41 -0600, "Chris Shearer Cooper"
<chrisnews@sc3.net> wrote:
Sorry for the cross-post, but I have absolutely no idea which newsgroup this
question should go into ...
I have a DLL that I am creating in C++, using the Microsoft attributed
stuff, and it contains an enum like this in my H file:
[export]
enum eInterfaces
{
eDoodad = 1,
eFlipper = 2
};
and then I have an entry in my __interface that looks like this :
[propget, id(23), helpstring("property Interface")] HRESULT Interface([out,
retval] enum eInterfaces* pVal);
The compiler creates an IDL file with the same values in it.
But when I #import that DLL into my EXE, the resulting TLH has completely
lost the enum. I get things like this :
__declspec(property(get=GetInterface))
long Interface;
and this :
long GetInterface ( );
and this :
virtual HRESULT __stdcall get_Interface (/*[out,retval]*/ long * pVal ) = 0;
but no enum.
Am I missing something obvious? Or does #import not know how to import
enums? Or does MIDL not actually put my enum in the DLL in a place that
#import can find it?
Thanks,
Chris