![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
VC++6 で簡単なプログラムを作成しており、その入力として、ダイアログで任意のフォルダパスをユーザに指定させます。
ここで、Win32 API の GetOpenFilename() は、ユーザにフォルダを指定させることができるでしょうか?
色々組んではみたのですが、上記関数ではどうしてもフォルダの指定ができなかったため、フリーで簡単ライブラリと評判の(?) http://www.fox-toolkit.org/ FOX Toolkit を試してはいます。
一応それなりに FXFileDialog::getOpenDirectory() は動作してくれるのですが、パスの中に日本語があると、返却される文字列がおかしくなります。これはどうも UTF-8 でエンコーディングされているようで、自前で UTF-16 に変換し更に wcstombs() などを使用して Shift_JIS (Windows-31J) に変換したら通るようになったのですが、半角カナはダイアログ内の処理自体が通してくれないようで、ダイアログの「OK」ボタンが押せなくなります。これは何か対処方法があるでしょうか。
そのほか、何かほかに良い方法があったら教えてください。
No.2ベストアンサー
- 回答日時:
★OS は Windows ですよね。
・過去に似たような質問がありました。
・http://oshiete1.goo.ne.jp/qa2711037.html→『ディレクトリを選択するコモンダイアログボックス』
・回答 No.2 にサンプルを載せてあるので参照して下さい。
・それでユーザにフォルダを選択させるには、シェル関数の『SHBrowseForFolder()』を使います。
『GetOpenFilename()』はファイル名の選択ですので、フォルダ名の選択は出来ません。
・『FOX Toolkit』についてはアドバイスできませんので、SHBrowseForFolder() 関数で実現してみたら
よいと思います。これならば『日本語』にも対応していると思います。→確認していませんが…。
・以上。おわり。→参考にして下さい。
参考URL:http://oshiete1.goo.ne.jp/qa2711037.html
すみません、既出でしたか。検索が足りませんでした。
SHBrowseForFolder を使用して半角カナを含めた日本語のパス名も取得することができました。ありがとうございます。
ただ、ちょっと GetOpenFileName() とは見た目が違ってしまうのですね。
No.1
- 回答日時:
一般的には、SHBrowseForFolder()を使います。
使い方は、探せばたくさん出てきます。
http://www.google.com/search?hl=ja&lr=lang_ja&ie …
ただし、このAPIはWin95/98/NTといった古いOSの場合、
IEのバージョンによって使えなかったり、機能が制限されていたりします。
(バージョン5.0以降であれば問題ありません)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Excel(エクセル) 【VBA】ファイルパスに半角スペースが入ると、VBAが動かない 5 2022/08/04 20:52
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Excel(エクセル) 【マクロ】フォルダAからダBへファイルを、ファイルの更新日時の条件で、1つづつ移動するには? 3 2022/08/25 09:56
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- C言語・C++・C# Seleniumで「ファイルを開く」ダイアログボックスのフォルダ指定する方法を教えてください。 1 2022/05/09 07:38
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
ディレクトリを選択するコモンダイアログボックス
C言語・C++・C#
-
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
コンボボックス表示文字列を取得する場合
C言語・C++・C#
-
-
4
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
5
ダイアログの上のテキストボックスの、初期値を設定する方法が分かりません・・・・
C言語・C++・C#
-
6
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
7
ファイル書込みで一行もしくは部分的に上書きする
PHP
-
8
Win32APIでのエディットボックスの文字化け
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excel VBA Dirにて検索したフォ...
-
Windows10でコマンドプロンプト...
-
【マクロ】ファイル名の日付に...
-
Access VBA で フォルダ権限...
-
ファイル名から該当フォルダへ移動
-
エクセル マクロで指定フォル...
-
デスクトップの画像をhtmlに表...
-
API関数(DLL)の呼び出しにお...
-
C ファイル出力で、フォルダが...
-
VBA 最新のフォルダ取得
-
Dreamweaverでイメージを挿入す...
-
MinGWで正規表現(regex.h)がし...
-
フォルダ内のPDFファイル名を変...
-
VBA フォルダ名に特定の文字を...
-
Excelで指定したフォルダに保存...
-
フォルダ選択ダイアログ:ネッ...
-
保存先のフォルダ名を指定した...
-
複数階層のフォルダを一度に作...
-
VBA フォルダの複数選択ができない
-
ファイル名と同名のフォルダを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
VBA 最新のフォルダ取得
-
バッチファイルが保存されてい...
-
ファイル名と同名のフォルダを...
-
【マクロ】ファイル名の日付に...
-
VBA フォルダ名に特定の文字を...
-
デスクトップの画像をhtmlに表...
-
フォルダ内のPDFファイル名を変...
-
ディレクトリ名変更してコピー...
-
多量のファイルをフォルダに自...
-
Excelで指定したフォルダに保存...
-
Access VBA で フォルダ権限...
-
C ファイル出力で、フォルダが...
-
Excelのハイパーリンクについて...
-
あるフォルダーのファイルを違...
-
パス名に2バイト文字(マルチバ...
-
同一フォルダ内の別ブックから...
-
エクセルのマクロについて教え...
-
バッチファイルで指定フォルダ...
-
ExcelのVBAでフォルダ指定がで...
おすすめ情報