Разработка программы форматирования текстовых файлов
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
D+WS_VISIBLE+WS_VSCROLL+WS_HSCROLL+ES_AUTOHSCROLL+ES_AUTOVSCROLL+ES_MULTILINE+ES_WANTRETURN,0,0,0,0,hwnd,0,NULL,0);(!txtctrl) PostQuitMessage(0);;WM_RBUTTONDOWN:(doit==0)
{
}0;;:DefWindowProc(hwnd, message, wParam, lParam);
}0;
}
//функция обрабатывающая сообщения окна диалога
BOOL CALLBACK Dlg1Func (HWND Dlg1, UINT message, WPARAM wParam, LPARAM lParam)
{ HWND Edt;(message)
{WM_INITDIALOG:
//устанавливаем параметры диалога "по умолчанию"(Dlg1,IDC_EDIT1,"75");(Dlg1,IDC_EDIT2,"0");;WM_DESTROY:WM_CLOSE:(Dlg1);=NULL;;WM_COMMAND:(LOWORD(wParam)==IDOK)
{char te[4];
//получаем указатель на поле ввода диалогового окна
Edt=GetDlgItem(Dlg1,IDC_EDIT1);
//получаем то что введено в поле ввода в виде текста(Edt,te,3);
//преобразуем текст в число=atoi(te);
//получаем число пробелов в начале строки
Edt=GetDlgItem(Dlg1,IDC_EDIT2);
GetWindowText(Edt,te,3);=atoi(te);
if (aftcon>0) {(int d=1; d<aftcon; d++)
{strcat(cppbs," ");}}
//выравнивать ли текст по ширине
Edt=GetDlgItem(Dlg1,IDC_CHECK1);(SendMessage(Edt,BM_GETCHECK,0,0)){alg=1;}else{alg=0;}
//получаем значения элементов управления=GetDlgItem(Dlg1,IDC_CHECK2);
if (SendMessage(Edt,BM_GETCHECK,0,0)){sp=1;}else{sp=0;}
//слева
//12=GetDlgItem(Dlg1,IDC_RADIO2);(SendMessage(Edt,BM_GETCHECK,0,0)){nd=0;}
//12/13=GetDlgItem(Dlg1,IDC_RADIO3);(SendMessage(Edt,BM_GETCHECK,0,0)){nd=1;}
//закрываем диалоговое окно=CreateDialog(NULL,(LPCTSTR) IDD_F, hwnd, Dlg2Func);(Dlg2,SW_SHOW);(Dlg1,0);
};;
}FALSE;
}
//собственно функция выполняющая форматирование
BOOL CALLBACK Dlg2Func (HWND Dlg2, UINT message, WPARAM wParam, LPARAM lParam)
{hu[]="";s[2048]="",stt[2048]=" ",sttt[2048]=" ",re[2048]="";
char ns=13;nsp=/n/r;ns1=10;
char caches[2048];empc[]="";dspase[3]=" ";qwe[]="";rf,fe,sf,wf,st,sv;t[1];long fs=0;long fss=0;long ti=1,to=1;i=0,j=0;(message)
{WM_DESTROY:WM_CLOSE:(Dlg2);=NULL;;
case WM_COMMAND:
//отрабатываем нажатие кнопки оК(LOWORD(wParam)==IDOK)
{ //открываем исходный файл для чтения(s,cppbs);(strlen(buf)<2 || strlen(buf1)<2){MessageBox(NULL,"Прежде чем начинать форматировать нужно определиться с тем, что мы будем форматировать.","Error",MB_OK); EndDialog(Dlg2,0);goto w1;}
//открываем файл с исходным текстом.lStructSize=sizeof(OPENFILENAME);
ofn.hwndOwner=hwnd;.lpstrFile=buf;.nMaxFile=260;.Flags=OFN_FILEMUSTEXIST;.lpstrDefExt=ext;=CreateFile(buf,GENERIC_READ,0,0,OPEN_EXISTING,0,0);//запоминаем указатель на него
//создаём файл в который будем записывать результаты форматирования
ofn.lStructSize=sizeof(OPENFILENAME);.hwndOwner=hwnd;.lpstrFile=buf1; ofn.nMaxFile=260;.Flags=OFN_NOREADONLYRETURN;.lpstrDefExt=ext;
/*открываем только для записи (читать из него нам точно ничего не понадобится),
при открытии удаляем все его содержимое) */
hfile1=CreateFile(buf1,GENERIC_WRITE,0,0,CREATE_ALWAYS,0,0);//запоминаем указатель на него=true;=GetFileSize(hfile,&fss);(qwe,"%i",fs);(txtctrl,qwe);
//в цикле читаем файл и занимеемся форматированием строчек
while(rf)
{=ReadFile(hfile,&t,to,&ti,NULL);
//st=false;(ti!=0){i++;}//в случае если, что-то прочитали, то увеличиваем счётчик на единицу((fs)==i) {rf=0;}//проверяем не хватит ли нам читать
if (t[0]==13){strcpy(t,hu);}(t[0]!=32 && t[0]!=10){strcat(caches,t);}
if (t[0]==32)//если прочитанный символ - пробел
{strcat(caches,t);(strlen(s)+strlen(caches)+strlen(re)<con){(s,re);(re,hu);(re,caches);(caches,hu);//очищаем кеш
}{ l1:((strlen(s)+strlen(re)<con) && (alg))
{(stt,re);(re,stt);(stt,sttt);l1;
}(s,re);(hfile1,&s,strlen(s),&ti,NULL);(nd) {WriteFile(hfile1,&ns,1,&ti,NULL);}// записываем символ перевода строки
WriteFile(hfile1,&ns1,1,&ti,NULL);//записываем символ конца строки
strcpy(s,cppbs);(re,caches);
strcpy(caches,hu);
}
}(t[0]==10) {//если прочитанный символ конец сроки
strcat(s,caches);(s,re);(caches,hu);(re,hu);
char kl[2048]=" ";(sp) {strcat(s,kl);}//если необходимо добавляем пробел в конце истинного абзаца текста
WriteFile(hfile1,&s,strlen(s),&ti,NULL);
{WriteFile(hfile1,&ns,1,&ti,NULL);}(hfile1,&ns1,1,&ti,NULL);(s,cppbs);
}
}(hfile);(hfile1);=CreateFile(buf1,GENERIC_READ,0,0,OPEN_EXISTING,0,0);=VirtualAlloc(0,GetFileSize(hfile1,0),MEM_COMMIT,PAGE_READWRITE);(hfile1,mem1,GetFileSize(hfile1,0),&aa,0);
((BYTE*)mem1)[GetFileSize(hfile1,0)]=0;(hfile1);
//выводим содержимое файла в EDIT(txtctrl,(LPCSTR)mem1);(mem1,0,MEM_RELEASE);(Dlg2,0);(txtctrl);
}:{;}
}FALSE;
}CALLBACK DlgAFunc (HWND DlgA, UINT message, WPARAM wParam, LPARAM lParam)
{(message)
{WM_DESTROY:WM_CLOSE:(DlgA);=NULL;;
}FALSE;
}
resource.h
#define DLG1 101
#define DLG2 102
#define IDR_MENU1 103
#define IDD_Format 104
#define IDD_F 105
#define IDD_DIALOG1 106
#define IDB_BITMAP1 107
#define IDC_EDIT1 1002
#define IDC_RADIO2 1005
#define IDC_RADIO3 1006
#define IDC_CHECK2 1007
#define IDC_EDIT2 1008
#define IDC_CHECK1 1018
#define IDFILEOPEN 40001
#define ID_MENUITEM40002 40002
#define ID_MENUITEM40003 40003
#define ID_MENUITEM40004 40004
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 108
#define _APS_NEXT_COMMAND_VALUE 40005
#define _APS_NEXT_CONTROL_VALUE 1019
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
Res.rc
IDD_Format DIALOG DISCARDABLE 0, 0, 182, 124DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU "Параметры форматирования текста"
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "OK",IDOK,118,100,50,14
LTEXT "Количество символов в строке",IDC_STATIC,7,15,107,8
EDITTEXT IDC_EDIT1,117,12,55,14,ES_AUTOHSCROLL | ES_NUMBER"Разрыв строки",IDC_STATIC,7,74,161,22"10",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,13,83,24,10"13/10",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,50,84,35,10"Завершать абзац пробелом",IDC_CHECK2,"Button",_AUTOCHECKBOX | WS_TABSTOP,7,58,111,10 "Добавлять пробелов перед стрококой",IDC_STATIC,7,30,132,8
EDITTEXT IDC_EDIT2,142,28,32,13,ES_AUTOHSCROLL | ES_NUMBER "Выравнивать строки текста по ширине", IDC_CHECK1,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,8,45,149,10_F DIALOG DISCARDABLE 0, 0, 186, 44DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU"Форматирование"8, "MS Sans Serif" "Начать форматирование",IDOK,7,23,172,14
LTEXT "Для начала форматирования нажмите кнопку", IDC_STATIC,14,
13,158,8_DIALOG1 DIALOG DISCARDABLE 0, 0, 235, 52DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU"О программе"8, "MS Sans Serif" "Полностью учебная программа - за любой нанесённый ущерб мы ответственности не несём. Распространение свободное. Казаковцев Н.М. Малмыгина О.В. Хакасский Государственный Университет. Группа 10-1. 2004 г.",_STATIC,7,7,221,38_MENU1 MENU DISCARDABLE"Файл""Открыть текстовый файл", IDFILEOPEN"Закрыть", IDCLOSE"Форматирование""Параметры форматирования", ID_MENUITEM40002"Начать форматирование", ID_MENUITEM40003"О программе""?", ID_MENUITEM40004
END