我已经实现了一个带有组合框的文件选择器。我想将选定的文件名写入日志。问题是当我从原始目录中选择一个文件时它运行良好,但是当我从另一个目录中选择一个文件时它就不起作用了。有人可以帮忙吗?这是文件选择器的代码,它在一个对话框中。
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;
}
这是初始化组合:
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);
}
最后这是我将文件名写入文件的地方。
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);
}
}
提前致谢。