J'ai implémenté un sélecteur de fichier avec une liste déroulante. Je veux écrire le nom de fichier sélectionné dans un journal. Le problème est que lorsque je sélectionne un fichier du répertoire d'origine, cela fonctionne bien mais quand je choisis un fichier d'un autre répertoire, cela ne fonctionne pas. Quelqu'un peut-il aider avec ça? Voici le code du sélecteur de fichier, il est dans une boîte de dialogue.Problème avec les répertoires et le sélecteur de fichier (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;
}
C'est 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);
}
et enfin c'est là où j'écris le nom du fichier dans un fichier.
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);
}
}
Merci d'avance.