On 09/04/2008, Francois Gouget fgouget@free.fr wrote:
On Mon, 24 Mar 2008, Alexandre Julliard wrote: [...]
Commit: ae32a7fe0473aebb875b26083c1567ff046c3b80 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ae32a7fe0473aebb875b26083c...
Author: Reece Dunn msclrhd@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