Задача наверное простая, как вернуть название выбранного файла?
| Код |
namespace e { char *filename; }
// ... case IDM_SAVE_AS: e::filename = NULL; FormSaveAsFile(hwnd, e::filename); MessageBox(hwnd, e::filename, "Message", MB_OK); break; // ...
void FormSaveAsFile(HWND hwnd, char *fname) { OPENFILENAME ofn; char filename[MAX_PATH]; filename[0] = 0; memset(&ofn, 0, sizeof(OPENFILENAME)); ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = hwnd; ofn.lpstrFilter = "Text files (*.txt)\0*.txt\0"; ofn.lpstrFile = filename; ofn.nMaxFile = sizeof(filename); ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; ofn.lpstrDefExt = "txt"; if (GetSaveFileName(&ofn)) { strcpy(fname, ofn.lpstrFile); MessageBox(hwnd, "SAVE_FILE OK", "Message", MB_OK); } else { strcpy(fname, ofn.lpstrFile); MessageBox(hwnd, "SAVE_FILE Cancel", "Message", MB_OK); } }
|
Добавлено @ 15:51 В этой строке ошибка при выполнении программы
| Код | strcpy(fname, ofn.lpstrFile);
|
Unhandled exception at 0x004021a2 in Scheme.exe: 0xC0000005: Access violation writing location 0x00000000. |