Ничего, кроме этой функции Vista
UPDATE:
Эта проблема была связана с параллельными сборками: эти функции присутствуют только в версии 6 comctl32.dll, но по соображениям совместимости Vista загрузит более раннюю версию, если вы не укажете обратное. Подход, принятый большинством людей (включая меня), заключается в использовании манифеста. Это оказалось непростым делом и, в любом случае, может оказаться неправильным решением, особенно если вы пишете библиотеку: вам не обязательно заставлять все приложение использовать общие элементы управления 6.
Правильное решение - выдвинуть новый контекст активации при вызове одного из API-интерфейсов только для Vista. Контекст активации будет использовать правильную версию comctl32.dll, оставляя остальную часть приложения в покое, и манифест не требуется.
К счастью, это легко сделать. Некоторый полный код, который уже существует База знаний MS . Код из статьи (KB 830033) делает все как есть.
Альтернативный управляемый API:
Полную оболочку для Vista TaskDialog и TaskDialogIndirect можно найти здесь:
http://code.msdn.microsoft.com/WindowsAPICodePack
Для WPF используйте следующее:
Загрузите 'библиотеку образцов VistaBridge' из http://code.msdn.microsoft.com/VistaBridge после загрузки, откройте проект и затем создайте его (если вы хотите просмотреть весь код, проверьте файлы в папках \ Library или \ Interop) , Теперь вы можете взять DLL из VistaBridge \ bin \ debug \ и добавить ссылку на нее в свой проект, а также вы должны добавить оператор использования для каждого из различных модулей VistaBridge. Например:
с использованием Microsoft.SDK.Samples.VistaBridge.Interop или .Library или .Properties или .Services - в зависимости от ваших потребностей.
Проект VistaBridge включает API для многих других функций Vista (таких как TaskDialog, Vista OpenFile и диалоги SaveFile и, конечно, Aero Glass Effects), чтобы попробовать их, запустите проект VistaBridge.