クラスを使用CFileDialog
して、長いパスを持つディレクトリに配置された複数のファイルを選択します。1 つまたは 2 つのファイルを選択するだけで問題ありません。しかし、同時に 3 つのファイルを選択すると、3 番目のファイル パスの一部しか返されません。(おそらく 512 文字に制限されているようです) どうすれば解決できますか?
質問する
2153 次
2 に答える
5
MFC はサイズの既定のバッファーを使用するため、_MAX_PATH
その動作が見られます。dlgfile.cpp
の実装を見て、設定されているCFileDialog::CFileDialog
ことがわかります。m_ofn.lpstrFile
m_ofn.nMaxFile
必要に応じて、より大きなバッファーを指定できます。呼び出す前にDoModal
、メンバーにアクセスしてが使用CFileDialog::m_pOFN
するポインタを取得して直接更新するか、 を呼び出して構造体への参照を取得して更新することができます。OPENFILENAME
CFileDialog
CFileDialog::GetOFN
いずれにせよ、これは役に立つでしょう: http://msdn.microsoft.com/en-US/library/ms646839(v=vs.80).aspx
于 2013-02-15T21:31:29.610 に答える
0
コードが次のようになっていると仮定します。
CFileDialog dialog(...);
dialog.DoModal();
サポートするファイルの最大数を決定します。次に例を示します。
#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();
于 2016-11-22T17:50:43.997 に答える