- •Кафедра вычислительных систем и программирования высокоуровневые методы информатики и программирования
- •Санкт-Петербург
- •1.Общие положения по организации
- •2. Программирование информационной мини-системы управления методом процедурно-ориентированного программирования (тема 2).
- •2.1. Постановка задачи и проектирование программы
- •2.2. Реализация программы
- •Vyvod(cout, client);
- •Vyvod(outprintf, client);
- •Void dobzap(fstream &dobf)
- •Int tabn;
- •Int operator!(); //элемент-функция класса
- •Int akt::operator!()
- •4. Блоки лабораторных работ по разделу «Объектно-
- •4.1. Блок по теме «Создание Windows-приложений»
- •4.2. Блоки по теме «Управление многооконными
- •4.2.1. Блок «Ввод/вывод информации»
- •Int k;//номер текущей вводимой строки
- •Invalidate();
- •If (!cursor)//если курсор еще не создан, надо создать.
- •Int X,y;//объявить переменные для хранения координат мыши
- •4.2.2. Меню, акселераторы, кнопки
- •Invalidate();
- •Invalidate(); }
- •4.2.3. Диалоговые окна
- •Invalidate();
- •4.2.4. Управление файловой обработкой
- •Invalidate(); //при вводе символа вид объявл. Не действительным
- •Void AddText(uint text) {data.AppendChar(text);} //доб. В конец стр.
- •Invalidate(); //при вводе символа вид объявл. Не действительным
- •Void Serialize(cArchive& archive);//прототип переопред. Функции
- •Void cData::Serialize(cArchive& archive)
- •If (archive.IsStoring())
- •Implement_serial(cData, cObject, 0)//класс,баз. Класс,номер
- •Invalidate();
- •Invalidate();
- •5.2. Блок по теме «Поддержка баз данных»
- •If (m_Add) //если true, то добавление записи
- •5.3. Блок по теме «Программирование для Internet»
- •If (!pIs) //2 проверка подключения компъютера к Internet
- •If (!pIs) //3 проверка подключения
- •If (!pFc) //5 проверка соединения с ftp-узлом
- •6. Рекомендуемая литература
- •7. Содержание
Invalidate();
}
}
- Вывести строку :
void Clab3_2View :: OnDraw (CDC* pDC)
{
Clab3_2Doc* pDoc = GetDocument();
ASSERT_VALID (pDoc);
if(!pDoc)
return;
pDC -> TextOut(0, 0, pDoc->StringData);
}
Скомпилировать, запустить и протестировать приложение.
4.2.4. Управление файловой обработкой
lab4_1 «Файловая обработка объектов
классов MFC»
Цель работы - чтение и запись с диска стандартных объектов MFC; работа команд меню File.
Для создания приложения необходимо выполнить следующие операции:
- добавление элементов-данных класса документа, которые будут записываться и читаться с диска;
- инициализация этих элементов-данных в функции OnNewDocument() класса документа и в конструкторе документа;
- ввод данных с клавиатуры, если это необходимо, например, в функции OnChar() для ввода символов строки;
- организация вывода документа (функция OnDraw());
- включение в класс вида функций редактирования документа;
- модернизация функции Serialize() т.е. включение операторов, обеспечивающих сохранение (Save) и загрузку (Open) данных, которые представляют собой содержание документа.
Для создания приложения lab4_1 выполнить следующие этапы.
Создание проекта
Создать проект lab4_1 (SDI-приложение).
Добавление элемента - данного класса документа
Строка будет хранится в элементе Str класса CString.
//lab4_1Doc.h интерфейс класса Clab4_1Doc
class Clab4_1Doc: public CDocument
{//
// Атрибуты
public:
CString Str;
}
Инициализация элемента - данного в конструкторе класса
и в OnNewDocument() при открытии новых документов
Clab4_1Doc::Clab4_1Doc()
{
Str = “”;
}
BOOL Clab4_1Doc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
Str = “”; //инициализация при вызове команды File->New
UpdateAllViews(NULL); // обновление всех видов программы
return TRUE;
}
Ввод данных с клавиатуры
- Связать сообщение WM_CHAR с функцией-обработчиком OnChar(). Для этого открыть окно Class View, щелкнув на вкладке Class View или на команде View->Class View. Щелкнуть правой кнопкой на имени класса Clab4_1View и выбрать коианду Properties. В окне свойств Properties щелкнуть на кнопке Messages и в появившемся списке сообщений выбрать WM_CHAR, а в комбинированном списке справа щелкнуть на команде <Add> OnChar. Появляется скелет функции OnChar().
- Сохранить вводимый символ в документе. Вводимый символ, находящийся в параметре nChar функции OnChar(), добавляется к строке Str , принадлежащей документу.
void Clab4_1View::OnChar(UNIT nChar, UNIT nRepCnt, UNIT nFlags)
{
Clab4_1Doc* pDoc=GetDocument ();//указатель на объект докум.
ASSERT_VALID (pDoc);//проверка указателя
pDoc->Str.AppendChar(nChar);//добавление символа к строке Str
Invalidate(); //при вводе символа вид объявл. Не действительным
CView::OnChar (nChar, nRepCnt, nFlags); }
Вывод текущего состояния документа
void Clab4_1View::OnDraw (CDC* pDC)
{
Clab4_1Doc* pDoc=GetDocument ();
ASSERT_VALID (pDoc);
if(!pDoc)
return;
pDC->TextOut(0, 0, pDoc->Str);
}
Сообщение приложению об изменении данных
Пользователь может выйти из программы, не сохранив данные, программа должна предложить сохранить данные:
void Clab4_1View::OnChar(UNIT nChar, UNIT nRepCnt, UNIT nFlags)
{//...
Invalidate();
pDoc->SetModifiedFlag(); //устан. флага изменения документа
CView::OnChar (nChar, nRepCnt, nFlags);
}
Модификация функции Serialize()
void Clab4_1Doc::Serialize(CArchive& ar)
{
if (ar.IsStoring())//проверка: true, если запись и false, если чтение
{//Добавить код для сохранения т.е. записи на диск
ar<<Str;
}
else
{// Добавить код для загрузки т.е. чтения с диска
ar>>Str;
}
}
Скомпилировать, запустить и протестировать приложение.
lab4_2 «Файловая обработка объектов
классов пользователя»
Цель работы - чтение и запись с диска не стандартных объектов MFC, объектов классов пользователя.
Пусть имеется собственный класс CData. Выполнить файловую обработку.
// файл CData.h
class CData
{
private:
CString data;
public:
CData(){data=CString(“”);}