Windows API Code Pack の TaskDialogでアイコンが出ないバグの治し方


Window API Code Pack 1.1 では何故かTaskDialogでアイコンが表示されません。

色々調べていたところ改善方法を発見したのでブログに残しておきたいと思います。

まず改善前の状態。

改善前

TaskDialogのサンプルソースを実行、IconでWarningを指定したにもかかわらず、アイコンは表示されていません。

ソースコードの書き換え

WindowsAPICodePackのソリューション(WindowsAPICodePack.sln)をVisualStudioで開きます。(Expressエディションの場合はC#で開きます)

TaskDialogNativeMethodsソリューションエクスプローラ―で、Core -> Interop -> TaskDialogs -> TaskDialogNativeMethods.cs を開きます。

 

次に、Ctrl+G で 74 と入力し、74行目に移動します。


internal IconUnion(int i)
{
mainIcon = i;
spacer = IntPtr.Zero;
}

この74行目付近の部分を、


internal IconUnion(int i)
{
spacer = IntPtr.Zero;
mainIcon = i;
}

に変更(上下入れ替え)し、リビルドします。

尚、VisualStudio2010以降でビルドする場合は、”ShellExtensions”以外のプロジェクトの対象フレームワークを”.NET Framework 3.5″に変更してください。(そうしないとエラーでビルドできません)
.NET Framework 4.0 以降でビルドする場合は、参照設定に System.Xaml を追加してください

次に先ほどのTaskDialogのソースコードをもう一度ビルドするとダイアログでちゃんとアイコンが表示されるようになると思います。

TaskDialogDemo

急いで執筆したので間違いがあればご指摘ください。以上です。

管理人

最近は主にプログラミングやパソコンいじりをしています。たまに電子工作や映像加工、DTMなどやっています。