Jak zobrazit TaskDialog v .NET aplikaci

Petr Wiedemann, 2. leden 2011

TaskDialog je přirozeným nástupcem okna MessageBox. Je dostupný ve Windows Vista nebo Server 2008 a novějších. TaskDialog je umístěn v knihovně Comctl32.dll od verze 6. Pokud chcete ve vlastní .NET aplikaci TaskDialog použít, můžete sáhnout po hotovém řešení přímo od Microsoftu - Windows® API Code Pack for Microsoft® .NET Framework.

Windows® API Code Pack for Microsoft® .NET Framework obsahuje zdrojové soubory a přeložené knihovny pro podporu některých novinek, uvedených ve Windows Vista a Windows 7 v .NET aplikacích.

Aby bylo možné TaskDialog zobrazit, musí se aplikace odkázat na správnou verzi knihovny Comctl32.dll. Jednou z možností je vložit manifest přímo do aplikace - tento způsob je použitý i ve výše zmíněné knihovně. Druhou možností je použití funkcí CreateActCtx, ActivateActCtx a DeactivateActCtx pro nahrání správné verze knihovny Comctl32.dll za běhu aplikace. I pro tento způsob již existuje hotové řešení na How to apply Windows XP themes to Office COM add-ins, jen se musí trochu upravit, aby fungovalo i v 64 bitových systémech.

TaskDialog

Tento způsob je použitý také v programu dotsplit. Na stránce programu je k dispozici i zdrojový kód, kde je v souboru ActivationContext.cs kód, pro nahrání správné verze knihovny Comctl32.dll. V souboru dotsplit.xaml.cs je následně v metodě DisplaySplitResult vidět, jak lze TaskDialog zobrazit.