- •Кафедра вычислительных систем и программирования высокоуровневые методы информатики и программирования
- •Санкт-Петербург
- •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. Содержание
4. Блоки лабораторных работ по разделу «Объектно-
ориентированные методы программирования в
Windows»
4.1. Блок по теме «Создание Windows-приложений»
Цель блока - изучение этапов создания различных типов Windows-приложений в среде Visual C++ 2005.
lab1_1 «Консольные приложения»
Консольное приложение – это приложение, напоминающее DOS-программу, имеющее функцию main() и символьный интерфейс, управляемый клавишами клавиатуры.
Необходимость консольных приложений при программировании в Windows объясняется: переходом от MS-DOS к Windows; целесообразностью иметь в некоторых программах текстовый режим, а не графический интерфейс; необходимостью автономного тестирования фрагментов больших программ.
Цель работы - создание консольного приложения и изучение основных этапов разработки приложений.
Условие задачи:
Имеется класс spisok Выполнить автономное тестирование класса spisok.
Для этого надо выполнить следующие этапы:
- создать проект lab1_1 нового консольного приложения с файлом заголовков lab1_1.h и файлом кодов lab1_1.cpp;
- добавить в проект файл заголовков lab1_1.h с определением класса и подключить его к файлу кодов lab1_1.cpp;
- добавить в функцию _tmain() файла lab1_1.cpp фрагмент программы, содержащий вызовы тестируемых функций класса spisok.
Создание проекта консольного приложения
Выполнить этапы согласно п. 2.1 и ввести имя проекта lab1_1.
Создание и добавление исходных файлов в проект
Проект должен содержать файл заголовков lab1.h и файл кодов lab1.cpp. Для создания файла lab1.h выполнить следующие этапы:
- Выбрать команду Project->Add New Item. Появится диалоговое окно Add New Item lab1. В списке Categorie должно быть Visual C++ Code.
- Выбрать в списке Templates тип файла заголовков Header File (.h), ввести имя файла lab1_1.h и щелкнуть на кнопке Add. Появится пустое поле для ввода текста файла lab1.h.
- Ввести текст файла lab1.h и сохранить его.
Аналогично создать файл заголовков lab1_1.cpp, выполнив эти этапы. Только необходимо выбрать вкладку типа файла C/C++ Source File (файл кодов).
//файл заголовков lab1_1.h
#include <iostream> //старая библ. iostream.h заменена на
//пространство имен iostream
struct uzel
{
float nom;//элемент списка
uzel* sled; //указатель на следующий элемент списка
};
class spisok //определение класса список
{
private:
uzel* nach; // nach-указатель на начало списка
public:
spisok(){nach=NULL;} //конструктор
~spisok(){ud();} //деструктор
void dob(float d); //добавление элементов в список
void ud_nach(); //удаление элемента списка
void vvod(); //ввод всех элементов
void vyvod(); //вывод всех элементов
void ud(); //удаление списка
};
//файл кодов lab1_1.cpp
#include <stdafx.h>
using std::cout; //функции библ. ввода/вывода (iostream) cout и cin
using std::cin; //принадлежат пространству имен std
#include "lab1_1.h" //подключение файла заголовков
spisok obj; //объявление объекта класса
void spisok::dob (float d) //список вида стек, добавление – в начало
{ uzel* rab=new uzel; //списка
rab-> sled=nach; rab-> nom=d;
nach=rab;}
void spisok::ud_nach ()
{ uzel* rab=nach;
nach=nach->sled; delete rab;}
void spisok::vvod()
{ float d;
cout<<"Enter number (0-fine):";
for (;;)
{
cin>>d; if (d==0) break;
dob (d); } cout<<’\n’;}
void spisok::vyvod()
{ uzel* rab=nach;
while (rab!=NULL)
{cout<<rab->nom<<" -> ";
rab=rab-> sled;} cout<<’\n’;}
void spisok::ud()
{while (nach!=NULL)
ud_nach ();}
int _tmain (int args, _TCHAR* argv[])
{ obj.vvod (); obj.vyvod ();
obj.ud_nach (); obj.vyvod ();
obj.ud (); obj.vyvod ();
}
Компиляция и выполнение приложения
Выбрать команду Build->Build lab1_1. Выполняется компиляция и компоновка программы. При наличии ошибок выполнить редактирование файлов и снова запустить на компиляцию.
Выбрать команду Debug ® Start Without Debugging - запуск на выполнении программы. На экране появляется окно MS-DOS и выводятся результаты программы. Строка Press Any Key to Continue позволяет увидеть результаты программы.
Закрытие, открытие, просмотр проекта
Visual Studio размещает файлы проекта lab1_1.h и lab1_1.cpp в папке проекта lab1_1, а объектные файлы - в подкаталоге Debug папки проекта lab1_1.
Для закрытия проекта надо выполнить команду File ->Close Solution. Появляется окно Start Page.
Для повторного открытия проекта выполнить этапы:
Выбрать команду File->Open Solution. Появится око Open Solution со списком проектов (папок). Выбрать папку необходимого проекта (lab1_1) и открыть её, нажав Open (или дважды щёлкнуть на папке). В окне Open Solution появляется содержимое выбранной папки.
- Выбрать exe-файл и открыть его. Открывается проект lab1_1.
Для просмотра проекта используется вкладки окна Solution Explorer: вкладка Class View – для просмотра классов; вкладка Solution Explorer – для просмотра файлов проекта; вкладка Resource View – для просмотра ресурсов.
lab1_2 «SDI-приложения»
SDI-приложение (Single Document Interface – однодокументный интерфейс) – это приложение, имеющее одновременно открытым только один документ;
Цель работы - создание SDI-приложения, которое создает окно и отображает в нем данные (строку “Ваше первое SDI-приложение!”).
Создание проекта SDI-приложения
Для этого необходимо выполнить следующие этапы:
Запустить Visual Studio 2005. Появится стартовая страница Start Page. Проверить вкладку Projects.
Щелкнуть на кнопке Create Project или выбрать команду File->New->Project. Появится диалоговое окно New Project.
Выбрать в списке Project Types папку Visual C++ MFC, а в списке Templates – MFC Application. Ввести имя проекта lab1_2 и проверить в поле Solution Name имя папки для хранения проекта (lab1_2).
Щелкнуть на кнопке OK. Появляется диалоговое окно MFC Application Wizard - lab1_2. Генератор приложений AppWizard потребует от пользователя выполнения 7 этапов (шагов) настройки создаваемого приложения.
Первая вкладка Overview позволяет выбрать вариант по умолчанию. Рассмотрим этапы настройки.
1-ый этап (вкладка Application Type) – это выбор количества окон приложения: Single Document, Multiple Document, Dialog based, Multiple top-lever documents В нашем примере надо выбрать Single Document. На всех остальных этапах можно выбрать настройки по умолчанию. В диалоговом окне имеются дополнительные переключатели и флажки. Флажок Document/View architecture support поддерживает концепцию Документ/Представление и должен быть установлен. В списке Resource language выбрать язык ресурсов – English (US). Переключатель Project Style установить в положение традиционного интерфейса – MFC standart. Следующий переключатель определяет выбор между динамически связываемой и статически связываемой библиотеками. Выбрать static.
2-ой этап (вкладка Compound Document Support) – варианты работ с составными документами: None – нет составных документов; Container – использование в приложении связанных или внедренных объектов; Mini-server – создание приложения, документы которого могут быть внедрены в другое приложение, но без автономного использования; Full-server – создание приложения, аналогичного предыдущему, и с автономным использованием; Container/Full server – создание приложения и контейнера и сервера.
3-ий этап (вкладка Document Template Strings) – выбор строковых шаблонов документа. Выбрать – по умолчанию.
4-ый этап (вкладка Database Support) – поддержка баз данных: None – поддержка баз данных не предусмотрена; Header files only – только файлы заголовков; Database view without file support – генерирование базы данных без поддержки файловых операций; Database view with file support – генерирование базы данных с поддержкой файловых операций. Выбрать – None.
5-ый этап (вкладка User Interface Features) – установка опций экстеръера пользовательского интерфейса. Выбрать по умолчанию.
6-ой этап (вкладка Advanced Features) - использование дополнительных параметров: контекстная справка, печать и предварительный просмотр, автоматизация, элементы управления ActiveX, почтовый интерфейс, сокеты Windows. Выбрать по умолчанию.
Последний этап (вкладка Generated Classes) – это подтверждение создаваемых классов и файлов. Щелкнуть на кнопке Finish. Выводится стартовая страница Start Page с открытым проектом.
Объявление объекта данных в классе документа
// lab1_2Doc.h
class CLab1_2Doc: public CDocument
{//
protected:
CLab1_2Doc ();
DECLARE_DYNCREATE (Clab1_2Doc)
CString Message; //объявление объекта класса CString
}
Класс CString содержит функции обработки строк: Compare() – сравнение двух строк; Format() – преобразование других типов в текст; оператор + - конкатенция; операторы >>,<< - ввод, вывод; и др.
Инициализация объекта в конструкторе класса
CLab1_2Doc :: CLab1_2Doc()
{
Message = “SDI-приложение!”;
}
Вывод данных на экран в классе представления
void CLab1_2View :: OnDraw (CDC* pDC)
{
CLab1_2Doc* pDoc = GetDocument ();//указатель на объект док.
ASSERT_VALID (pDoc); // макрос для проверки указат.
pDC -> TextOut ( 0, 0, pDoc -> Message);//функция класса CDC
}
Компиляция, запуск и тестирование приложения
Выбрать команду Build->Build lab1_2. Выполняется компиляция и компоновка программы. Выбрать команду Debug ® Start - запуск на выполнении программы. На экране появляется окно и выводятся результаты программы – строка “SDI-приложение!”.
Изменить размеры и положение окна, свернуть его в пиктограмму или развернуть на весь экран.
Выбрать команду File->Open и выбрать любой файл.
Установить указатель мыши на одной из пиктограмм панели инструментов и задержать его, чтобы посмотреть назначение.
Щелкнуть на пиктограмме Open, чтобы убедиться, что она тоже выполняет действия команды File->Open.
Выбрать команду Help->About. Выведется окно сообщения об авторских правах. Нажать OK окна сообщений.
Выбрать команду File->Exit. Приложение закроется.
Выбрать команду File->Close Solution. Проект закрыт.
lab1_3 «MDI-приложения»
MDI-приложение (Multiple Document Interface - многодокументный интерфейс) – это приложение, которое может одновременно иметь несколько открытых документов и иметь для одного документа несколько представлений;
Цель работы - создание MDI-приложения с несколькими документами и несколькими представлениями.
Создание проекта MDI-приложения
Для этого необходимо выполнить следующие этапы:
Запустить Visual Studio 2005. Появится стартовая страница Start Page. Проверить вкладку Projects.
Щелкнуть на кнопке Create Project или выбрать команду File->New->Project. Появится диалоговое окно New Project.
Выбрать в списке Project Types папку Visual C++ MFC, а в списке Templates – MFC Application. Ввести имя проекта lab1_3 и проверить в поле Solution Name имя папки для хранения проекта (lab1_3).
Щелкнуть на кнопке OK. Появляется диалоговое окно MFC Application Wizard - lab1_3. Генератор приложений AppWizard потребует от пользователя выполнения 7 этапов (шагов) настройки создаваемого приложения.
1-ый этап (вкладка Application Type) – это выбор количества окон приложения: Single Document, Multiple Document, Dialog based, Multiple top-lever documents В нашем примере надо выбрать Multiple Document. В диалоговом окне имеются дополнительные переключатели и флажки. Флажок Document/View architecture support поддерживает концепцию Документ/Представление и должен быть установлен. В списке Resource language выбрать язык ресурсов – English (US). Переключатель Project Style установить в положение традиционного интерфейса – MFC standart. Следующий переключатель определяет выбор между динамически связываемой и статически связываемой библиотеками. Выбрать static.
На всех остальных этапах можно выбрать настройки по умолчанию, щелкнув на кнопке Finish. Появится окно Start Page с открытым проектом. Для каждого нового документа автоматически создаются классы документа и представления.
Объявление объекта данных в классе документа
//Lab1_3Doc.h
class CLab1_3Doc:public Cdocument
{
public:
CString Message;
}
Инициализация объекта в конструкторе класса
CLab1_3Doc::CLab1_3Doc()
{
Message = “ MDI-приложение!”;
}
Вывод данных на экран в классе представления
void CLab1_3View::OnDraw(CDC* pDC)
{
CLab1_3Doc* pDoc = GetDocument();
ASSERT VALID(pDoc);
pDC->TextOut(0, 0, pDoc->Message);
}
Компиляция, запуск и тестирование приложения
Выбрать команду Build->Build lab1_3. Выполняется компиляция и компоновка программы. Выбрать команду Debug ® Start - запуск на выполнении программы. На экране появляется окно документа с именем lab1_31 (lab1_3 – имя проекта) и выводятся результаты программы – строка “MDI-приложение!”.
Выполнить команду File->New. Открывается окно нового документа lab1_32.
Выполнить команду Window->New Window. Будет создано для документа lab1_32 второе новое представление с именем lab1_32:2, а первое представление изменит имя с lab1_32 на lab1_32:1.
lab1_4 «Диалоговые приложения»
Диалоговое приложение – это приложение, не имеющее меню и не могущее сохранять и открывать файлы.
Цель работы – создание простого диалогового приложения.
При запуске приложения появится диалоговое окно со стандартными кнопками OK и Cancel. При щелчке на кнопках OK или Cancel диалоговое окно исчезнет.
Создание проекта диалогового приложения
Для этого необходимо выполнить следующие этапы:
Запустить Visual Studio 2005. Появится стартовая страница Start Page. Проверить вкладку Projects.
Щелкнуть на кнопке Create Project или выбрать команду File->New->Project. Появится диалоговое окно New Project.
Выбрать в списке Project Types папку Visual C++ MFC, а в списке Templates – MFC Application. Ввести имя проекта lab1_4 и проверить в поле Solution Name имя папки для хранения проекта (lab1_4).
Щелкнуть на кнопке OK. Появляется диалоговое окно MFC Application Wizard - lab1_4.
1-ый этап (вкладка Application Type) – это выбор количества окон приложения: Single Document, Multiple Document, Dialog based, Multiple top-lever documents В нашем примере надо выбрать Dialog based. В диалоговом окне имеются дополнительные переключатели и флажки. Флажок Document/View architecture support поддерживает концепцию Документ/Представление и должен быть установлен. В списке Resource language выбрать язык ресурсов – English (US). Переключатель Project Style установить в положение традиционного интерфейса – MFC standart. Следующий переключатель определяет выбор между динамически связываемой и статически связываемой библиотеками. Выбрать static.
На всех остальных этапах можно выбрать настройки по умолчанию, щелкнув на кнопке Finish. Появится окно Start Page с открытым проектом.
Компиляция, запуск и тестирование приложения
Выбрать команду Build->Build lab1_4. Выполняется компиляция и компоновка программы. Выбрать команду Debug ® Start - запуск на выполнении программы. На экране - главное диалоговое окно с надписью “TODO : Place dialog controls here”. Чтобы убрать надпись, надо щелкнуть на ней и нажать Delete. Щелкнуть на пиктограмме строки заголовка. Откроется меню, содержащее команды Переместить, Закрыть и About lab1_4. При щелчке на команде About lab1_4 выводится диалоговое окно с информацией о программе. Имеются две кнопки OK и Cancel. Если щелкнуть на кнопке, диалоговое окно исчезнет.