Lendo alguns dos códigos-fonte que eu criei com estas linhas
for (UINT iFile = 0; iFile < nFiles; iFile++) {
CString fn;
fn.ReleaseBuffer(::DragQueryFile(hDrop, iFile, fn.GetBuffer(MAX_PATH), MAX_PATH));
slFiles.AddTail(fn);
}
MAX_PATH se é da API padrão do Windows e seu limite é de 260 caracteres, então esse é o limite para arrastar e soltar, a menos que você o modifique. A partir do docs :
In the Windows API (with some exceptions discussed in the following paragraphs), the maximum length for a path is MAX_PATH, which is defined as 260 characters. A local path is structured in the following order: drive letter, colon, backslash, name components separated by backslashes, and a terminating null character.