| ■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 を呼ぶかを切り替える仕様になっていますね。
|
|