В этом разделе рассматривается программа использующая MDI ( интерфейс многих документов )
Мы создадим программу, в которой документом является графическое изображение - круг. В ToolBar будет создана иконка, при нажатие на которою будет вызываться диалоговое окно, позволяющее изменять координаты круга. Местоположение круга можно будет согранять в файл с расширением CIR.
Создание проекта программы
1. Создайте новый проект( у меня MDI ), использующая MDI интерфейс с поддержкой MFC. Все шесть шагов в MFC AppWizard оставте без изменения.
2. Если вы сделали всё правильно, то создадутся пять классов : CMDIApp, CMainFrame, CChildFrame, CMDIDoc и CMDIView. В классе документов CMDIDoc вы пишите код для поддержки данных программы, а в классе представления CMDIView - код, отвечающий за то, что вы видите на экране. Вы будете писать код в функциях-элементах только этих двух классов.
3. Объявляем элементы данных класса документа. Их будет два : координаты круга по X и по Y. Для этого открываем файл CMDIDoc.h и изменяем объявление класса CMDIDoc следующим образом:
class CMDIDoc : public CDocument { protected:
// create from serialization only CMDIDoc(); DECLARE_DYNCREATE(CMDIDoc) // Attributes public: int m_X; // координатыкругапо x int m_Y;
// координаты круга по y // Operations ... ...
4. Объявляем элементы данных класса представления. Их будет тоже два : координаты круга по X и по Y. Для этого открываем файл CMDIView.h и изменяем объявление класса CMDIView следующим образом:
class CMDIView : public CView { protected:
// create from serialization only CMDIView(); DECLARE_DYNCREATE(CMDIView) // Attributes public: CMDIDoc* GetDocument(); int m_X;
// координаты круга по x int m_Y;
// координаты круга по y // Operations ... ...
Как вы видите, имена переменных могут совпадать( обычно так и делается ).
5. Инициализируем элементы данных класса документа. Для этого откройте файл MDIDoc.cpp, найдите в нём функцию OnNewDocument() и напишите в ней следующий код:
BOOL CMDIDoc::OnNewDocument() { if (!CDocument::OnNewDocument()) return FALSE; m_X = 100; // начальное положение по X=100 m_Y = 100;
// начальноеположениепо Y=100
// TODO: add reinitialization code here // (SDI documents will reuse this document) return TRUE; }
6. Инициализируем элементы данных класса представления. Для этого нужно создать функцию-элемент OnInitialUpdate() класса представления:
Выберите ClassWizard в меню View. На странице Message Maps выберите следующие события:
Class neme : CMDIView Object ID : CMDIView Message : OnInitialUpdate
и нажмите на кнопку Add Function
Напишите следующий код в функцию OnInitialUpdate():
void CMDIView::OnInitialUpdate() { CView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class CMDIDoc* pDoc = GetDocument();
// получить указатель на документ
// обновить элементы данных представления
// соответствующими значениями документа. m_X = pDoc->m_X; m_Y = pDoc->m_Y; pDoc->SetTitle("ANDY");
// всем документам даётся название ANDY }
7. Теперь напишем код для вывода круга на экран.
Функция OnDraw() класса представления автоматически выполняется всякий раз, когда нужно вывести окно документа.
Напишите следующий код в функции OnDraw() :
void CMDIView::OnDraw(CDC* pDC) { CMDIDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc);
// TODO: add draw code for native data here pDC->Ellipse(m_X - 20, m_Y - 20, m_X + 20, m_Y + 20);
// рисуем круг диаметром 20 }
8. Напишем код для сохранения и считывания данных из файла.
Откройте файл MDIDoc.cpp, найдите в нём функцию Serialize() иизменитееё:
void CMDIDoc::Serialize(CArchive& ar) { if (ar.IsStoring()) {
// TODO: add storing code here( этовыполняется,
если выбрать SAVE ) ar<<m_X;
// записываем m_X в выбранный файл ar<<m_Y;
// записываем m_Y в выбранный файл } else {
// TODO: add loading code here ( этовыполняется,
если выбрать OPEN ) ar>>m_X;
// считываем значение из выбранного файла в m_X ar>>m_Y;
// считываем значение из выбранного файла в m_Y } }
9. Часто бывает нужно изменить некоторые параметры программы, такие как заголовок главного окна или тип файла по умолчанию, который выводится в диалоговых панелях SAVE и OPEN. Для этого нужно выбрать закладку ResourceView и открыть пункт String Table. Вы увидите список переменных проекта( три колонки : ID, Value и Caption ).
IDR_MAINFRAME - заголовок главного окна (изменяется в поле Caption)
IDR_MCIRCLTYPE - тип файла по умолчанию, вы увидите 6 подстрок разделёнными знаком n. Третья и четвёртая подстроки определяют тип документа по умолчанию. У меня CIR FILES( *.cir ) и .cir соответственно. Вы можете поставить свои значения.
10. Теперь создадим кнопку в панеле инструментов. Для этого нужно выбрать закладку ResourceView и открыть пункт Toolbar. Вы увидите панель инструментов в режиме редактирования. Нажмите на самую правую кнопку( пунктирный квадрат ), ниже нарисуйте кнопку по вашему усмотрению. Теперь дважды нажмете на вашу кнопку и введите ID: ID_MYBUTTON и Prompt: Изменение координат кругаnИзменение координат круга. Ну вот и всё, кнопка готова. Теперь нужно создать функцию, которая будет выполняться при нажатии на вашу кнопку :
Выберите пункт меню View далее ClassWizard, выберите закладку Message Maps, Project: MDI, Class name: CMDIView, Object IDs: ID_MYBUTTON, Message: COMMAND и нажмите на кнопку Add Function. В ответ создастся функция void CMDIView::OnMybutton().
11. Теперь по аналогии с главой 15 создадим собственное диалоговое окно с ID: IDD_MY_DIALOG и классом CMyDialog и разместим в нём четыре Edit Box с переменными типа INT: m_DX - текущая позиция по X, m_DY - текущая позиция по Y, m_DXN - новая позииция по X, m_DYN - новая позииция по Y. Не забудте написать #include "MyDialog.h" в файлах MDIDoc.cpp и MDIView.cpp.
12. Теперь напишем код в функцие OnMybutton().
void CMDIView::OnMybutton() {
// TODO: Add your command handler code here CMDIDoc* pDoc = GetDocument();
// получаем указатель на документ CMyDialog MyD;
// создаём переменную класса CMyDialog MyD.m_DX = MyD.m_DXN = pDoc->m_X;
// инициализмруем переменные диалога MyD.m_DY = MyD.m_DYN = pDoc->m_Y; .
// MyD.DoModal();
// создаём новый диалог pDoc->m_X = MyD.m_DXN;
// получаем новые значения pDoc->m_Y = MyD.m_DYN;
// OnInitialUpdate();
// синхронизируемданные Invalidate( TRUE );
// перерисовываемэкран( вызов OnDraw() ) pDoc->SetModifiedFlag();
// ставим флаг изменения документа }
13. Ну вот и всё, программа готова. Отсюда можно взять рабочую программу, использующую MDI, в которой используется собственное диалоговое окно.
Другие работы по теме:
Экзамен 9 семестр Всего- 300 Требования стандарта по дисциплине
«Требованиям к обязательному минимуму содержания и уровня подготовки выпускника высшей школы», утв. Госкомитетом РФ по высшему образованию от 27 марта 2000 г по циклу «Дисциплины специализации» од. С. Оо: Автоматика и робототехника, согласно которым специалист после изучения дисциплины должен
Текст программы. 7 Используемые переменные. 7. Структура узла бинарного дерева. 7. Функция создания дерева. 7
Написать программу, читающую текст алгебраической формулы в инфиксной форме, включающей операции сложения, вычитания, умножения и деления, операнды (a, b, c, …, X, y, z) и круглые скобки
Синтезаторы Roland Fantom-G
Клавишные рабочие станции серии Fantom-G имеют динамическую клавиатуру (с послекасанием), полифонию 128 голосов (синтезаторная и семплерная части вместе), 16-частную мультитембральность.
Статистические таблицы. Их виды
Выполнила студентка 4 курса Шведова А.А. Статистические таблицы. Их виды Понятие статистической таблицы Статистическая таблица – это наиболее рациональная форма изложения и изображения статистической сводки. Таблица состоит из пересечения граф и строк.
Содержание и задачи статистической сводки
Сведения о каждой единице анализируемой совокупности, полученные в результате первой стадии статистического исследования, характеризуют статистическое наблюдение с различных его сторон, так как они обладают многочисленными признаками и свойствами, которые изменяются во времени и пространстве.
Мир поэзии Сайгё
Мы знаем Сайге как выдающегося японского поэта средневековья. Еще при жизни он был окружен великой славой, которая в дальнейшем продолжала расти. И не зря, потому что ясная и простая поэзия Сайге вмещает в себя сложнейший мир мыслей и чувств.
Толстой Мышь полевая и мышь городская
Лев Николаевич Толстой Мышь полевая и мышь городская Толстой Лев Николаевич Мышь полевая и мышь городская Лев Николаевич Толстой Мышь полевая и мышь городская
Стек протоколов. Интерфейсы GSM
Нижегородский государственный технический университет им. Р.Е. Алексеева «Стек протоколов. Интерфейсы GSM.» Факультет ИРИТ Кафедра ТциТ Выполнил: Лазарева Т.А.
Белинский, Олег Александрович
Введение 1 Биография 2 Творчество Список литературы Введение Олег Александрович Белинский (р. 1942(1942), в Великом Устюге) — российский театральный режиссёр.
Программирование алгоритма цифровой подписи ГОСТ Р 34.10-94
Алгоритм функции формирования и проверки подписи. Интерфейс как аппаратная или программная система сопряжения объектов с различными характеристиками. Разработка программы, которая реализует процедуру подписи сообщения и процедуру проверки подписи.
Программа для оценки шахматной ситуации
Разработка программы для оценки шахматной ситуации на доске с использованием графического интерфейса. Способы вывода результатов. Библиотека визуальных компонентов. Модульная структура приложения, его внешний вид. Последовательность работы с приложением.
SiSoft Sandra
Программное средство анализа и диагностики аппаратных средств ПК. Интерфейс программы SiSoft Sandra. Совместимость.
Характеристика качества ПО "практичность"
Изучение основных показателей практичности программного обеспечения - набора атрибутов, относящихся к объему работ, требуемых для исполнения и индивидуальной оценки предполагаемым кругом пользователей. Понятность, простота использования, изучаемость ПО.
Системное программирование в операционных системах
Создание системы, осуществляющей запуск программы по расписанию, которое хранится в реестре. Методы и средства взаимодействия с аппаратными и программными средствами, типы интерфейсов. Алгоритм работы и листинг программы, проверка ее работоспособности.
Разработка почтового клиента для операционной системы Windows
Доступ пользователей сети к электронным сообщениям, хранящимся на сервере. Описание программы, аутентификация простая, APOP и AUTH-аутентификация. Реализация функций, руководство пользователя, алгоритмы функционирования программы, графический интерфейс.
База данных учащихся
Программа "База данных учащихся" для ведения базы данных школ, учителей, учеников и их аттестацию за весть учебный год в учебных заведениях. Четыре базы данных: база школ, учителей, учеников, успеваемости, и их структура. Входные и выходные данные.
Шпаргалки по информатике
Назначение и структура DOS. Програмное обеспечение вычислительных машин. Командный процессор DOS. Назначение Windows и характеристики Windows.
Компьютерный морфологический разбор слов русского языка
Применение данной статьи важно для тех, кто хочет сделать интерфейс к своей программе на естественном языке или сделать интеллектуальный поиск информации. Для этого нужно в первую очередь сделать морфологический анализ слов текста.
Функции операционных систем персонального компьютера
Операционная система - программа, которая загружается при включении компьютера. Способы реализации интерфейса и классификация операционных систем. Организация файловой системы, типы файлов и их наименования. Понятие каталога, атрибуты файловой системы.
Windows XP Professional
Text Text Text Text Graphics Система Windows XP Professional ориентирована на корпоративных пользователей, на работу в средних и больших сетях. Этой системой могут заинтересоваться и домашние пользователи, которых не устраивают некоторые ограничения Windows XP Home Edition . Windows XP Professional является прямой наследницей систем Windows 2000, основные улучшения которых шли в следующих направлениях: Система Windows XP Professional ориентирована на корпоративных пользователей, на работу в средних и больших сетях.
Предмет и структура информатики
Б.В.Соболь Термин информатика получил распространение с середины 80-х гг. прошлого века. Он состоит из корня inform - «информация» и суффикса matics
Операционная оболочка
- часть операционной среды, определяющая интерфейс пользователя, его реализацию (текстовый, графический и т.п.), командные и сервисные возможности пользователя по управлению прикладными программами и компьютером.
Что такое интерфейс
Для наиболее простого соединения периферийного устройства с шиной компьютера следует использовать порты ввода-вывода. Порт ввода представляет собой ряд тристабильных вентилей, а порт вывода является регистром.
Телевидение межсетевого протокола
(Интернет-телевидение или online-TV) - система, использующая двухсторонний цифровой сигнал радиопередачи, который посылается через переключенную телефонную или кабельную сеть посредством широкополосного подключения. Оно базируется на декодировании видео IP и преобразовании его в стандартные телевизионные сигналы.
Язык программирования Turbo Pascal
Содержание 1.1 Описание предметной области решаемой задачи 3 1.2 Функции, реализуемые задачей 3 1.3 Входные документы, необходимые для решения задачи 3