КУРСОВОЙ ПРОЕКТ
ПО ДИСЦИПЛИНЕ
«Технология программирования»
НА ТЕМУ:
«Анализ треугольника»
Ставрополь 2011
В связи с тем, что сегодня уровень сложности программного обеспечения очень высок, разработка приложений Windows с использованием только одного какого-либо языка (например, языка С) значительно затрудняется. Программист должен затратить массу времени на решение стандартных задач по созданию оконного интерфейса. Реализация технологии связывания и встраивания объектов L потребует от программиста еще более сложной работы. Чтобы облегчить работу программиста, все современные компиляторы языка С++ содержат специальные библиотеки классов. Такие библиотеки включают в себя практически весь программный интерфейс Windows и позволяют пользоваться при программировании средствами более высокого уровня, чем обычные вызовы функций. За счет этого значительно упрощается разработка приложений, имеющих сложный интерфейс пользователя, облегчается поддержка технологии L и взаимодействие с базами данных. Кроме того, стало проще производить отладку программ, написанных на С++. Вместо одной огромной монотонной программы мы имеем дело с набором аккуратных и удобных в обращении частей. Современные интегрированные средства разработки приложений Windows позволяют автоматизировать процесс создания приложения. Для этого используются генераторы приложений. Программист отвечает на вопросы генератора приложений и определяет свойства приложения – поддерживает ли оно многооконный режим, технологию L, справочную систему. Генератор приложений создаст приложение, отвечающее требованиям, и предоставит исходные тексты. Пользуясь им как шаблоном, программист сможет быстро разрабатывать свои приложения. Подобные средства автоматизированного создания приложений фирма Mirsft включила в продукт Visul ++, разработав библиотеку MF (MirsftFundtinlsss). MF– замечательный пакет, состоящий из заранее написанного и готового к работе кода. Заполнив несколько диалоговых панелей, можно указать характеристики приложения его тексты, снабженные обширными комментариями. MFWizrd позволяет создавать однооконные и многооконные приложения, а также приложения, не имеющие главного окна, – вместо него используется диалоговая панель. Прикладную часть приложения программисту придется создавать самостоятельно. Исходный текст приложения станет только основой, к которой нужно подключить основное.
1. Теоретические основы курсового проекта
1.1 Теоретические основы разработки Windows-приложений с использованием библиотеки MF
Библиотека MF (Mirsft Fundtin lsss) – это набор классов ++ и глобальных функций, созданных для быстрой разработки Windows-приложений. Эта библиотека упрощает программирование под Windows и сокращает время разработки. Код, созданный с ее использованием, легко переносить на другие платформы. Библиотека MF упрощает решение таких сложных задач, как создание приложений, ориентированных на технологию tiv или на Интернет. С ее помощью легко программировать элементы интерфейса – предварительный просмотр документов перед печатью, страницы свойств, контекстные меню и настраиваемые панели инструментов с всплывающими подсказками.
Общий для всех 32-разрядных Windows-платформ интерфейс прикладного программирования называется Win32. Win32 I – это набор функций, структур, сообщений, макросов и интерфейсов, с помощью которых можно создавать программы для Win32. Так как Win32 I – это набор С-функций, их можно использовать в своей программе, просто включив в код соответствующий заголовочный файл. До появления MFWindows-программы применяли только средства Win32 I, так что разработка занимала много времени. Опытные программисты старались ускорить ее, создавая библиотеки с кодом основных, часто используемых функций. С появлением MF такие библиотеки стали доступны всем, кто пишет программы на ++.
Классы MF, инкапсулирующие основные функции Win32 I, упрощают и ускоряют разработку Windows-приложений. Эти классы реализуют сложные функции, скрывающиеся за понятным и компактным интерфейсом.
Например, концепция окна представлена классом MF Wnd. Другими словами, класс Wnd инкапсулирует описатель HWND, определенный в Win32 тип данных, содержащий сведения об окне. Это значит, что в классе Wnd есть переменная-член типа HWND, а его функции-члены замещают те функции Win32 I, которым HWND передается в качестве параметра. Например, такая функция Win32 I:
BLShwWindw (HWNDhWnd, intnmdShw);заменена в MF на
BLWnd: ShwWindw (intnmdShw);Функции-члены классов библиотеки MF и заменяемые ими функции Win32 I обычно называются одинаково.
MF скрывает некоторые низкоуровневые элементы, но не запрещает их использовать там, где это необходимо. Инкапсуляция обеспечивает также защиту значений указателей, например описателей файлов и окон, от повреждения или от неправильного их использования.
Библиотека MF подходит для создания любых приложений, кроме самых простых. Однако даже для таких программ весьма полезны некоторые классы этой библиотеки, например строковые или классы наборов.
В MF представлены не все функции Win32 I, поэтому иногда требуется их прямой вызов. Это необходимо только при низкоуровневом доступе к системе. Например, если Вы разрабатываете утилиту, изменяющую учетную запись пользователя в сети, Вам придется применять сетевые функции Win32 I, так как в MF нет классов, обеспечивающих доступ к таким функциям.
Библиотека MF содержит большую иерархию классов, написанных на С++. В ее вершине находится класс bjt, который содержит различные функции, используемые во время выполнения программы и предназначенные, в частности, для предоставления информации о текущем типе во время выполнения, для диагностики, и для сериализации.
Если указатель или ссылка ссылается на объект, производный от класса bjt, то в этом случае предусмотрен механизм определения реального типа объекта с помощью макроса RUNTIM_LSS(). Хотя в С++ имеется механизм RTTI, механизм, реализованный в MF, намного более эффективен по производительности. Каждый класс, производный от bjt, может по запросу проверить свое внутреннее состояние и выдать диагностическую информацию. Это интенсивно используется в MF при отладке.
Сериализация – это механизм, позволяющий преобразовать текущее состояние объекта в последовательный поток байт, который обычно затем записывается на диск, и восстановить состояние объекта из последовательного потока, обычно при чтении с диска. Это позволяет сохранять текущее состояние приложения на диске, и восстанавливать его при последующем запуске. Некоторые классы порождаются непосредственно от bjt. Наиболее широко используемыми среди них являются mdTrgt, Fil, D, GDIbjt и Mnu. Класс mdTrgt предназначен для обработки сообщений. Класс Fil предназначен для работы с файлами. Класс D обеспечивает поддержку контекстов устройств. О контекстах устройств мы будем говорить несколько позднее. В этот класс включены практически все функции графики GDI. GDIbjt является базовым классом для различных DGI-объектов, таких как перья, кисти, шрифты и другие. Класс Mnu предназначен для манипуляций с меню. От класса mdTrgt порождается очень важный класс Wnd. Он является базовым для создания всех типов окон, включая масштабируемые («обычные») и диалоговые, а также различные элементы управления. Наиболее широко используемым производным классом является FrmWnd. Как Вы увидите в дальнейшем, в большинстве программ главное окно создается с помощью именно этого класса. От класса mdTrgt, через класс WinThrd, порождается, наверное, единственный из наиболее важных классов, обращение к которому в MF-программах происходит напрямую: Win. Это один из фундаментальных классов, поскольку предназначен для создания самого приложения.
Большинство функций, вызываемых в MF-программе, являются членами одного из классов, определенных в библиотеке. Большинство функций I доступны через функции-члены MF. Тем не менее, всегда можно обращаться к функциям I напрямую. Иногда это бывает необходимым, но все же в большинстве случаев удобнее использовать функции-члены MF.
В библиотеке есть ряд глобальных функций. Все они начинаются с префикса f. Когда MF только разрабатывалась, то проект назывался F, litin Frmwrk. После ряда существенных изменений F была переработана в MF, но прежнее название сохранилось во многих идентификаторах библиотеки и в названиях файлов. Например, очень часто используется функция fMssgB(), отображающая заранее определенное окно сообщения. Но есть и член-функция MssgB(). Таким образом, часто глобальные функции перекрываются функциями-членами.
Все MF-программы включают заголовочный файл FWIN.H. В нем, а также в различных вспомогательных файлах, содержатся описания классов, структур, переменных и других объектов MF. Он автоматически подключает большинство заголовочных файлов, относящихся к MF, в том числе и WINDOWS.H, в котором определены все функции Windows I и другие объекты, которые используются при традиционном программировании на С и «чистом» I.
Windows взаимодействует с программой, посылая ей сообщения.
программа треугольник площадь прямоугольный
1.1.3 Цикл сообщений
Все приложения Windows должны организовать так называемый циклсообщений (обычно внутри функции WinMin()). В этом цикле каждое необработанное сообщение должно быть извлечено из очереди сообщений данного приложения и передано назад в Windows, которая затем вызывает функцию окна программы с данным сообщением в качестве аргумента. В традиционных Windows-программах необходимо самостоятельно создавать и активизировать такой цикл. При использовании MF это также выполняется автоматически. Однако важно помнить, что цикл сообщений все же существует. Он является неотъемлемой частью любого приложения Windows.