And why bother checking UNICODE?
Please clarify.
+MIDL_INTERFACE("509aaeda-5639-11d1-b6a1-0000f8757bf9") +IPrintDialogServices : public IUnknown +{ +#ifdef UNICODE + virtual HRESULT STDMETHODCALLTYPE GetCurrentDevMode(LPDEVMODEW,UINT *) = 0; + virtual HRESULT STDMETHODCALLTYPE GetCurrentPrinterName(LPWSTR,UINT *) = 0; + virtual HRESULT STDMETHODCALLTYPE GetCurrentPortName(LPWSTR,UINT *) = 0; +#else + virtual HRESULT STDMETHODCALLTYPE GetCurrentDevMode(LPDEVMODEA,UINT *) = 0; + virtual HRESULT STDMETHODCALLTYPE GetCurrentPrinterName(LPSTR,UINT *) = 0; + virtual HRESULT STDMETHODCALLTYPE GetCurrentPortName(LPSTR,UINT *) = 0; +#endif +};
This is very strange. Normally, you'd have two different interfaces for something like this: IPrintDialogServicesA and IPrintDialogServicesW.
Does PrintDlgEx really use an interface with the same iid but different function signatures depending on whether the A or W version is called? If so, I think it would be best to define both versions, so that our tests and implementation can easily provide/use both.