• ベストアンサー

フォルダ指定

VC++6.0のMFCを使ってます。 FileDialogクラスで 例えば CFileDialog a(TRUE,"","*.*"); とするとコンピューター上のファイルを選択できます。 しかしフォルダが選択できません。このような参照からフォルダを 選択したいのですが何か方法ありますでしょうか

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

MFC6.0では フォルダーを選択するダイアログは用意されていません 新しいComDlg32.DLLで公開されている SHBrowseForFolderを使ってみましょう http://msdn.microsoft.com/ja-jp/library/cc403767(VS.71).aspx#mfcfaqwindow にサンプルがあります 『Choose Fileダイアログの代わりにChoose Directoryダイアログを表示する方法は?』 の部分にあるので参照してみてください この中で『afxData.bWin4』は MFCのSRC(ソース)をインストールした際に展開される VC++6.0インストールホルダーの MFC\SRC\afximpl.h をフルパスで #includeディレクティブに指示します 取得したパスの処理を 『DoingSomethingUseful(pszBuffer);』 という関数で処理するように指示していますので、この部分をご自分の処理にあわせて変更しましょう

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

SHBrowseForFolderについて調べてみましょう

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • CFileDialogでフォルダだけを選択させる

     いままで組込みを中心にC/C++で業務を行ってきました。  今回、Windows7 SP1上でVC++ 2008のMFC環境で動作するツールを作成することになり  仕様としてCFileDialogなどのファイル選択画面でファイルではなく、フォルダのみを選択させるようにすることができないかと質問されましたが可能でしょうか?  あるいは別の方法があるでしょうか?

  • ファイルダイアログでのファイルの複数選択について

    VC++6.0でプログラムをしているのですが、CFileDialogクラスのコモンダイアログでファイルを開くときに、ファイルを複数選択できるようにしています。 しかし、試してみると14枚までしか開くことができません。プログラムは以下のとおりです。 CFileDialog dlg(TRUE, "bmp", "*.bmp", OFN_ALLOWMULTISELECT); if (dlg.DoModal() != IDOK) { return; } ファイルを15枚以上選択するとif文の中のreturnに入って関数を抜けてしまいます。原因が何なのか分かる方教えてください。

  • ExcelのChDirで二つのフォルダを指定しても一つめしか認識しない

    ExcelのChDirで二つのフォルダを指定しても一つめしか認識しない いつもながらExcelのマクロについての質問です。 ChDir "C:\A" Dim 開く As FileDialog Set 開く = Application.FileDialog(msoFileDialogOpen) If 開く.Show = -1 Then   開く.Execute End If Set 開く = Nothing ChDir "C:\B" Dim 保存 As FileDialog Set 保存 = Application.FileDialog(msoFileDialogSaveAs) If 保存.Show = -1 Then   保存.Execute End If Set 保存 = Nothing これで"C:\A"のフォルダにあるファイルを一つ選び そのファイルをそのまま "C:\B"フォルダにコピーしようとしても コピー先としては 同じ"C:\A"フォルダが表示されてしまいます。 コピー先に "C:\B"フォルダが表示されるようにするためには どうしたらよいのでしょう。 Excel2002およびExcel2003でやってみたのですが 同じ結果でした。 以上、よろしくお願いいたします。

  • CFileDialogの最初のディレクトリ設定

    Visual C++のMFCです。 CFileDialogを使ってファイルを指定して開くと、カレントディレクトリの位置が変化して、次回、CFileDialogで開くときは、その変化したあとの最新のディレクトリが開きますね。 このカレントディレクトリは、GetCurrentDirectory で、調べることができました。 しかし、特定のディレクトリ(フォルダ)をCFileDialogで開きたいとき、SetCurrentDirectory で設定しようとしても、これでは、CFileDialogで開くフォルダ位置を変更できません。 CFileDialogで開きたいフォルダ位置を変更するコマンドを教えてください。 DoModal()をする以前に設定したいので、CFileDialogクラスとは別の関数、できれば、SDKの関数等であれば、いいです。

  • VBAでユーザーにフォルダを指定させたい

     Win2000でEXCEL97を使ってます。  ExcelVBAでダイアログボックスなどによりユーザーにフォルダを指定させたいのです。  ファイルを指定させるには、GetOpenFileNameメソッドを使えば出来ることは分かったのですが、フォルダを指定させるような方法が分からないのです。  本で読んだところでは、Excel2002ではFileDialogプロパティで可能なようなのですが、Excel97では出来ないようで…  97でも可能な方法があればご教授下さい。  よろしくお願いします。

  • 起動時のフォルダー

    VC++ ver6.0 MFC でプログラミングしています。  デバッグ時に 起動させると、プロジェクトファイルのあるフォルダー から起動しますが、  他のコンピュータに移して テストしたところ、 カレントフォルダーが マイドキュメントになっています。  exe ファイルのあるフォルダーをカレントフォルダーにして起動するようにできますか?  あと、 ビジュアルスタジオの エンタープライズエディション には、インストーラーもついていたような気がしますが、 使用方法が説明してあるURL があったら 教えてください。  よろしくお願いいたします。

  • ファイル名指定で、あちこちのフォルダのファイルを選択したい

    メールに画像を添付する時に、参照からその画像のフォルダを選んで、その中の画像ファイルを選択しますが、もっとダイレクトに画像ファイル名から選ぶことは出来ないのでしょうか?100人くらいの方に、1人づつ違う画像を添付して送りたいのですが、その画像があちこちにあり、また そのあちこちのフォルダのサブのサブにあったりします。なお、そのフォルダは移動したり、コピーすることは出来ません。画像のファイル名はわかっていますので、 参照→ファイル名指定→選択→添付 という感じの作業がしたいいのですが・・・。どなたかいい方法を教えていただけませんか?よろしくお願いします。

  • フォルダ参照ではなくファイルを指定したい。

    フォルダの参照ダイアログボックスを使用して ファイルを選択できるようにしています。 プログラムでcsv形式で保存し、そのcsv形式ファイルを指定して開くという動作を目的としています。 そのファイル選択を固定でなく可変で選択したいと思っています。 Dim ShellApp As Object Dim oFolder As Object Set ShellApp = CreateObject("Shell.Application") Set oFolder = ShellApp.BrowseForFolder(0, "ファイル選択", &H4000,"C:\test") msgbox(oFolder) このような感じで、フォルダのみではなくファイルを指定することに成功しました。 しかし、このフォルダ参照ダイアログが表示されたときに、何も選択せずに キャンセルボタンをクリックするとエラーが出て止まってしまいます。 目的とする動作はできてはいるのですが、キャンセルするとエラーになるので、この原因がわからず困っています。 キャンセルボタンに関することを記述する必要があるのでしょうか? また、この他にファイルを指定するのに適した方法がありましたら教えてください。 参照するフォルダを指定しているのでパスの取得は必要ありません。 ファイルが選択できたらOKです。 フォルダのパス取得のプログラムはよくサンプルを見かけるのですが、 ファイル選択のサンプルはあまり見かけないです(-_-;) また、この方法ではC:\と絶対パスで指定していますが、exeファイルが存在する場所からの相対パスでの指定はできないのでしょうか? csvで保存する時は"./test/test.csv"などと記述して書き込みできていたのですが、 このようなパスを書くとエラーとなりファイルを見つけられないといわれてしまいます。

  • 指定ファイルのみ読み込んで表示する

    現在、以下のコードで指定フォルダー内の全ファイルをA2以下に読み込んでいます。 これでは、処理する必要のないファイルまで読み込まれてしまいます。 (そのため、現在は処理必要ないファイルは手動でA列から削除しています。) Set dlg = Application.FileDialog(msoFileDialogFolderPicker) を Set dlg = Application.FileDialog(msoFileDialogFilePicker) に変更すると ユーザーがファイルを処理が必要なファイルのみ選択できそうですが その場合、どのように変更すれば良いですか ? ’-------------------------------------------------------------- Option Explicit Public dlg As FileDialog Public fol_path As String 'フォルダのフルパス Sub フォルダを指定してファイル名一覧を作成する() Dim f_name As String 'ファイル名 Dim i As Long 'ファイル名を出力する行番号 '書き出しセル初期化 Range("A2:B100").ClearContents 'フォルダを指定するモードでFileDialogを表示 Set dlg = Application.FileDialog(msoFileDialogFolderPicker) '読み込み初期フォルダーの指定 dlg.InitialFileName = "C:\Users\Nubo\Desktop\Temp\" If dlg.Show = False Then MsgBox "処理はキャンセルされました。" Exit Sub Else End If fol_path = dlg.SelectedItems(1) '指定されたフォルダのフルパスを変数に格納 f_name = Dir(fol_path & "\*") 'Dir関数を使って、指定されたフォルダ内の一つ目のファイル名を取得 If f_name = "" Then MsgBox fol_path & " にはファイルが存在しません。" Exit Sub End If 'シートに書き出す Range("C1").Value = fol_path & "のファイル一覧" Range("A1").Value = "現在のファイル名" '見出し行の表示(太字、フォントサイズ 12) With Range("A1:B1") .Font.Bold = True .Font.Size = 12 End With 'A2セルから下にファイル名を書き出し i = 2 Do Until f_name = "" Cells(i, "A").Value = f_name i = i + 1 '次のファイル名を取得 f_name = Dir Loop 'セルの内容に合わせて列幅を自動調整する Range("A:D").EntireColumn.AutoFit MsgBox Sheets("DATA").Name & "にファイル名一覧を作成しました。" & Chr(13) & _ "変名に必要ないファイル名があれば削除してください。" End Sub ’----------------------------------- Office 2021,Windows_11

  • ドライブを開いたときのフォルダ指定

    Windowsで最初に一番よく使うフォルダを開くようにしいたいのですが、どのような設定をすればよいでしょうか?たとえば、データの入っているフォルダAがドライブBに入っている場合、 コンピュータ→ドライブB→フォルダAではなくて、コンピュータ→フォルダAの順で開くことはできますか?「最近使った項目」をつかわずにこの順で開きたいのですが。 よろしくお願いします。

このQ&Aのポイント
  • OUTLOOK2016の「ESET」タブ内の文字だけが表示されません。他のアドインタブは正常に表示されています。
  • ESETタブ内の文字が表示されない現象が発生しています。OUTLOOK2016でのみ発生し、他のアドインタブは正常に表示されています。
  • OUTLOOK2016のESETタブ内で文字が表示されず、問題を解決する方法をご存じの方はいますか?
回答を見る