Поискал в старых своих исходниках, немного подправил, не судите строго код работает поныне.
Для задачи надо подправить и дописать определения. Вот код:
Код | #include <windows.h> #include <commdlg.h> #include <stdlib.h> #include <stdio.h> #include <string.h> // #include "твой файл объявлений.h" // В нем объявлены как минимум /* char szFileName[_MAX_PATH]; char szTitleName[_MAX_FNAME + _MAX_EXT];
void PopFileInitialize(HWND, int); BOOL PopFileOpenDlg(HWND, PSTR, PSTR); BOOL PopFileSaveDlg(HWND, PSTR, PSTR); BOOL PopFileRead(HWND, PSTR); BOOL MakeMTxtFile(); BOOL PopFileSave(PSTR, PSTR); */
//... // продолжение кода static OPENFILENAME ofn; // структура для открытия файла // Фильтр для открытия файла static char szFilter[] ="Все файлы(*.*)\0*.*\0\0";
//...
void PopFileInitialize(HWND hwnd, int mode) { // Инициализируем структуру для открытия файла ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = hwnd; ofn.hInstance = NULL; ofn.lpstrFilter = szFilter; ofn.lpstrCustomFilter = NULL; ofn.nMaxCustFilter = 0; ofn.nFilterIndex = 0; ofn.lpstrFile = NULL; ofn.nMaxFile = _MAX_PATH; ofn.lpstrFileTitle = NULL; ofn.nMaxFileTitle = _MAX_FNAME + _MAX_EXT; if(strlen(szFileName) == 0) // здесь хранится имя файла для открытия ofn.lpstrInitialDir = "C:\\"; else ofn.lpstrInitialDir = szFileName; // Заголовок окна для открытия файла ofn.lpstrTitle = "Выберите файл списка для обработки";//NULL; ofn.Flags = 0; ofn.nFileOffset = 0; ofn.nFileExtension = 0; ofn.lpstrDefExt = "txt"; ofn.lCustData = 0L; ofn.lpfnHook = NULL; ofn.lpTemplateName = NULL; return; }
//...
// здесь запускаем диалог открытия BOOL PopFileOpenDlg(HWND hwnd, PSTR pstrFileName, PSTR pstrTitleName) { ofn.hwndOwner = hwnd; ofn.lpstrFile = pstrFileName; ofn.lpstrFileTitle = pstrTitleName; ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT; return GetOpenFileName(&ofn); // запуск диалога для открытия файла } // здесь запускаем диалог сохранения BOOL PopFileSaveDlg(HWND hwnd, PSTR pstrFileName, PSTR pstrTitleName) { ofn.hwndOwner = hwnd; ofn.lpstrFile = pstrFileName; ofn.lpstrFileTitle = pstrTitleName; ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT; return GetSaveFileName(&ofn); // запуск диалога для открытия файла } // получим длину загружаемого файла static long PopFileLength(FILE *file) { int iCurrentPos, iFileLength;
iCurrentPos = ftell(file); fseek(file, 0, SEEK_END); iFileLength = ftell(file); fseek(file, iCurrentPos, SEEK_SET); return iFileLength; } // почитаем файл BOOL PopFileRead(HWND hwndEdit, PSTR pstrFileName) { FILE *file; long iLength, size; PSTR pstrBuffer; if(NULL == (file = fopen(pstrFileName, "rb"))) return FALSE; iLength = PopFileLength(file); if(NULL == (pstrBuffer = (PSTR)malloc(iLength))) { fclose(file); return FALSE; } size = fread(pstrBuffer, 1, iLength, file); fclose(file); free(pstrBuffer); return TRUE; } // сохраним файл BOOL PopFileSave(PSTR pIFileName, PSTR pOFileName) { FILE *file_i; FILE *file_o; long iLength; long oLength; PSTR pIBuffer; PSTR pOBuffer;
if(NULL == (file_i = fopen(pIFileName, "rb"))) return FALSE; if(NULL == (file_o = fopen(pOFileName, "wb"))) return FALSE; iLength = PopFileLength(file_i); if(NULL == (pIBuffer = (PSTR)malloc(iLength))) { fclose(file_i); return FALSE; } if(NULL == (pOBuffer = (PSTR)malloc((iLength) * 10))) // размер выходного файла ОООчень большой { fclose(file_o); return FALSE; } fread(pIBuffer, 1, iLength, file_i); fclose(file_i); oLength = 0; /**/ // обработка входного файла и копирование данных в выходной файл /**/ fwrite(pOBuffer, 1, oLength, file_o); // запись результата fclose(file_o); free(pIBuffer); free(pOBuffer); return TRUE; }
|
|