CFileDialog
クラスを使用して、長いパスのディレクトリに複数のファイルを配置します。 1つまたは2つのファイルだけを選択しても問題ありません。 3つのファイルを同時に選択すると、3つ目のファイルパスの一部だけが返されます。 (おそらく512文字に制限されているように見えます)どうすれば解決できますか?ファイルパスが長いときにCFileDialog :: GetNextPathNameが機能しないのはなぜですか?
答えて
MFCはデフォルトのサイズが_MAX_PATH
のバッファを使用しているため、その動作が確認されています。 にはCFileDialog::CFileDialog
の実装があり、m_ofn.lpstrFile
とm_ofn.nMaxFile
が設定されています。
必要に応じて、より大きなバッファを指定することができます。 DoModal
を呼び出す前に、CFileDialog::m_pOFN
のメンバーにアクセスして、CFileDialog
が使用するOPENFILENAME
へのポインタを取得し、直接更新するか、CFileDialog::GetOFN
を呼び出して構造体への参照を取得し、更新してください。
あなたは、これが役に立つでしょういずれかの方法:たとえば、あなたがサポートするファイルの最大数を決定
CFileDialog dialog(...);
dialog.DoModal();
:あなたのコードは次のようになりますと仮定するとhttp://msdn.microsoft.com/en-US/library/ms646839(v=vs.80).aspx
この問題を回避するには、[Common Item Dialogs](http://msdn.microsoft.com/en-US/library/bb776913.aspx)の使用を検討してください。代わりに。 'GetOpenFileName' APIはVistaのリリースで廃止されましたが、従来のアプリケーションではまだサポートされています。 –
ありがとうございます。あなたの説明とリンクも私のために働いた。 ;) – Javid
:
#define MAX_FILE_NAMES 256
はDoModal
を呼び出す前にこれを追加します。
CString data;
dialog.m_pOFN->nMaxFile = (MAX_FILE_NAMES*(MAX_PATH+1))+1;
dialog.m_pOFN->lpstrFile = data.GetBuffer((MAX_FILE_NAMES*(MAX_PATH+1))+1);
をDoModal
を呼び出した後にこれを追加します。
data.ReleaseBuffer();
- 1. 長さがNSStringで機能しないのはなぜですか?
- 2. コールがソート機能として機能しないのはなぜですか?
- 3. 「accepts_nested_attributes_for」が機能していないのはなぜですか?
- 4. ハイチャートコードが機能していないのはなぜですか?
- 5. なぜJSON.stringify()とJSON.parseが機能しないのですか?
- 6. LogonUser(...)がドメインアカウントで機能しないのはなぜですか?
- 7. マージンがポジションで機能しないのはなぜですか?
- 8. Safefilenamesでメディアソースが機能しないのはなぜですか?
- 9. IEでオーバーレイが機能しないのはなぜですか?
- 10. LaravelでDateTime()が機能しないのはなぜですか?
- 11. モバイルでメディアクエリが機能しないのはなぜですか?
- 12. PhoneGapでリンクが機能しないのはなぜですか?
- 13. センターアラインメントがCSSで機能しないのはなぜですか?
- 14. ボーダープロパティがリストアイテムで機能しないのはなぜですか?
- 15. アプリでルーティングが機能しないのはなぜですか?
- 16. IE7でフォントサイズが機能しないのはなぜですか?
- 17. スクリプトでdbms_lob.fragment_insertが機能しないのはなぜですか?
- 18. スレッドでガーベジコレクションが機能しないのはなぜですか?
- 19. フィールドセットがWordPressで機能しないのはなぜですか?
- 20. スクリプトがチェックボックスで機能しないのはなぜですか?
- 21. TryではなぜOptionTが機能しないのですか?
- 22. ルートアニメーションがAngular2で機能しないのはなぜですか?
- 23. codeigniterでorder_by()が機能しないのはなぜですか?
- 24. レイアウトでコードが機能しないのはなぜですか?
- 25. WordPressでリンクが機能しないのはなぜですか?
- 26. ボタンがリストにあるときにListViewの長いクリックが機能しない
- 27. このセレクタが機能しないのはなぜですか?
- 28. インターセプタのonLoad()が機能しないのはなぜですか?
- 29. サービスワーカーのオフラインモードが機能しないのはなぜですか
- 30. popup.jsのスクリプトが機能しないのはなぜですか?
それはウィンドウの 'MAX_PATH'としなければならないのか? – bames53
デフォルトでは、サイズが '_MAX_PATH'のバッファを使用するMFCと関係があります。オーバーライドすることができます。 –