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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2012, 12:05   #1
feniksss
 
Регистрация: 07.10.2012
Сообщений: 8
По умолчанию Программа просмотра текстовых файлов (C++)

Пожалуйста, помогите сделать программу просмотра текстовых файлов на WIN 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 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа просмотра текстовых файлов feniksss Помощь студентам 8 07.10.2012 23:09
Программа, удаляющая историю просмотра всех файлов Nadi55 Помощь студентам 2 26.07.2011 06:01
Программа просмотра PCX файлов Денис999 Помощь студентам 0 29.11.2010 20:53
Программа просмотра PCX-файлов Yana_ Помощь студентам 4 28.11.2010 00:34
Программа просмотра файлов в директории asale Microsoft Office Excel 4 06.01.2009 13:53