トップ回答者
OpenFileDialog の項目IDの調べ方

質問
回答
-
あさお さん の発言:コモンダイアログのデザインは、Windowsのバージョンによって変わる可能性があるため、一意に定義されていません。
同様な事象の際にループを回さず確認したいと思いますが、
この宣言(define)はどこを見れば確認できますでしょうか?
従って、コモンダイアログの既定のコントロールに対して操作するという手法は、Windowsのバージョン依存の保証されていないやり方になります。
(リソースを開くなり、Spyを使うなりでご自身で調べて、ご自身の責任で利用することになります)
なお、Vistaではコモンダイアログが大きく見直されています。
XPや2000でうまく動いても、Vistaやそれ以降のWindowsでは動かないという可能性があります。ご注意下さい。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。- 回答としてマーク あさお 2009年3月19日 5:02
-
根本的なこととして、OpenFileDialog.FileNameプロパティもしくはFileNamesプロパティを操作することでは問題解決しないのですよね?
まず、OpenFileDialogクラスが内部でGetOpenFileName Functionを使用していることを知っている必要があります。
そしてリンク先からcomdlg32.dllに実装されており、そこのリソースに含まれているだろうと予測できます。
なお、Windows Vistaではダイアログが変更されているので実装されているDLLも違うはずです。
その上で、Visual Studio 2008 + Windows Vista日本語版においては、Visual Studio側のバグによりリソースエディタが使用できません。
Microsoftに問い合わせたところ、修正予定なしとの回答を得ています。回避策としてはWindows Vista英語版を使用して下さいとのことです。
…でもこうやって調べることも含めて自己責任でやって欲しいとは思います。- 回答としてマーク あさお 2009年3月19日 5:03
すべての返信
-
あさお さん の発言:コモンダイアログのデザインは、Windowsのバージョンによって変わる可能性があるため、一意に定義されていません。
同様な事象の際にループを回さず確認したいと思いますが、
この宣言(define)はどこを見れば確認できますでしょうか?
従って、コモンダイアログの既定のコントロールに対して操作するという手法は、Windowsのバージョン依存の保証されていないやり方になります。
(リソースを開くなり、Spyを使うなりでご自身で調べて、ご自身の責任で利用することになります)
なお、Vistaではコモンダイアログが大きく見直されています。
XPや2000でうまく動いても、Vistaやそれ以降のWindowsでは動かないという可能性があります。ご注意下さい。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。- 回答としてマーク あさお 2009年3月19日 5:02
-
根本的なこととして、OpenFileDialog.FileNameプロパティもしくはFileNamesプロパティを操作することでは問題解決しないのですよね?
まず、OpenFileDialogクラスが内部でGetOpenFileName Functionを使用していることを知っている必要があります。
そしてリンク先からcomdlg32.dllに実装されており、そこのリソースに含まれているだろうと予測できます。
なお、Windows Vistaではダイアログが変更されているので実装されているDLLも違うはずです。
その上で、Visual Studio 2008 + Windows Vista日本語版においては、Visual Studio側のバグによりリソースエディタが使用できません。
Microsoftに問い合わせたところ、修正予定なしとの回答を得ています。回避策としてはWindows Vista英語版を使用して下さいとのことです。
…でもこうやって調べることも含めて自己責任でやって欲しいとは思います。- 回答としてマーク あさお 2009年3月19日 5:03
-
余計な枝葉を記載すると焦点がボケると思い敢えて記載しなかったのですが、
マウスジェスチャーをエミュレートするプログラムで「OpenFileDialog」の
「ファイル名」項目を外部より指定したいと思っていました。「OpenFileDialog.FileNameプロパティもしくはFileNames」での指定も可能ですが、
極力、本体部に手を入れずエミュレート部から「ファイル名」項目に指定するには、
「SetDlgItemText」を使用する手法を取りました。APIを触り始めたばかりで分からない事ばかりですが、
できる限り自分で調査・実行しどうしても分からない事だけに
皆様のお力をお借りできればと思っています。ご指導頂きました皆様ありがとうございました。