Tw-city.info

IT Новости
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Программирование в windows

Введение в создание оконных приложений

Программирование в Windows основывается на использовании функций API (Application Program Interface, т.е. интерфейс программного приложения).

Программа для Windows в значительной степени состоит из таких вызовов. Все взаимодействие с внешними устройствами и ресурсами операционной системы происходит посредством таких функций.

Программный интерфейс приложений

Windows API (Application Programming Interfaces) — общее наименование целого набора базовых функций интерфейсов программирования приложений операционных систем семейств Microsoft Windows.

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

Все основные функции Windows объявляются в заголовочных файлах. Главный заголовочный файл называется WINDOWS.H, и в этом файле содержится множество ссылок на другие заголовочные файлы.

Основное отличие функций API от библиотечных функций С: код библиотечных функций связывается с кодом программы пользователя, а код функций API остается вне программы пользователя в динамически подключаемых библиотеках (DLL – Dynamic Link Library), что позволяет создавать более компактный и эффективный код приложений.

При запуске программы Windows она взаимодействует с операционной системой посредством процесса «динамического связывания». Большая часть динамических библиотек DLL расположена в каталоге WINDOWSSYSTEM.

При компоновке программы для Windows, чтобы сделать ее исполняемой, необходимо связывать ее с «библиотеками импорта», поставляемыми в составе среды программирования (IDE – Integrated Development Environment), которой может являться, в частности, Microsoft Visual Studio. Библиотеки импорта содержат имена всех функций Windows из динамически подключаемых библиотек и ссылки на них. Компоновщик использует эту информацию для создания в исполняемом EXE-файле таблицы, которую Windows использует при загрузке программы для настройки адресов функций API.

Графический интерфейс пользователя

Графический интерфейс пользователя (Graphical User Interface, GUI) еще называют «визуальный интерфейс» или «графическая оконная среда».

GUI делает возможным использование графики на растровом экране. Графика дает лучшее восприятие элементов управления на экране, визуально богатую среду для передачи информации. В GUI экран становится устройством ввода и показывает различные графические объекты в виде картинок и конструкций для ввода информации, таких как кнопки или полосы прокрутки. Используя клавиатуру и манипулятор (мышь, тачпад), пользователь может непосредственно оперировать объектами на экране. Графические объекты можно перетаскивать, кнопки можно нажимать, полосы прокрутки можно прокручивать. Взаимодействие между пользователем и программой становится более тесным.

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

Любая программа для Windows имеет окно — прямоугольную область на экране, в котором приложение отображает информацию и получает реакцию от пользователя. Окно идентифицируется заголовком. Большинство функций программы запускается посредством меню. Слишком большой для экрана объем информации может быть просмотрен с помощью полос прокрутки. Некоторые пункты меню вызывают появление окон диалога, в которые пользователь вводит дополнительную информацию.

Программирование Windows-приложений тесно связано с понятиями объектно-ориентированного программирования. Главным объектом в операционной системе Windows является окно. Окно может содержать элементы управления: кнопки, списки, окна редактирования и др. Эти элементы, по сути, также являются окнами, но обладающими особыми свойствами.

Активное окно – окно, получающее реакцию от пользователя в данный момент.

Основными элементами окна являются

  • 1 — строка заголовка title bar
  • 2 — строка меню menu bar
  • 3 — системное меню system menu
  • 4 — кнопка сворачивания окна minimize box
  • 5 — кнопка разворачивания окна maximize box
  • 6 — рамка изменения размеров sizing border
  • 7 — клиентская область client area
  • 8 — горизонтальная и вертикальная полосы прокрутки scroll bars

Многозадачность

Многозадачность ( multitasking ) — свойство операционной системы обеспечивать возможность параллельной (или псевдопараллельной) обработки нескольких процессов.

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

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

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

Процессы и потоки

Процессом ( process ) называется экземпляр программы, загруженной в память. Экземпляр программы может создавать потоки ( thread ), которые представляют собой последовательность инструкций на выполнение.

Выполняются не процессы, а именно потоки. Любой процесс имеет хотя бы один поток. Этот поток называется главным (основным) потоком приложения .

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

Читать еще:  Программирование на vba в microsoft office

Все потоки ранжируются по приоритетам. Приоритет потока обозначается числом от 0 до 31, и определяется исходя из приоритета процесса, породившего поток, и относительного приоритета самого потока. Таким образом, достигается наибольшая гибкость, и каждый поток в идеале получает столько времени, сколько ему необходимо.

Дескрипторы

Дескриптор (описатель) объекта — служебная структура данных, представляющая собой беззнаковое целое число и служащая для идентификации различных объектов. Дескриптор представляет собой указатель на некоторую системную структуру или индекс в некоторой системной таблице.

Примеры дескрипторов, описанных в заголовочном файле windows.h

Контекст устройства

GDI – графический интерфейс устройства. Функции системной библиотеки GDI32.dll используются для вывода графики на экран.

Дескриптор контекста устройства — это паспорт конкретного окна для функций GDI. Контекст устройства фактически является структурой данных, которая внутренне поддерживается GDI. Он связан с конкретным устройством вывода информации (принтер, дисплей). Что касается дисплея, то в данном случае контекст устройства обычно связан с конкретным окном на экране.

Программирование под Windows с использованием Win API

Основные понятия и термины, используемые при разработке Windows приложений

  • USER (16, 32) .dll – функции ввода с клавиатуры мыши, ввод через интерфейс и т.д. (взаимодействие приложений с пользователями и средой Windows).
  • KERNEL (16, 32) .dll – функции операционной системы (память, распределение системных ресурсов, загрузка).
  • GDI (16, 32) .dll – графический интерфейс (функции создания и отображения графических объектов).

GUI (Graphics User Interface) – стандартный графический интерфейс пользователя. Это та часть Windows , которая обеспечивает поддержку аппаратно-независимой графики.

API (Application Program Interface) — интерфейс прикладных программ (набор функций, сосредоточенных в ядре Windows и дополнительных библиотеках).

DLL (Dynamic Link Libraries) — библиотека динамической компоновки. Функции API содержатся в библиотеках динамической загрузки.

DDE – динамический обмен данными .

Нотация Windows («венгерская нотация Чарльза Симони»)

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

  1. мнемоническое значение – идентификатор должен легко запоминаться;
  2. смысловое значение – роль идентификатора должна быть ясна из его названия;
  3. преемственность – похожие объекты должны иметь похожие идентификаторы;
  4. быстрота принятия решения – придумывание, ввод и редактирование идентификатора не должны занимать много времени.

Некоторые префиксы венгерской нотации:

Часто используемые типы данных Windows:

Создание простейшего Windows-приложения с использованием Win API

Элементы Windows-приложения

Построение приложения Windows включает выполнение следующих этапов:

  1. Создание WinMain(. ) и связанных с ней функций на языке C или C++.
  2. Создание описаний меню и всех дополнительных ресурсов, помещение описаний в файл описания ресурсов.
  3. Создание уникальных курсоров, пиктограмм и битовых образов.
  4. Создание диалоговых окон.
  5. Создание файла проекта.
  6. Компиляция и компоновка всего кода.

Простейшая программа. Создание и вывод Windows-окна на экран

Создадим пустой проект Windows- приложения с помощью мастера:

  1. File New Project.
  2. Project types: Win32 Templates: Win32 Project.
  3. Ok.
  4. Установить галочку Empty project.
  5. Добавить в проект файл *.cpp.
  6. Project Properties. Вкладка Configuration Properties General.
  7. Значение поля Character Set устанавливаем Use Multi-Byte Character Set.

Добавим следующий код:

Скомпилируем и запустим программу. На экране появится Windows-окно.

Комментарии к программе

Все приложения Windows должны содержать два основных элемента: функцию WinMain(. ) и функцию окна WndProc .

Функция WinMain(. ) служит точкой входа в приложение. Эта функция отвечает за следующие действия:

  1. регистрацию типа класса окон приложения;
  2. выполнение всех инициализирующих действий ;
  3. создание и инициализацию цикла сообщений приложения;
  4. завершение программы (обычно при получении сообщения WM_QUIT ).

Функция WndProc отвечает за обработку сообщений Windows. Эта часть программы является наиболее содержательной с точки зрения выполнения поставленных перед программой задач. Если мы хотим, чтобы программа обращала на наши действия внимание, то необходимо добавить ветки case для оператора switch в оконную процедуру WndProc . Например, если мы хотим, чтобы наше приложение обращало внимание на щелчок левой кнопкой мыши – добавляем ветку case WM_LBUTTONDOWN . В настоящий момент в оконной процедуре происходит только обработка сообщения WM_DESTROY . Больше Windows-окно пока ничего делать не умеет.

Заголовочный файл windows.h нужен для любой традиционной Windows программы на C. Именно в нем содержатся разные определения констант ( WM_DESTROY и т. д.).

Программирование в среде WINDOWS. 1

Программирование в среде WINDOWS. 1

Графические функции GDI и средства GDI. 2

Аппаратная независимость. 3

Схема процесса создания Windows программы. 4

Файл определения модуля. 5

Сообщения. 6

Окна. 8

Меню. 20

Диалоговые панели. 34

Органы управления. 45

Контекст. 67

Логическая и физическая системы координат. 84

Программирование в среде WINDOWS.

Введение.

Вся внутренняя деятельность системы Windows в значительной степени базируется на трех подсистемах:

системе графического приборного интерфейса;

системе обеспечения многозадачного режима;

системе обеспечения аппаратной независимости.

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

Графический Приборный Интерфейс.

Графический приборный интерфейс, или GDI (Graphics Device Interf/асе), является связующим звеном между программой и графическим устройством вывода и служит для представлении программой визуально ориентированной информации пользователю. GDI представляет собой библиотеку процедур, которые обеспечивают создание графического интерфейса и управление им. Эта библиотека доступна как для Windows так и для любой прикладной программы.

Читать еще:  Создание 3д игр без программирования

Display Context.

Функции GDI работают с различными устройствами ввода. При этом имеется необходимость хранения большого количества информации о данном устройстве вывода, его состоянии, а также о текущих графических средствах, используемых программой. Вся эта информация хранится в специально организованной структуре данных, которая называется dispaly context или device context.

Использование DC обусловлено следующими причинами. Прежде .всего, в каждый конкретный момент времени используется лишь небольшая часть возможностей, Рассмотрим качестве примера рисование прямоугольника. Для того чтобы полностью контролировать представление прямоугольника на охране, следует определить его положение в окне. Нужно также определить цвет и границы прямоугольника. Далее программист может пожелать переопределить вид границы (например, сделать ее непрерывной или пунктирной линией). Дополнительно следует определить, валяется ли прямоугольник закрашенным и если да, то каким цветом. И, наконец, программа должна управлять взаимодействием прямоугольника с уже существующими ив экране рисунками.

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

Очень важ­ными являются понятия отсекание.

В системе Windows для любого открытого на экране окна существует вероятность соседства (или даже перекрали») с одним или несколькими окнами. GDI управляет своими функциями таким образом, чтобы не допустить графического вывода вне границ окна, которое использует функции GDI. Более того, GDI обеспечивает графический вывод в пределах рабочей области окна, чтобы не нарушить графические объекты нерабочей области. Такой подход и называется отсеканием. Действие функций графического вывода ограничено областью отсекания. Windows устанавливает параметры области отсекания перед передачей его прикладной программе. Как уже отмечалось, в Windows для программы имеются две возможности получения доступа к DC: функции BeginPalnt и GeiDC. При использовании функции BeginPaiot размеры области отсекания устанавливаются так, чтобы содержать именно тот участок рабочей области окна, который должен быть обновлен. В случае использования функции GetDC область отсекания охватывает всю рабочую область окна. Программа может использовать функции GDI для изменения размеров области отсекания, но она не в состоянии сделать область отсекания больше видимой части рабочей области окна. Таким образом, Windows охраняет множественные окна от вмешательства в дела (т.е. рабочие области) друг друга.

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

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

В Window существуют 8 методов (режимов) масштабирования.

Аппаратная независимость

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

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

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

Win 10 для программиста: полный гайд по новым фичам

Содержание статьи

Пока не появился финальный релиз Windows 10 и Visual Studio 2015, мы старались по максимуму подготовить читателя к тем фичам, которые были обещаны Майкрософтом нашему брату-программисту. И вот десятая винда вышла в свет, и ее уже установили миллионы пользователей, среди которых, как мне доподлинно известно, есть программисты :). А это значит, что пора сравнить ожидания и реальность и посмотреть на те возможности, которые нам теперь доступны: Xamarin, Apache Cordova, UWP, поддержка Python, .NET Native, DirectX 12, VS Code, Windows IoT и многое другое. Вперед!

Visual Studio 2015 — качай Community-версию!

А все потому, что Community-версия содержит практически все основные возможности профессиональной версии и их с избытком хватает для разработки любых приложений. Перед Express-версиями она выигрывает тем, что содержит весь комплект тулз и тебе не надо устанавливать отдельные наборы для Windows, Web и для Desktop.

Термоядерная кросс-платформенность

Разрабатывать кросс-платформенные мобильные приложения позволяет платформа Xamarin. С ее помощью можно создавать приложения для трех основных мобильных операционных систем (Windows Phone, iOS, Android), используя одну кодовую базу на языке C#. Таким образом, Xamarin служит слоем между C# и нативными API разнообразных операционных систем. Поддержка Xamarin в студии реализована через продукт Xamarin for Visual Studio, начальный выпуск которого включен в Visual Studio 2015. После создания проекта на платформе Xamarin будет предложено скачать дополнительные инструменты: Android SDK, Xamarin Studio, GTK# for .NET; а также добавить аккаунт.

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

Читать еще:  Объектно ориентированное программирование в vba

Эмулятор Xamarin

Еще один способ создания кросс-платформенных мобильных приложений заключается в использовании инструментов Apache Cordova, предоставляющих средства для создания мобильных приложений на веб-языках: HTML, CSS, JavaScript. Благодаря Apache Cordova программист может, используя JavaScript, разрабатывать приложения для Windows Phone, Android, iOS. При этом приложения будут иметь доступ к определенным API конкретной операционной системы. Это достигается подключением модулей, предназначенных для работы с каждой операционной системой.

Теперь, когда JavaScript — полноправный язык Visual Studio 2015 (Игорь Антонов, чувствую, в восторге ;). — Прим. ред.), студия предоставляет разработчику все содержащиеся в ней передовые возможности по написанию, редактированию и отладке кода, JavaScript IntelliSense, проводник DOM, консоль JavaScript, точки останова, контрольные значения, языковые стандарты, а также многое другое.

Эмулятор Apache Cordova

Кросс-платформенные приложения могут быть созданы и с помощью Visual C++. Пока только для двух платформ: Windows 10 и Android. Но Microsoft обещает добавить возможность разработки приложений на C++ для iOS из Студии в ближайшее время. По сути, C++ достаточно низкоуровневый язык, и написанный на нем код выполняется на большинстве платформ без дополнительных извращений. Поэтому большое значение имеют написанные на C++ библиотеки, которые используются в приложениях, предназначенных для разных платформ.

Visual Studio 2015 содержит шаблоны приложений на C++ как для Windows, так и для Android. В последнем случае создаются приложения Android Native Activity с использованием NDK. Такие приложения стоит создавать, только когда программе требуется работа с устройством на низком уровне, например в приложениях, в которых реализуются кастомные системы управления ресурсами, в том числе оперативной памятью, и графический пайплайн. В других же случаях рекомендуется использовать высокоуровневые средства, это упростит разработку, и к тому же скорость выполнения не будет уступать оптимизированному нативному коду.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Средства программирования в Windows

Любители программирования в среде Windows тратят много времени на то, чтобы раздобыть себе коллекцию компиляторов с разными языками программирования, постоянно ищут их бесплатные версии, так как утилиту, скомпилированную коммерческим компилятором, вряд ли примут на продажу. В этом плане они считают Linux более продвинутой системой для разработчиков, ведь там так много всего для разработки, да еще даром. Так ли уж бедна Windows по части инструментария для разработки новых программ?

Возьмем в качестве примера «нетленную» Windows XP. В ней без всякого труда можно сразу обнаружить старую добрую программу debug.exe, которая поддерживает создание и отладку простых программ на ассемблере. Этот язык сейчас находится не в почете у молодых программистов, но профессионалы ее помнят и уважают. На сегодняшний день этот ассемблер поддерживает даже операции процессора с плавающей точкой (FPU). Программа позволяет писать свои куски кода как на языке ассемблер, так и в чистом коде, трассировать программу, использовать диагностические точки останова.

В каждой системе сегодня приходится устанавливать платформу.NET Framework, поэтому ее можно считать частью системы по умолчанию. Текущая версия платформы 4.5, и найти ее в папке Windows не сильно трудно. Для чего их искать? Дело в том, что там для каждой версии платформы хранятся бесплатные CLI/CLR версии популярных языков программирования: Visual Basic Compiler v.9, С#. В зависимости от версии, здесь можно обнаружить F# и другие полезные инструменты. Чтобы с ними работать без среды визуального программирования, можно найти любой из двух встроенных в систему редакторов. Грустно? Зато никто не требует знания ассемблера.

Можно припомнить, что в глубинах ОС скрыты средства автоматизации процессов, реализуемых на скриптах Windows Script Host (WSH), но его не назовешь универсальным языком программирования для всех, да и документацию на русском языке встретить очень сложно. Но авторы вирусов не жалуются: именно с помощью этой службы выполняются программы-скрипты, написанные на языках Jscript/VBScript.

Активируются скрипты с помощью двух дополнительных программ: Wscript для разработки оконных приложений и Cscript для создания консольных программ. Есть еще браузерные языки, исполняющиеся на стороне клиента, но они имеют серьезные ограничения по доступу к локальным ресурсам в целях безопасности. Собственно, отдельно упоминать их неинтересно: это все те же JS для всех браузеров и, дополнительно, VBS исключительно для движка IE.

Как видите, даже в голой системе можно не мечтать о коммерческих компиляторах, а сразу приниматься за работу, если такой набор языков вас устроит. Знакомство с ними дает много интересных знаний об устройстве и архитектуре Windows. В ином случае не обойтись без бесплатных компиляторов, которые поставляются третьими сторонами. В частности, их список можно найти в Википедии, набрав запрос.NET Framework. Увы, компиляторы для прямой генерации машинного кода сегодня редки и считаются анахронизмом.

Ссылка на основную публикацию
ВсеИнструменты 220 Вольт
Adblock
detector
×
×