это, вероятно, проблема с noob COM, но в googling возникает больше вопросов, чем ответов:
Безопасно ли использовать "оператор new" вместо CoCreateInstance для локального экземпляра COM?
Что я сделал:
-
Я реализовал интерфейс IOperationsProgressDialog http://msdn.microsoft.com/en-us/library/windows/desktop/bb775368(v=vs.85).aspx используя публичное наследование и тем самым также реализовал интерфейс IUnknown.
-
Я создал экземпляр через "новый RecyclerProgressCallback" и поместил его в COM-Ptr для управления временем жизни. "RecyclerProgressCallback" - это имя моего производного класса.
-
Я использую этот экземпляр в IFileOperation:: SetProgressDialog http://msdn.microsoft.com/en-us/library/windows/desktop/bb775803(v=vs.85).aspx
Сводка: мой подход "кажется" работает, но я не верю в него, слишком много неприятностей в отношении создания COM-объекта, чтобы полагаться только на наблюдаемое поведение.
Есть ли какие-то тонкие риски, заблуждения или другие проблемы? Спасибо!