Getopenfilename
Автор Назар Тимішак задал вопрос в разделе Другие языки и технологии
WinApi функции c++ CreateFile ReadFile WriteFile GetOpenFileName GetSaveFileName и получил лучший ответ
Ответ от Преподаватель Информатики[активный]
//Открытие файла void ReadFromFile(HWND hwnd) { OPENFILENAME openFileName; static char PathToFile[255]; HANDLE hFile; DWORD BytesRead; BY_HANDLE_FILE_INFORMATION FileInformation; DWORD SizeFile; openFileName.lStructSize = sizeof(openFileName);//Размер структуры openFileName.hwndOwner = hwnd;//Хэндл родительского окна openFileName.Flags = OFN_HIDEREADONLY;//флаги openFileName.hInstance = hInst;//дескриптор программы openFileName.lpstrFilter = "Текстовый файл (*.txt)\\0*.txt\\0\\0";//фильтр openFileName.lpstrCustomFilter = NULL; openFileName.nMaxCustFilter = 0; openFileName.nFilterIndex = 1; openFileName.lpstrFile = PathToFile;//Куда сохранять выбранное имя openFileName.nMaxFile = 255;//Максимальная длина имени файла openFileName.lpstrFileTitle = NULL; openFileName.lpstrInitialDir = NULL; openFileName.lpstrTitle = "Открыть... ";//Название окна openFileName.lpstrDefExt = "txt";//расширение по умолчанию if(GetOpenFileName(&openFileName))//Выбор файла { hFile = CreateFile(PathToFile, GENERIC_READ, 0,NULL, OPEN_EXISTING,//Открытие файла FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL); if(hFile==INVALID_HANDLE_VALUE) {//Если ошибка - сообщить об этом MessageBox(hwnd, __TEXT("Ошибка открытия файла"), __TEXT("Ошибка! "), MB_OK|MB_ICONSTOP); return; } SizeFile =GetFileSize(hFile,NULL);//Получить размер файла EnterCriticalSection(&cs);//вход в критическую секцию (поскольку работаем с буфером) if(SizeFile+sizeof(TCHAR)>bufsize)//Проферить поместится ли файл в буфер { bufsize=SizeFile+1024;//Если не поместится, расчитать новый размер буфера Buffer=(TCHAR*)HeapReAlloc(GetProcessHeap(),NULL,Buffer,bufsize);//и увеличить его } ZeroMemory(Buffer, bufsize);//Очистка буфера if(!ReadFile(hFile, Buffer, SizeFile*sizeof(TCHAR), &BytesRead, NULL)||(BytesRead!=sizeof(TCHAR)*SizeFile))//Чтение и проверка файла {//В случае ошибки вывести сообщение MessageBox(hwnd, __TEXT("Ошибка чтения файла"), __TEXT("Ошибка! "), MB_OK|MB_ICONSTOP); } CloseHandle(hFile);//Закрыть файл SetWindowText(GetDlgItem(hwnd, IDC_EDITWND), Buffer);//Вывести текст в окно LeaveCriticalSection(&cs);//выход из критической секции } } Остальное не влазит
Как объединить текстовые файлы в один?
Не может. Либо открыть любой текстовый редактор и вставлять в файл один текст за другим, либо
подробнее...