Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 10.10.2012, 11:42   #1
feniksss
 
Регистрация: 07.10.2012
Сообщений: 8
По умолчанию Организация чтения/записи файла в библиотеке API-функций.

Код:
#include <commdlg.h>

const DWORD MaxLength = 0x7fff;
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	PAINTSTRUCT ps;
	HDC hdc;
	static THAR; name[256] = _T("");;
	static OPENFILENAME file;
	DWORD result;
	static HANDLE hFile;
	static char text[MaxLength];
	static int sx, sy;
	static DWORD nCharRead;
	RECT rt;
	switch (message)
	{
	case WM_CREATE:
		file.lStructSize = sizeof(OPENFILENAME);
		file.hInstance = hInst;
		file.lpsrtFilter = name;
		file.nMaxFile = 256;
		file.lpstrInitialDir = _T(".\\");
		file.lpstrDefExt = _T("txt");
		break;
	case WM_SIZE:
		sx = LOWORD(lParam);
		sy = HIWORD(lParam);
		break;
	case WM_COMMAND:
		switch (LOWORD(wParam))
		{
		case ID_FILE_NEW:
			nCharRead = 0;
			InvalidateRect (hWnd, NULL, TRUE);
			break;
		case ID_FILE_OPEN:
			file.lpstrTitle = _T("Открыть файл для чтения");
			file.Flags = OFN_HIDEREADONLY;
			if (GetOpenFileName(&file)) return 1;
			hFile = CreateFile(name, GENERIC_READ,  0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
			ReadFile(hFile, text, MaxLength, &nCharRead, NULL);
			CloseHandle(hFile);
			if (nCharRead == MaxLength)
			{
				MessageBox(hWnd, _T("Слишком большой файл")), _T("Неудачное открытие файла"), MB_YESNO | MB_ICONHAND;
				return 0;
			}
			InvalidateRect(hWnd, NULL, TRUE);
			break;
		case ID_FILE_SAVE:
			file.lpstrTitle = _T("Открыть файл для записи");
			file.Flags = OFN_NOTESTFILECREATE;
			if (!GetSaveFileName(&file)) return 1;
			hFile = CreateFile(name, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
			WriteFile(hFile, text, nCharRead, &result, NULL);
			CloseHandle(hFile);
			break;
		case IDM_EXIT: DestroyWindow(hWnd); break;
		default: return DefWindowProc(hWnd, message, wParam, lParam);
		}
		break;
	case WM_PAINT:
		hdc = BeginPaint(hWnd, &ps);
		SetRect(&rt, 0, 0, sx, sy);
		DrawTextA(hdc, text, nCharRead, &rt, DT_LEFT);
		EndPaint (hWnd, &ps);
		break;
	case WM_DESTROY: PostQuitMessage(0); break;
	default: return DefWindowProc(hWnd, message, wParam, lParam);
	}
	return 0;
}
Делал по примеру из книги, выдало кучу ошибок. Что мог своими силами - исправил, а дальше по-моему больше сам себя запутал. Помогите исправить ошибки в функции.
feniksss вне форума
Старый 10.10.2012, 14:24   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

кросспостинг является нарушением правил
p51x вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать программу записи и чтения типизтрованного файла типа стринг? Richik123 Паскаль, Turbo Pascal, PascalABC.NET 10 17.04.2012 20:30
Алгоритм записи чтения нетипизированого файла sysop999 Паскаль, Turbo Pascal, PascalABC.NET 3 16.04.2012 19:59
С++. Кеширование чтения\записи файла Vinny Помощь студентам 1 03.06.2009 00:43