<p>Am 23.07.2017 12:50 schrieb "Michael Van Canneyt via Lazarus" <<a href="mailto:lazarus@lists.lazarus-ide.org">lazarus@lists.lazarus-ide.org</a>>:<br>
><br>
> Hello,<br>
><br>
> I have fixed bug 28760:<br>
><br>
> <a href="https://bugs.freepascal.org/view.php?id=28760">https://bugs.freepascal.org/view.php?id=28760</a><br>
><br>
> This will cause compilation of win32wsdialogs.pp to fail, in particular in<br>
><br>
> class procedure TWin32WSOpenDialog.SetupVistaFileDialog(ADialog: IFileDialog; const AOpenDialog: TOpenDialog);<br>
><br>
> search for:<br>
><br>
>   if InitialDir <> '' then<br>
>   begin<br>
>     if Succeeded(SHCreateItemFromParsingName(PWideChar(UTF8ToUTF16(InitialDir)), nil, IShellItem, DefaultFolderItem)) then<br>
>       ADialog.SetFolder(DefaultFolderItem);<br>
>   end;<br>
><br>
> Directly passing an interface where (T)REFIID is expected, will no longer be possible.</p>
<p>I reverted the changes by Michael and changed the parameters of those functions to constref instead.<br>
However that doesn't mean that there won't be breaking changes: there are some interfaces that take REFIID (or TGuid parameters that are generally used with interface IIDs) and those will need to be changed as well. Most will be interface which have implementations provided by e.g. Windows, but in some cases those might be implemented by users and thus will lead to compilation failures (but at least those will be easy to spot :) ).</p>
<p>Regards,<br>
Sven</p>