Ich habe einen Dateiwähler mit einer Combobox implementiert. Ich möchte den ausgewählten Dateinamen in ein Protokoll schreiben. Das Problem ist, dass wenn ich eine Datei aus dem ursprünglichen Verzeichnis auswähle, es gut geht, aber wenn ich eine Datei aus einem anderen Verzeichnis wähle, wird es nicht funktionieren. Kann mir jemand helfen? Hier ist der Code für den Dateiwähler, er befindet sich in einem Dialog.Problem mit Verzeichnissen und Dateiauswahl (VC++ 2008)
BOOL CALLBACK BateriaFaxDlg(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam){
char descripcion[100]="";
char archivo[100]="";
char cad[100];
int i,l;
switch (msg)
{
case WM_INITDIALOG:
InitCombo(hDlg, "*.*");
return TRUE;
break;
case WM_COMMAND:
switch(LOWORD(wParam)) {
case IDOK:
i = SendDlgItemMessage(hDlg, IDC_ARCH2, CB_GETCURSEL, 0, 0);
if(i >= 0) {
SendDlgItemMessage(hDlg, IDC_ARCH2, CB_GETLBTEXT, (WPARAM)i, (LPARAM)archivo);
}
if (!GetDlgItemText(hDlg, IDC_DESCBATER, descripcion , 100)) {
MessageBox(hDlg, "Ambos campos son obligatorios", "ERROR", MB_ICONEXCLAMATION | MB_OK);
break;
}
actualizarBaterias(GetParent(hDlg), "FAX", archivo, descripcion);
EndDialog(hDlg, FALSE);
break;
case IDCANCEL:
EndDialog(hDlg, FALSE);
break;
case IDC_ARCH2:
switch(HIWORD(wParam)) {
case CBN_CLOSEUP:
case CBN_KILLFOCUS:
if(DlgDirSelectComboBoxEx(hDlg, cad, 100, IDC_ARCH2)) {
strcat(cad, "*.*");
InitCombo(hDlg, cad);
}
break;
}
break;
default:
break;
return TRUE;
}
}
return FALSE;
}
Dies ist InitCombo:
void IniciarCombo(HWND hwnd, char* p) {
char path[100];
strcpy(path, p);
DlgDirListComboBox(
hwnd,
path,
IDC_ARCH2,
ID_TITULO,
DDL_DIRECTORY | DDL_DRIVES
);
SendDlgItemMessage(hwnd, IDC_ARCH2, CB_SETCURSEL, 0, 1);
}
und schließlich das ist, wo ich die Dateinamen in eine Datei schreiben.
void actualizarBaterias(HWND hWnd, char *tipo, char *archivo, char *descripcion) {
FILE *fp;
HWND hctrl;
int i;
HFONT hfont;
fp = fopen("conf\\Baterias.conf", "a");
if (fp) {
MessageBox(hWnd, "Actuali","error", MB_ICONEXCLAMATION | MB_OK);
fprintf(fp, "\n%s %s %s", tipo, archivo, descripcion);
fclose(fp);
}
}
Vielen Dank im Voraus.