GetOpenFileName関数、ファイル選択ダイアログのファイル名フィールド内の文字数を増やします

StackOverflow https://stackoverflow.com/questions/361350

質問

私たちのアプリは、

(この質問ものCFileDialogなどを...使用して人々に適用されます)複数のファイルがGetOpenFileNameの機能によって示されるファイル選択ダイアログで選択することができます

(259マジックナンバーのようです - なぜわからない)ファイル名フィールドに入力できる文字数に制限があるように見える。

私たちは OPENFILENAME の構造:

lpstrFile - 4Kバイトのサイズの私たち自身のバッファをポイントし、 nMaxFile - (私たちはANSIをコンパイルするlpstrFileの大きさに設定されているので、これは効果的に4000である

しかし、これらの値は、ダイアログのファイル名フィールドの入力幅を増加させないように見えます。

私がコントロールにEM_SETLIMITTEXTメッセージを送ることを実験しようとしてますが、誰にも解決策を持っているかどうかを知りたいと思っています。

EDITは - 自分自身にこれを解決:<のhref = "https://stackoverflow.com/questions/361350/increase-number-of-characters-in-filename-field-of-getopenfilename-file-selecti#394443" >私は自分の答えを受け入れることができないが、ここでそれは後世のためにあるのソリューション。その将来サーチャーがトップでそれを見つけるだろうか、私の解決策をアップ国防省気軽に

- 誰がよりよい解決策を持っている場合は、それを投稿してください。
役に立ちましたか?

解決

は、(少なくとも私の開発環境での)エディットコントロールは、コンボボックスなので、EM_SETLIMITTEXTが適切でないことが判明します。

その代わり、私は、ファイルを開くダイアログの親にGetDlgCtrlを使用して、コンボボックスを突き止め(私はOnInitDialogハンドラでこれを行う)、その後、CComboBox*制限を設定するLimitText()を呼び出すために、それをキャスト。

このもCB_LIMITTEXTで作業していないあなたの人々のための制御にCFileDialogメッセージを送信することにより行うことができます。ここでの適切な値は、ほとんどの場合に渡されるOPENFIILENAME.nMaxFile値である。

他のヒント

私はこれをバイパスすることができないハードリミットであると考えています。それは問題でなければならない唯一の時間は制限が最大ファイル名の長さのために十分であるので、あなたは、複数のファイルを選択したいときです。

私は、フォルダ内のすべてのファイルを開くために、これらのダイアログに「すべてのファイル」ボタンを追加しました。それは私が見つけた唯一の回避策です。

scroll top