Reece Dunn : comdlg32: Fix building the tests with MSVC headers.

Reece Dunn msclrhd at googlemail.com
Fri Apr 3 12:01:59 CDT 2009


On 09/04/2008, Francois Gouget <fgouget at free.fr> 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 <msclrhd at googlemail.com>
>  > 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





More information about the wine-devel mailing list