Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Cfiledialog: Kann nicht mehr als 40 Dateien auswählen ??

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
12.02.2003, 18:35 Uhr
~Micha
Gast


Hallo Forumsteilnehmer,

beim Auswählen der Dateien kann ich max. in einem Zug 20-25 Dateien Auswählen. Wenn ich aber mehrere Dateien ca. 40-50 Auswählen möchte dann funktioniert es nicht die Funktion (if(dlg.DoModal()==IDOK)) liefert nicht IDOK und so wird nichts eingetragen. Laß ich die if- Abfrage weg wird wieder nichts in der Liste eingetragen.
Wer weiß warum das so ist, habe ich zu gering Dimensioniert, Habe ich einen Variablentypen falsch ausgewählt ??
Danke im Voraus.

Es folgt der Quellcode:

void CPointsRDlg::OnBselectSdatei()
{
// TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen

// Dialog zum auswählen der Dateien starten. Dateien in der Listbox eintragen
CFileDialog dlg(TRUE,".rhd","*.rhd;*.*",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT,NULL,NULL);

POSITION pos;
CString pfad_dateiname;
int stat_result;
struct _stat buf;
long Anzahl;

if(dlg.DoModal()==IDOK)
{
pos = dlg.GetStartPosition();
while(pos !=NULL)
{
pfad_dateiname = dlg.GetNextPathName(pos);

stat_result = _stat( pfad_dateiname, &buf );

if ( (buf.st_size % PIDSY_FORMAT_BYTES) == 0)
{
// Existiert der String in der Liste nicht nochmals einfügen.
if ((m_cList1.FindString(-1,pfad_dateiname)) == LB_ERR)
{ m_cList1.AddString(pfad_dateiname); }
Anzahl = buf.st_size / FORMAT_BYTES;
ALL_Anzahl += Anzahl;
sprintf(HilfString,"Total Points\n%d",ALL_Anzahl);
SetDlgItemText(IDC_SUM_BN, HilfString);
}
else
{ sprintf(HilfString,"File \"%s\" is inconsistent and cannot added to the list",pfad_dateiname);
MessageBox ( HilfString , MELDUNG004) ;
}
}
}
// Anzahl der Listbox Anzeigen
char anzahl[10] = "";
sprintf(anzahl,"%d",m_cList1.GetCount() );
SetDlgItemText(IDC_ANZAHL_DATEIEN, anzahl);
AnzahlDateien = atoi(anzahl);
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.02.2003, 16:09 Uhr
~Micha
Gast


Für diejenigen die es noch interessiert hier die Lösung die ich gefunden habe:

Mann muss mehr Speicher bereitstellen und die Struktur m_ofn mit dem nötigsten zu versorgen,
wichtig hierbei m_ofn.lpstrFile für den Buffer, in dem die Dateien abgelegt werden sollen,
damit sie später von GetStartPosition, GetNextPathName abgeholt werden können,
außerdem ist das Setzen von m_ofn.nMaxFile nötig.

Hier folgt der Code:

CFileDialog dlg;
TCHAR buf[16000] = _T("");
dlg.m_ofn.lpstrFile = buf;
dlg.m_ofn.nMaxFile = 16000;
if(dlg.DoModal()....
...
...
...
...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: