8) Теперь необходимо создать обработчик для кнопки «Занесення в файл». В программе она автоматически получила символическое имя IDC_BUTTON1. Как обычно, в диалоговом окне нужно выделить кнопку, вызвать контекстное меню и в нем- Add Event Handler. В появившемся окне по умолчанию в Message type выбрано сообщение BN_CLICKED, в Class List- Crabfile1Dlg, а в Function handler name- имя обработчика. Остается щелкнуть по кнопке Add and Edit. В результате в файле Crabfile1Dlg.cpp появится заготовка для обработчика события- щелчка на кнопке «Занесення в файл». После её заполнения получим функцию- обработчик, приведенную ниже.
void Crabfile1Dlg::OnBnClickedButton1()
{
CFile to_file("f1.dat",CFile::modeCreate|CFile::modeWrite);
for(int i=0;i<4;i++)
{
to_file.Seek(i*80,CFile::begin);
to_file.Write(OutString[i],80);
}
m_edit1.SetWindowTextA("Занесення відбулося");
// TODO: Add your control notification handler code here
to_file.Close();// Не обов’язково
}
Сначала создается объект to_file класса CFile. Запрограммировано создание (CFile::modeCreate)файла f1.dat для записи в него(CFile::modeWrite).
В цикле сначала указатель позиции файла устанавливается в позицию i*80 от его начала (CFile::begin). Затем происходит запись в OutString[i] строки длиной 80 символов.После записи четырех строк в текстовое окно, представленное элементом данных m_edit1, заносится сообщение «Занесення відбулося».
9) Cоздать обработчик для кнопки «Виведення із файлу». В программе она автоматически получила символическое имя IDC_BUTTON2. Проделав действия, приведенные в предыдущем пункте, получим заготовку для обработчика. После внесения в неё необходимых операторов функция имеет вид:
void Crabfile1Dlg::OnBnClickedButton2()
{
CFile from_file("f1.dat",CFile::modeRead);
for(int i=0;i<4;i++)
{
from_file.Seek(i*80,CFile::begin);
from_file.Read(InString,80);
m_list1.AddString(InString);
}
// TODO: Add your control notification handler code here
}
Создается объект from_file класса CFile. При этом существующий(а значит не нужно писать CFile::modeCreate) файл f1.dat переводится в режим только для чтения(CFile::modeRead).
В цикле указатель позиции файла сначала устанавливается в позицию i*80 от его начала.Затем происходит чтение из файла в массив InString строки длиной 80 символов.После чего строка заносится в окно списка, представленного элементом данных m_list1.
Первая программа составлена и её можно запустить, нажав Ctrl+F5.
3 Последовательность действий при создании второй программы
1) Выполнить описанные выше пункты 1-3 для создания диалогового окна проекта, названного rabfile2. В нем разместить три текстовых окна. Одно- для предварительного ввода количества заносимых в файл строк (ввести подпись «Введіть кількість рядків і натисніть кнопку «Start»»), второе- для последовательного ввода символьных строк (подписать «Вікно для введення даних») и третье- для отображения текущего номера вводимой строки. Кроме того, ввести окно списка для отображения выведенных из файла строк, а также три кнопки: «Start», «Занесення у файл», «Виведення із файлу».
2) В класс Crabfile2Dlg добавить элементы данных с именами m_edit1, m_edit2 и m_edit3, соответствующие текстовым окнам, а также m_list1, соответствующий окну списка.
3) Выбрать вкладку Class View, выделить Crabfile2Dlg, вызвать контекстное меню, Add/Add Variable и добавить ряд переменных с доступом private:
char OutString[40][80] - строки, заносимые в файл;
char InString[80] - строка, в которую будет последовательно осуществляться считывание из файла;
int kil_poliv – количество записей (не больше 40) (при работе со структурами это кол-во её полей);
int nomer- номер записи при занесении в файл;
to_file и from_file типа CFile.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.