Пример кода на странице, на которую вы ссылаетесь, использует это:
DWORD MAXFILE = 2562;
dlg.m_ofn.nMaxFile = MAXFILE;
char* pc = new char[MAXFILE];
Буфер pc
имеет длину 2562 символа, количество открываемых файлов ограничено этим. Пока общая длина всех выбранных имен файлов вместе (включая путь) вписывается в эти 2562 байта, это выполняется успешно, в противном случае это не удается. Таким образом, фактическое число возможных файлов зависит от длины имен файлов, которые вы хотите открыть.
Вы можете определить, был ли буфер маленьким, проверив FNERR_BUFFERTOOSMALL
:
if(CommDlgExtendedError() == FNERR_BUFFERTOOSMALL) {
// the buffer was to small, not all file names did fit into it
}