Francois Gouget fgouget@free.fr writes:
Or modify these sections so they read:
#if !defined(COM_NO_WINDOWS_H) && !defined(__WINESRC__) # include <windows.h> # include <ole2.h> #endif
I think we want that, otherwise we'll end up having to add COM_NO_WINDOWS_H to pretty much every single source file.
On Wed, 18 Oct 2006, Alexandre Julliard wrote:
Francois Gouget fgouget@free.fr writes:
Or modify these sections so they read:
#if !defined(COM_NO_WINDOWS_H) && !defined(__WINESRC__) # include <windows.h> # include <ole2.h> #endif
I think we want that, otherwise we'll end up having to add COM_NO_WINDOWS_H to pretty much every single source file.
Actually, in the PSDK there seems to be a correlation between COM_NO_WINDOWS_H and idl files. It's not 100% but that may be just be because they don't ship all the idl files. Also, the COM_NO_WINDOWS_H #ifdef is not present in the idl file, suggesting that it is being added by midl.
Could someone confirm this?
If so, then we should change widl rather than edit all the idl files...
Francois Gouget wrote:
On Wed, 18 Oct 2006, Alexandre Julliard wrote:
Francois Gouget fgouget@free.fr writes:
Or modify these sections so they read:
#if !defined(COM_NO_WINDOWS_H) && !defined(__WINESRC__) # include <windows.h> # include <ole2.h> #endif
I think we want that, otherwise we'll end up having to add COM_NO_WINDOWS_H to pretty much every single source file.
Actually, in the PSDK there seems to be a correlation between COM_NO_WINDOWS_H and idl files. It's not 100% but that may be just be because they don't ship all the idl files. Also, the COM_NO_WINDOWS_H #ifdef is not present in the idl file, suggesting that it is being added by midl.
Yes, this is correct.
On Thu, 19 Oct 2006, Robert Shearman wrote: [...]
Actually, in the PSDK there seems to be a correlation between COM_NO_WINDOWS_H and idl files. It's not 100% but that may be just be because they don't ship all the idl files. Also, the COM_NO_WINDOWS_H #ifdef is not present in the idl file, suggesting that it is being added by midl.
Yes, this is correct.
Hmm, there must still be something more: for instance amvideo.h and wtypes.h are midl generated and yet they don't have this COM_NO_WINDOWS_H stuff.
Still, the 2003SP2 SDK has 231 header files generated from an Idl file, and only 44 of those are missing the COM_NO_WINDOWS_H section so it's a good first approximation. Could it depend on the imported idl files?
Francois Gouget wrote:
On Thu, 19 Oct 2006, Robert Shearman wrote: [...]
Actually, in the PSDK there seems to be a correlation between COM_NO_WINDOWS_H and idl files. It's not 100% but that may be just be because they don't ship all the idl files. Also, the COM_NO_WINDOWS_H #ifdef is not present in the idl file, suggesting that it is being added by midl.
Yes, this is correct.
Hmm, there must still be something more: for instance amvideo.h and wtypes.h are midl generated and yet they don't have this COM_NO_WINDOWS_H stuff.
Still, the 2003SP2 SDK has 231 header files generated from an Idl file, and only 44 of those are missing the COM_NO_WINDOWS_H section so it's a good first approximation. Could it depend on the imported idl files?
Is there any pattern to those that are missing it?
I would only expect to see the COM_NO_WINDOWS_H stuff in headers generated from IDL files with at least one interface with the object keyword.
On Thu, 19 Oct 2006, Robert Shearman wrote: [...]
Is there any pattern to those that are missing it?
I have not found it yet.
I would only expect to see the COM_NO_WINDOWS_H stuff in headers generated from IDL files with at least one interface with the object keyword.
Ah, you must know more than me as I had no particular expectations. There are some counter-examples: * Bits.h contains the COM_NO_WINDOWS section, but there is no object keyword in Bits.Idl. * Dimm.h contains no COM_NO_WINDOWS section, but there are object keywords in Dimm.Idl (but in a library section, maybe that makes a difference).
Counter example to the "object keywords inside a 'library' don't count" hypothesis: SspsIdl.Idl.
Maybe this has to do with what a given Idl file #imports? (which would make testing harder :-( )
Or maybe the headers that lack the COM_NO_WINDOWS section have been manually edited by MS after being generated by midl?