On 09/04/2008, Francois Gouget <[email protected]> wrote:
> On Mon, 24 Mar 2008, Alexandre Julliard wrote:
>  [...]
>  > Commit: ae32a7fe0473aebb875b26083c1567ff046c3b80
>  > URL:    
> http://source.winehq.org/git/wine.git/?a=commit;h=ae32a7fe0473aebb875b26083c1567ff046c3b80
>  >
>  > Author: Reece Dunn <[email protected]>
>  > Date:   Sat Mar 22 22:50:43 2008 +0000
>  >
>  > comdlg32: Fix building the tests with MSVC headers.
>  [...]
>  > +++ b/dlls/comdlg32/tests/printdlg.c
>  > @@ -26,6 +26,7 @@
>  >  #include "winerror.h"
>  >  #include "wingdi.h"
>  >  #include "winuser.h"
>  > +#include "objbase.h"
>
>  The question is why didn't this fail in Wine in the first place? The
>  Wine headers must be different in some way which causes the compile to
>  succeed when it should have failed. Thus they should be fixed.

With the current Vista SDK headers (not sure about older ones), in
commdlg.h PRINTDLGEXA/W is wrapped in a #ifdef STDMETHOD guard along
with the definition of IPrintDialogCallback, IPrintDialogServices and
PRINTPAGERANGE. Thus, using the SDK headers it does not find
LPPRINTDLGEXW without objbase.h to get the definition of STDMETHOD.

Looking at the Wine headers, the PRINTDLGEXA/W datastructure is not
guarded in this way and the lpCallback member is void* not LPUNKNOWN
as it is in the SDK headers.

- Reece




Reply via email to