Я видел, что он работал хорошо, если у Вас была возможность отфильтровать , что потребности, которые будут зарегистрированы и , когда это должно быть зарегистрировано. Файл журнала (или таблица, такая как он) бесполезен, если Вы не можете найти то, что Вы ищете, или содержит ненужную информацию.
Итак, в конструкторе CFileDialog вы можете установить для параметра dwFlags значение «OFN_ALLOWMULTISELECT». Это самая простая часть: чтобы вернуть несколько имен файлов, вам нужно изменить член m_ofn.lpstrFile в CFileDialog, чтобы он указывал на буфер, который вы выделили. Посмотрите здесь:
http://msdn.microsoft.com/en-us/library/wh5hz49d (VS.80) .aspx
Вот пример его использования, надеюсь, комментариев будет достаточно:
void CMainFrame::OnFileOpen()
{
char strFilter[] = { "Rule Profile (*.txt)|*.txt*||" };
CFileDialog FileDlg(TRUE, "txt", NULL, OFN_ALLOWMULTISELECT, strFilter);
CString str;
int nMaxFiles = 256;
int nBufferSz = nMaxFiles*256 + 1;
FileDlg.GetOFN().lpstrFile = str.GetBuffer(nBufferSz);
if( FileDlg.DoModal() == IDOK )
{
// The resulting string should contain first the file path:
int pos = str.Find(' ', 0);
if ( pos == -1 );
//error here
CString FilePath = str.Left(pos);
// Each file name is seperated by a space (old style dialog), by a NULL character (explorer dialog)
while ( (pos = str.Find(' ', pos)) != -1 )
{ // Do stuff with strings
}
}
else
return;
}
You should pass the OFN_ALLOWMULTISELECT flag in OpenFileName structure to allow the multi selection.