Вызов SetThemeAppProperties
с аргументом, у которого флаг STAP_ALLOW_CONTROLS
не установлен, приводит к CoCreateInstance
для общих диалоговых окон (или в диалоговом окне открытия файла, CLSID_FileOpenDialog
) для возврата ошибки 0x80040111
.
Пример кода следующий:
HRESULT hResult;
CComPtr< IFileOpenDialog > pFileOpenInterface1;
CComPtr< IFileOpenDialog > pFileOpenInterface2;
hResult = ::CoCreateInstance( CLSID_FileOpenDialog, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS( &pFileOpenInterface1 ) );
::SetThemeAppProperties( 0 );
hResult = ::CoCreateInstance( CLSID_FileOpenDialog, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS( &pFileOpenInterface2 ) );
Чтобы превратить его в работающий код, я создал (в Visual Studio 2010 Professional) простое приложение с графическим интерфейсом Win32 и добавил этот код в меню «Справка | Об обработчике».
Почему так и как обойти эту проблему?