- ベストアンサー
コモンダイアログのshowopenの設定方法とアイコンの非表示方法
- コモンダイアログのshowopenを使用してファイルを開くダイアログを表示させる方法について説明します。また、ファイル名をテキストで入力するように設定する方法についても解説します。
- さらに、コモンダイアログのshowopenで表示されるダイアログに表示される左側のアイコン(「履歴」「デスクトップ」「マイコンピュータ-」「マイネットワーク」)を非表示にする方法についても説明します。
- これらの設定変更により、より使いやすいファイルを開くダイアログを実現することができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>APIはまったく使ったことがなく、よくわかりません。 いきなりこのAPIは結構厳しいかも・・・ >どのDLLを使い、どのようにプログラムを書くのでしょうか?教えていただけると助かります。 順番が違いますね。 DLLを探すではなく、使用API関数を探すのが先です。 APIが見つかったら、どこのDLLのにあるかを探します。 で、ファイルを開くダイアログを表示するには、 GetOpenFileName というAPIを使用します。 詳細は、MSDNを見てください。 とりあえず、APIでファイルを開くコモンダイアログを表示するサンプルです。 http://homepage1.nifty.com/MADIA/vb/API/GetOpenFileName.htm >私はファイル名はテキストでただ入力しかできないよう >にしたいのですが、どのように設定すればよいのでしょうか? こっちはあきらめたほうがいいですよ。 単純にAPIを使うだけではないので。 >それと、左側に「履歴」「デスクトップ」「マイコンピュータ-」 >「マイネッ トワーク」のアイコンが表示されているのですがこれも消したいのです。 こっちなんですが、この左側の部分自体がVB6以降のOSであるWindows2000以降の機能なので、特別な対応が必要です。 urlのところにあるサンプルの中の、OPENFILENAME構造体をWindows2000用に変更する必要があります。 'OPENFILENAME構造体 Public Type OPENFILENAME lStructSize As Long '構造体のサイズ hwndOwner As Long 'ウインドウのハンドル hInstance As Long 'インスタンスハンドル lpstrFilter As String 'フィルター lpstrCustomFilter As String 'カスタムフィルター nMaxCustFilter As Long 'カスタムフィルターのサイズ nFilterIndex As Long 'フィルタのインデックス lpstrFile As String 'ファイル名のバッファ nMaxFile As Long 'ファイル名のバッファのサイズ lpstrFileTitle As String 'フルパス用のバッファ nMaxFileTitle As Long 'フルパス用のバッファのサイズ lpstrInitialDir As String 'ディレクトリを指定 lpstrTitle As String 'ダイヤログボックスのタイトル flags As Long '定数(OFN_××参照) nFileOffset As Integer 'フルパスの中のファイル名までのオフセット nFileExtension As Integer '拡張子までのオフセット lpstrDefExt As String 'デフォルトの拡張子 lCustData As Long 'lpfnHookで渡すデータ lpfnHook As Long 'フック関数のポインタ lpTemplateName As String 'テンプレート名 '---ここから追加--- pvReserved As Long dwReserved As Long FlagsEx As Long '---ここまで追加--- End Type 「ここから追加」から、「ここまで追加」の間の行を追加してください。 あと、 Public Const OFN_EX_NOPLACESBAR = &1 という1行を追加して定数を宣言してください。 で、呼び出すところのEnd Withの前の行に、 .FlagsEx = OFN_EX_NOPLACESBAR と記述すれば左側の部分が消えるはずです。 #このあたりの説明は、#1の参考urlに書いてあります。 理解していただけましたか?
その他の回答 (1)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>私はファイル名はテキストでただ入力しかできないよう >にしたいのですが、どのように設定すればよいのでしょうか? 標準のコモンダイアログのインターフェイスを使うのでしたら不可能です。 #コモンダイアログコントロールではなくWindowsAPIを使用するのでしたら何とかなりますが。 >それと、左側に「履歴」「デスクトップ」「マイコンピュータ-」 >「マイネッ トワーク」のアイコンが表示されているのですがこれも消したいのです。 コモンダイアログコントロールを使用している場合は不可能です。 WindowsAPIを直接使用している場合は可能です。 参考までにWinAPIを使用するときの構造体の設定内容を。 http://yokohama.cool.ne.jp/chokuto/urawaza/struct/OPENFILENAME.html
補足
回答ありがとうございます。 APIはまったく使ったことがなく、よくわかりません。 どのDLLを使い、どのようにプログラムを書くのでしょうか?教えていただけると助かります。 少し調べましたがSPIビューアでDeclear宣言を書いてくれるとありますがどのDLLを 選んでよいのかわかりません。
お礼
回答ありがとうございます。 教えてもらったとうりに書くとできました。 しかもAPI関数をたくさんのせてるサイトまで 教えてもらってさっそくブックマークに追加しました。 ファイル名は今回はあきらめます。 教えてもらったサイトでAPIのことを勉強します。 ありがとうございました。