FC2ブログ

MFCのCFileDialogで複数のファイルを選択

MFCのCFileDialogで複数のファイルを選択しようとして
なぜか少ないファイルしか選択できないという現象になりました。

原因は、CFileDialogのm_ofnの持つバッファが少ないために、
たくさん選択するとエラーになってしまうというものでした。
コードとしては

CFileDialog dlg(TRUE, NULL, NULL,
OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT | OFN_HIDEREADONLY,
_T("すべてのファイル(*.*)|*.*||"));
dlg.m_ofn.nMaxFile = 1024*1024;
char *szFileNameBuffer = (char*)calloc(dlg.m_ofn.nMaxFile, 1);
dlg.m_ofn.lpstrFile = szFileNameBuffer;
if(dlg.DoModal() == IDOK)
{
POSITION pos = dlg.GetStartPosition();
while(pos)
{
AfxMessageBox(dlg.GetNextPathName(pos));
}
}
free(szFileNameBuffer);

のような感じにすればいいようです。

でも、普通はCFileDialogのdlg.DoModal()のなかで、足りなければ
内部で増やして返すような仕組みでできないもんですかね。
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

chattera.net

Author:chattera.net
フリーでソフト開発の仕事をしています。
自作したこのチャットシステムは、何か世の中に役に立つこともあるかと思いますので、お呼びがかかるとうれしいですね。

連絡先は chatteranet@gmail.com です。

また、ソフト開発関連のお誘いもうけたまわっております。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR