C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 43 を表示中)
■22708 / )  Re[5]: ファイル選択ダイアログについて
□投稿者/ 魔界の仮面弁士 (798回)-(2008/07/30(Wed) 09:42:08)
2008/07/30(Wed) 10:11:49 編集(投稿者)

No22700 (Azulean さん) に返信
>>MSDN のサンプルで言えば、MyHookProc メソッドのコード
> この手法って、Vista SP1だと実現できないかもしれません。
Vista Biz/SP1 上で試してみましたが、
 const uint ID_OK = 1;
 const uint CDM_SETCONTROLTEXT = 0x468;
 StringBuilder sb = new StringBuilder("選択");
 UInt32 ret = NativeMethods.SendMessage(hWndParent, CDM_SETCONTROLTEXT, ID_OK, sb);
のコードのままで、[OK] → [選択] への切り替えが行われる事を確認できました。


> Vista SP1以降だと、新しいコモンダイアログが自動的に適用されます。
旧ダイアログは GetOpenFileName API ですが、Vista ダイアログを出すには、 IFileDialog インターフェイスという
COM ベースの API を呼び出さねばなりませんので、その切り替えは自動的に行われるものでは無いと思います。
少なくとも P/Invoke の場合は。


> AutoUpgradeEnabledプロパティをfalseにすれば元の古いダイアログに戻りますが、
それは、今回のサンプルにあるアンマネージコードのダイアログではなく、
マネージの System.Windows.Forms.OpenFileDialog の話では無いでしょうか。

マネージ版の場合は、AutoUpgradeEnabled と OS 判定を元にして、
内部で Vista 版 API を呼ぶか、従来版 API を呼ぶかを切り替える仕様になっていますね。
返信 編集キー/


管理者用

- Child Tree -