FindFirstFile
-
Hi,
Weiß jemand, warum folgendes Programm nicht funktioniert ?
case ID_START: char buf[265]; GetWindowText(GetDlgItem(hWnd, EFile), buf, 60); WIN32_FIND_DATA files; if(FindFirstFile(buf, &files) == INVALID_HANDLE_VALUE) { MessageBox(hWnd, "File not found", "File not found!", MB_OK); return false; } break;Ich bekomme immd die ausgabe "File not found", auch wenn die datei die ich öffnen will existiert. Laut debugger ist in buf auch vor dem Funktionsaufruf von FindFirstFile der richtige Dateiname.
Danke,
Lusches
-
Problem gelöst:
c:\blah\blub
=>
C:\\blah\\blub
-
Hä? Das kann nicht der Grund sein... das gilt nur für "Sting-Literals"...
-
Und FindClose() nicht vergessen...
-
Auf jeden Fall funktioniert es jetzt. Vieleicht habe ich vorher den String falsch eingegeben.
Wie dem auch sei, es gibt direkt schon ein neues Problem.
Meine ListBox ist gefüllt und muss wieder gelöscht werden:
case ID_DELETE: count = SendMessage(GetDlgItem(hWnd, LOUT), LB_GETCOUNT, NULL, NULL); for(int i = 0;i < count;i++) { SendMessage(GetDlgItem(hWnd, LOUT), LB_DELETESTRING, i, NULL); } break;Komischerweise wird immer nur ein Teil der Einträge gelöscht und ich muss bei ~800 einträgen ungefähr 10 mal auf ID_DELETE drücken, bis die ListBox komplett gelöscht ist.
Woran liegts ?

Danke,
Lusches
-
Lass die Schleife rückwärts laufen. Die Bedingung im Schleifenkopf wird nur einmal geprüft. Nach dem Löschen, sind aber weniger Items vorhanden als ursprünglich. Oder nutze direkt die Nachricht zum Leeren der Listbox. Da musst du mal im SDK nachgucken, wie die lautet.
-
Anstelle:
SendMessage(GetDlgItem(hWnd, LOUT), LB_DELETESTRING, i, NULL);=>
SendMessage(GetDlgItem(hWnd, LOUT), LB_DELETESTRING, 0, NULL);Das einfachste ist aber:
SendMessage(GetDlgItem(hWnd, LOUT), LB_RESETCONTENT, 0, NULL);Das geht dann ganz ohne Schleife...