- •Кафедра вычислительных систем и программирования высокоуровневые методы информатики и программирования
- •Санкт-Петербург
- •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. Содержание
Void AddText(uint text) {data.AppendChar(text);} //доб. В конец стр.
void DrawText(CDC* pDC) {pDC->TextOut(0,0,data);} //вывод
void ClearText() {data=””;} //очистка строки
};
Для создания приложения lab4_2 выполнить этапы.
Создание проекта
Создать проект lab4_2 (SDI-приложение).
Добавление нового класса в проект
- Добавить в проект новый файл CData.h.
Для этого выполнить команду Project->Add New Item и в появившемся окне в Categories выбрать Visual C++ Code, а в Templates - Header File (.h). Затем ввести имя файла заголовков CData.h и щелкнуть на кнопке Add. Откроется окно для ввода текста файла. Ввести текст файла CData.h. Команда Project->Add New Item аналогична команде File->New->File, однако она автоматически добавляет новый файл в проект.
- Включить в файл заголовков документа lab4_2Doc.h файл заголовков CData.h, а также создать объект класса CData с именем DataObject:
//lab4_2Doc.h
#include “CData.h”
//Атрибуты
public:
CData DataObject;
Ввод данных с клавиатуры
- Связать сообщение WM_CHAR с функцией-обработчиком OnChar(). Для этого открыть окно Class View, щелкнув на вкладке Class View или на команде View->Class View. Щелкнуть правой кнопкой на имени класса Clab4_2View и выбрать коианду Properties. В окне свойств Properties щелкнуть на кнопке Messages и в появившемся списке сообщений выбрать WM_CHAR, а в комбинированном списке справа щелкнуть на команде <Add> OnChar. Появляется скелет функции OnChar().
- Сохранить вводимый символ в документе. Вводимый символ, находящийся в параметре nChar функции OnChar(), добавляется к строке data.
void Clab4_2View::OnChar(UNIT nChar, UNIT nRepCnt, UNIT nFlags)
{
Clab4_2Doc* pDoc=GetDocument ();//указатель на объект докум.
ASSERT_VALID (pDoc);//проверка указателя
pDoc->DataObject.AddText(nChar);//доб. символа к строке data
Invalidate(); //при вводе символа вид объявл. Не действительным
CView::OnChar (nChar, nRepCnt, nFlags);
}
Вывод текущего состояния документа
void Clab4_2View::OnDraw (CDC* pDC)
{
Clab4_2Doc* pDoc=GetDocument ();
ASSERT_VALID (pDoc);
if(!pDoc)
return;
pDoc->DataObject.DrawText(pDC);
}
Модификация собственного класса
class CData: public CObject//CData - производный от CObject
{
private:
CString data;
DECLARE_SERIAL(CData);//вкл. макроса
public:
void ClearText(){data="";}
Void Serialize(cArchive& archive);//прототип переопред. Функции
};
Создание новой версии Serialize() собственного класса
- Добавить в проект новый файл CData.cpp.
Для этого выполнить команду Project->Add New Item и в появившемся окне в Categories выбрать Visual C++ Code, а в Templates - C++ File (.cpp). Затем ввести имя файла заголовков CData.cpp и щелкнуть на кнопке Add. Откроется окно для ввода текста файла. Ввести текст файла CData.cpp.
// CData.cpp
#include "stdafx.h"
#include "lab4_2Doc.h"
Void cData::Serialize(cArchive& archive)
{
CObject::Serialize(archive);//вызов функции базового класса
If (archive.IsStoring())
{
archive<<data;
}
else
{
archive>>data;
}
}
-Добавить макрос IMPLEMENT_SERAL
// CData.cpp
#include "stdafx.h"
#include "lab4_2Doc.h"
void CData::Serialize(CArchive& archive)
{//
}