|
分類:[C# (Windows)]
Vista から、新たに追加になった TaskDialog の使い方を調べていたのですが、 ちょっと、不思議なことがあります。
C# から、TaskDialog を呼び出そうとしているのですが、
[DllImport("comctl32.dll", CharSet = CharSet.Unicode, EntryPoint="TaskDialog")] static extern int _TaskDialog( IntPtr hWndParent, IntPtr hInstance, String pszWindowTitle, String pszMainInstruction, String pszContent, int dwCommonButtons, IntPtr pszIcon, out int pnButton);
これを定義しておけば、Windows Form を使ったときには、 単純に、
int p; _TaskDialog( this.Handle, IntPtr.Zero, "123", "456", "789", 1, new IntPtr(UInt16.MaxValue), out p );
という呼び出しで、ダイアログが表示されるのですが、WPF を使ったときには、
WindowInteropHelper helper = new WindowInteropHelper(this);
int p; _TaskDialog( helper.Handle, IntPtr.Zero, "123", "456", "789", 1, new IntPtr(UInt16.MaxValue), out p );
同じように、呼び出すと、
『DLL 'comctl32.dll' の 'TaskDialog' というエントリ ポイントが見つかりません』
というエラーが表示されます。Windows Form で問題なく呼び出せているのに、なぜ、WPF を使うと 呼び出せなくなるのか?が、五里霧中です。
何か、Windows Form と WPF で DLL の呼び出し方に違いがあるのでしょうか? ※BEEP の呼び出しは、Windows Form と WPF で共通なのは確認しましたが。。。
|