48633 (608697)

Файл №608697 48633 (Разработка программного приложения с использованием интерфейса Windows API)48633 (608697)2016-07-30СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Реферат

Пояснительная записка содержит в себе стр.18, 2 приложения.

При выполнении курсовой работы на тему ”Разработка програмного приложения с использованием интерфейса Windows API” ставилась задача обучения программированию на уровне системы с использованием стандартных функций Windows.

Объект исследования – использования интерфейса программирования Windows

Метод исследования – изучение литературы, составления и отладка приложений и отдельных модулей на компьютере.

Разработанная программа служит наглядной иллюстрацией техники создания графики при помощи API функций экспортируемых библиотекой GDI32.DLL. Концепция использования API не зависит от выбранного языка программирования, то есть, одинакова для всех абсолютно языков программирования разработанных под операционную систему Windows. Программа также не использует никаких специфических объектно ориентированных библиотек для конкретно выбранного языка типа MFC и поэтому ее части могут быть безболезненно и с наименшей затратой времени переписанны на любой другой язык.

Для программной реализации проекта использовалась среда программирования Visual C++ 6.0.

КЛЮЧЕВЫЕ СЛОВА: ПРОЦЕДУРА, ОБРАБОТЧИК, API ФУНКЦИИ, КОНТЕКСТ УСТРОЙСТВА, ХЕНДЛ, КИСТЬ, CALLBACK-ПРОЦЕДУРА, СООБЩЕНИЕ

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1 АНАЛИЗ, ПОСТАНОВКА ЗАДАЧИ И СФЕРА ЕЕ ПРИМЕНЕНИЯ

2 КРАТКАЯ ХАРАКТЕРИСТИКА ПРОГРАММИРОВАНИЯ ПОД WIN32

3 ОСНОВНАЯ ЧАСТЬ

4 РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

4.3 СИСТЕМНЫЕ ТРЕБОВАНИЯ

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ


ВВЕДЕНИЕ

С момента появления первых образцов персональных компьютеров прошло не так уж и много времени, но сейчас без них уже немыслимо огромное количество областей человеческой деятельности - экономика, управление, наука, инженерное дело, издательское дело, образование, культура и т.д.

Интерес к персональным компьютерам постоянно растет, а круг их пользователей непрерывно расширяется.

Одновременно развиваются языки программирования . С 1985 года язык С был дополнен возможностями объектно-ориентированного программирования (ООП). Новая версия языка была названа С++. Использования ООП позволило не только определить типы данных пользователя, но и задать операции для этих типов.

На основе языка С++ разработаны визуальные системы С++ BUILDER, VISIAL C++. Использование этих систем позволило значительно упростить создания интерфейса, работу с базами данных и т.д. Несмотря на эти нововведения, по-прежнему программируют на WinAPI, который используется для решения системных задач. Только про его использование позволяет создавать программы, использующие всю мощь Windows, которая является сейчас самой популярной операционной системой.

Компьютерная графика является одним из передовых направлений в области технологий программного обеспечения. Сегодня нет человека имеющего отношения к компьютера, который бы не знал что это такое. Интерфейс программирования (API) для создания графики предоставляется самой операционной системой, точнее ее компонентом называемым “framebuffer”. В операционной системе Windows framebuffer называется GDI, его главная библиотека, предоставляющая программисту функции для программирования, называется gdi32.dll и находится в системном каталоге ОС. GDI предоставляет полный контроль над прорисовкой экранного окна, что предоставляет поистине безграничные возможности программирования внешнего вида программ.


1 Анализ, постановка задачи и сфера ее применения

Концепция операционной системы Windows состоит в том, что программа взаимодействует с пользователем в интерактивном режиме. Это реализуется с помощью графических интерфейсов. Windows имеет набор стандартно выглядящих элементов управления и отлаженный механизм работы с ними. Но часто возникает нужда добавить необходимый несуществующий элемент управления или просто изменить внешний вид элемента. Многие программы такие как проигрователи мультимедия еще с времен Windows 95 используют свой графичский интерфейс пользователя для придания большей привлекательности со стороны пользователей. Каждый разработчик пытается вложить в программу что-то свое, необычное, не похожее на остальных. Конечно, функциональность играет основную роль, но удобный и красивый интерфейс не менее важен и проблема это довольно серъезная.

Задача курсовой работы состоит в разработке на языке программирования С++ в среде программирования Microsoft Visual C++ программы для отображения часов реального времени в цифровом и аналоговом виде.

Программа должна обладать следующими функциями:

  • Возможность выбора режима отображения часов(аналоговый или цифровой вид)

  • Изменение размеров часов

  • Изменение цвета фона, на котором рисуются часы

  • Изменение цвета цифр-для цифрового вида, цвета стрелок –для аналогового вида


2 КРАТКАЯ ХАРАКТЕРИСТИКА ПРОГРАММИРОВАНИЯ ПОД WIN32

Все Windows-программы начинают выполнение с вызова функции WinMain().

Функция окна

Все Windows-программы должны содержать специальную функцию, которая не используется в самой программе, но вызывается самой операционной системой. Эту функцию обычно называют функцией окна, или процедурой окна. Она вызывается Windows, когда системе необходимо передать сообщение в программу.

Именно через нее осуществляется взаимодействие между программой и системой. Функция окна передает сообщение в своих аргументах. Согласно терминологии Windows, функции, вызываемые системой, называются функциями обратного вызова. Таким образом, функция окна является функцией обратного вызова.

Помимо принятия сообщения от Windows, функция окна должна вызывать выполнение действия, указанного в сообщении.

Конечно, программа не обязана отвечать на все сообщения, посылаемые Windows. Поскольку их могут быть сотни, то большинство сообщений обычно обрабатывается самой системой, а программе достаточно поручить Windows выполнить действия, предусмотренные по умолчанию.

В большинстве Windows-программ задача создания функции окна лежит на программисте. Но в любом случае, если сообщение получено, то программа должна выполнить некоторое действие.

Хотя она может вызывать для этого одну или несколько API-функций, само действие было инициировано Windows.

Поэтому именно способ взаимодействия с операционной системой через сообщения диктует общий принцип построения всех программ для Windows.

Цикл сообщений

Как объяснялось выше, Windows взаимодействует с программой, посылая ей сообщения. Все приложения Windows должны организовать так называемый цикл сообщений (обычно внутри функции WinMain()). В этом цикле каждое необработанное сообщение должно быть извлечено из очереди сообщений данного приложения и передано назад в Windows, которая затем вызывает функцию окна программы с данным сообщением в качестве аргумента. В традиционных Windows-программах необходимо самостоятельно создавать и активизировать такой цикл. Он является неотъемлемой частью любого приложения Windows. Процесс получения и обработки сообщений может показаться чересчур сложным, но тем не менее ему должны следовать все Windows-программы.

Класс окна

Каждое окно в Windows-приложении характеризуется определенными атрибутами, называемыми классом окна. (Здесь понятие “класс” не идентично используемому в С++. Оно, скорее, означает стиль или тип.) В традиционной программе класс окна должен быть определен и зарегистрирован прежде, чем будет создано окно. При регистрации необходимо сообщить Windows, какой вид должно иметь окно и какую функцию оно выполняет. В то же время регистрация класса окна еще не означает создание самого окна. Для этого требуется выполнить дополнительные действия.

Типы данных в Windows

В Windows-программах вообще не слишком широко применяются стандартные типы данных из С или С++, такие как int или char*. Вместо них используются типы данных, определенные в различных библиотечных (header) файлах. Наиболее часто используемыми типами являются HANDLE, HWND, BYTE, WORD, DWORD, UNIT, LONG, BOOL, LPSTR и LPCSTR. Тип HANDLE обозначает 32-разрядное целое, используемое в качестве дескриптора. Есть несколько похожих типов данных, но все они имеют ту же длину, что и HANDLE, и начинаются с литеры Н. Дескриптор – это просто число, определяющее некоторый ресурс. Например, тип HWND обозначает 32-разрядное целое – дескриптор окна. Тип BYTE обозначает 8-разрядное беззнаковое символьное значение, тип WORD – 16-разрядное беззнаковое короткое целое, тип DWORD – беззнаковое длинное целое, тип UNIT - беззнаковое 32-разрядное целое. Тип LONG эквивалентен типу long. Тип BOOL обозначает целое и используется, когда значение может быть либо истинным, либо ложным. Тип LPSTR определяет указатель на строку, а LPCSTR – константный (const) указатель на строку.

Общие концепции программирования графики в Windows

С точки зрения программиста Windows является системой, не зависящей от устройств (device independent). Эту независимость со стороны Windows обеспечивает библиотека GDI32.dll, а со стороны устройства - драйвер этого устройства. С точки зрения программы связующим звеном между программой и устройством является контекст устройства (Device Context - DC). Если программе нужно осуществить обмен с внешним устройством, программа должна оповесить GDI о необходимости подготовить устройство для операции ввода-вывода. После того, как устройство подготовленно, программа получает хэндл контекста устройства, т.е. хэндл структуры, содержащей набор характеристик этого устройства. В этот набор входят: bitmap(битовая карта, изображение), отображаемый в окне, перо для прорисовки линий, кисть, палитра, шрифти т.д. Программа никогда напрямую не обращается к контексту устройства, она обращается к нему опосредствованно, через определенные функции. После того, как все действия произведены, и необходимость в использовании устройства отпала, программа должна освободить контекст устройства, чтобы не занимать память. Есть еще одна причина, из-за которой необходимо освобождать контекст устройства. В системе может существовать одновременно только ограниченное число контекстов устройств. Если контекст устройства не будет освобождаться после операций вывода, то через несколько перерисовок окна система может повиснуть. Так что не стоит забывайть освобождать контексты устройств!

Когда программа требует контекст устройства, она получает его уже заполненным значениями по умолчанию. Объект в составе контекста называется текущим объектом. Само слово - текущий - говорит о том, что контекст устройства можно изменить. Программа может создать новый объект, скажем, bitmap или шрифт, и сделать его текущим. Замещенный объект автоматически из памяти не удаляется, его необходимо позже удалить отдельно. Само собой разумеется, что программа может получить характеристики текущего устройства. А вот изменить эти характеристики, увы, можно только через замену объекта (впрочем, это и так понятно).

В Windows поддерживаются несколько типов контекстов устройств. Одним из них является контекст дисплея.

Windows поддерживает три типа контекста дисплея – контекст класса, приватный контекст и общий контекст. Первые два типа используются в приложениях, которые выводят на экран большое количество информации. Ярким примером такого рода приложений являются настольные издательские системы, графические пакеты и т.д.

Приложения, которые не очень интенсивно работают с экраном, испольуют общий контекст. Контекст класса является устаревшим и поддерживается только для обеспечения совместимости с предыдущими версиями Windows. Microsoft не рекомендует использовать его при разработке новых приложений и рекомендует использовать только приватный контекст.

Контексты устройств хранятся в кэше, управляемом системой. Хэндл общего контекста программа получает с помощью функций GetDC(), GetDCEx() или BeginPaint(). После того, как программа отработает с дисплеем, она должна освободить контекст, вызвав функцию ReleaseDC() или EndPaint() (в случае, если контекст получался с помощью BeginPaint()). После того, как контекст дисплея освобожден, все изменения, внесенные в него программой, теряются и при повторном получении контекста все действия по изменению контекста необходимо повторять заново.


3 ОСНОВНАЯ ЧАСТЬ

Вся работа по выводу времени разбивается на две части: вывод времени в аналоговой и цифровой форме. Вывод времени в цыфровой форме сложности не представлят, тогда как вывод в аналоговой форме может быть описан довольно большим числом функций. Ниже приведена функция для вывода времени в цифровой форме.

void DigPaint(HWND hWnd, HDC hdc) { SYSTEMTIME stime; //структура для записи текущего времери GetLocalTime(&stime);//функция получения текущего времени

char cBuffer[100]; //переменные для хрениения строки текста

char cBufferd[100]; HFONT fontdig1,fontdig2; //описатели для сознания нового шрифта SetBkMode(hdc,TRANSPARENT); // изменение режима отображения фона текста wsprintf(cBuffer,"%d%s%d%s%d",stime.wHour," : ", stime.wMinute,(PSTR)stime.wSecond); wsprintf(cBufferd,"%d%s%d%s",stime.wDay," day ", stime.wMonth," month "); //перевод всех полученных значений в строку fontdig1= CreateFont(50,26,0,0, //создание нового шрифта FW_BOLD, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH, "font1" ); SelectObject(hdc,fontdig1); // функция для выбора вышесозданного шрифта TextOut(hdc,70,105, cBuffer,strlen(cBuffer)); // вывод текста DeleteObject(fontdig1); //функция удаление шрифта fontdig2= CreateFont(20,15,0,0, FW_BOLD, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH, "font2" ); SelectObject(hdc,fontdig2); TextOut(hdc,115,85,cBufferd,strlen(cBufferd)); DeleteObject(fontdig2); }

Приведенная часть программы показывает простоту показывает простоту получения и использования времени в Windows , а также простоту вывода полученного времени на экран. Сначала мы обьявляем сируктуру SYSTEMTIME для хранения времени, даты и некоторых дополнительных параметров.

typedef struct _SYSTEMTIME {

Характеристики

Тип файла
Документ
Размер
20,66 Mb
Тип материала
Учебное заведение
Неизвестно

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов курсовой работы

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6374
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее