выберите несколько файлов в CFileDialog

Я видел, что он работал хорошо, если у Вас была возможность отфильтровать , что потребности, которые будут зарегистрированы и , когда это должно быть зарегистрировано. Файл журнала (или таблица, такая как он) бесполезен, если Вы не можете найти то, что Вы ищете, или содержит ненужную информацию.

5
задан Werner Henze 24 April 2013 в 15:12
поделиться

2 ответа

Итак, в конструкторе 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; 
}
10
ответ дан 18 December 2019 в 13:17
поделиться

You should pass the OFN_ALLOWMULTISELECT flag in OpenFileName structure to allow the multi selection.

1
ответ дан 18 December 2019 в 13:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: