На каком языке программирования пишут программы для windows

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

Запрограммировать приложение для Android (где у нас есть Android Studio и множество платформ для создания приложений, не зная, как программировать), как программировать видеоигру (где нам понадобится движок) или создать комплексную программу для Windows , Каждая платформа использует свой собственный язык, который должен быть представлен в определенных программах, которые помогают нам как при программировании, так и при его компиляции и формировании.

Если мы думаем начать программировать и создавать программы для Windows, это все, что нам нужно для достижения нашей цели.

разработчик-окно

Содержание

  • Знания для создания программ в Windows
  • Программное обеспечение, необходимое для создания программы
    • Код Visual Studio
    • Microsoft Visual Studio
    • Студия шаблонов Windows
    • NetBeans
    • Delphi
    • Блокнот ++

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

Тем не менее, есть несколько языков программирования, которые преобладают в этой операционной системе, и, как правило, это языки Microsoft. Например, большинство программ графической среды, разработанных для Windows, используют Визуальные языки такие как Visual C ++, Visual C #, Visual J # и Visual Basic .NET.

Если мы собираемся создать более простую программу, которая не нуждается в интерфейсе, C отличный вариант. Четный C ++ если мы хотим использовать любую из графических библиотек, доступных для этого языка. Разница между C и C ++ заключается в том, что первый не является объектно-ориентированным, а также более ограниченным, чем C ++. Сегодня есть отличные проекты, написанные на этом втором языке (Chrome, Firefox, многие игры и т. д.), поэтому, не вдаваясь в визуальные языки, программировать на нем очень удобно.

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

Также легко найти разработки на других языках, таких как Object Pascal, Ruby или Objective-C.

Программное обеспечение, необходимое для создания программы

На самом деле, мы могли программировать без специального программного обеспечения, просто с помощью текстового редактора, такого как Блокнот. Однако в настоящее время существуют очень полные программы (IDE), которые, помимо того, что помогают нам программировать, позволяют нам компилировать код, чтобы превратить наши строки во что-то функциональное.

Код Visual Studio

Плагин Visual Studio Code C

Код Visual Studio текстовый редактор с множеством функций программирования Эта программа имеет большое количество плагинов, которые позволяют адаптировать ее практически к любому языку программирования, который мы хотим. Благодаря своим функциям IntelliSense эта программа может выделять синтаксис, помогать нам автоматически заполнять код и даже находить ошибки.

Он интегрируется с Git, полностью настраиваемый, а также с открытым исходным кодом. Мы можем загрузить Visual Studio Code для Windows, Linux и macOS из Следующая ссылка .

Microsoft Visual Studio

Visual Studio — это гораздо более продвинутая среда разработки, чем код Visual Studio, разработанный Microsoft. Эта IDE специально разработана для создания программ Windows и совместима с основными языками Visual, такими как ASP.NET, Visual C ++, Visual C #, Visual J # и Visual Basic .NET.

Эта IDE позволяет нам легко создавать серверные приложения и программное обеспечение для настольных компьютеров для всех версий Windows. Обладая необходимыми знаниями, вы даже можете создавать 3D-приложения (и игры) с его помощью.

Мы можем скачать Visual Studio из Следующая ссылка .

Студия шаблонов Windows

Студия шаблонов Windows

Windows Template Studio — это расширение для Visual Studio, специально разработанное для облегчения создания универсальных приложений (UWP) для Windows 10. Этот плагин интегрирован в Microsoft IDE и с помощью нескольких щелчков мыши позволяет нам формировать нужную программу.

Мы можем скачать бесплатное расширение Windows Template Studio для Visual Studio от Следующая ссылка .

NetBeans

NetBeans — это еще одна программная среда разработки, на этот раз сфокусированная главным образом на разработке программ на Java. Эта IDE имеет открытый исходный код и в основном характеризуется модульностью, поскольку каждый пользователь может адаптировать ее к своим потребностям с помощью «модулей». Нам нужно установить Java SDK, чтобы иметь возможность программировать и компилировать код, написанный на этом языке. Преимущество состоит в том, что все, что мы программируем в нем, будет одинаково работать в других операционных системах.

В дополнение к программированию на Java, с помощью соответствующих модулей мы также можем программировать на JavaScript, HTML5, PHP или C / C ++.

Мы можем скачать NetBeans из Следующая ссылка .

Delphi

Еще одна очень популярная среда программирования среди программистов — Delphi. Эта IDE помогает нам создавать кросс-платформенные приложения с собственной компиляцией (без необходимости прибегать к другим программам или дополнительным компиляторам), чтобы конечный результат был максимально чистым.

Эта IDE может использоваться для программирования на нескольких языках программирования, хотя наиболее распространенным является ее использование для программирования в Object Pascal. Все, что мы пишем и компилируем, будет совместимо с Windows и Linux. Он также широко используется для веб-разработки, позволяя создавать клиент-серверные базы данных и веб-приложения и сервисы, такие как CGI, ISAPI, NSAPI, COM и DCOM.

Мы можем скачать Delphi от следующая ссылка.

Блокнот ++

Блокнот ++ UWP

Наконец, мы не могли забыть о Notepad ++. Этот бесплатный текстовый редактор с открытым исходным кодом является одной из лучших альтернатив Windows Notepad, но в нем также есть плагины, которые позволяют нам превратить его в полноценную среду программирования. Если мы хотим что-то простое в использовании для программирования по-старому (в текстовом режиме, без IDE), это наш редактор.

Мы можем скачать Блокнот ++ из Следующая ссылка .

Хорошо стою на PHP, JS.
Нужен не консольный, а десктопный язык, с ООП.
Сейчас нужно написать программку для работы с БД (MySQL) на сервере. Несложную, но с графическим интерфейсом.
В планах написать чтото похожее и для Android.

Нужен совет и рекомендации знающих!

В этом вопросе я нуб. Просто давно изучал Паскаль, и там был страшный черный экран ожидавший ввода. А от языка программирования требуется: ООП, Легкость изучения, Возможность работать с серверной БД.

А так в языках программирования я уже потерялся … В интернете нашел такие понятия как: С++, С#, Delphi, Python, Java. А какая разница между ними — понятия не имею. И, тем более, что мне подходит…

Glorfindel's user avatar

Glorfindel

1,1092 золотых знака13 серебряных знаков18 бронзовых знаков

задан 7 окт 2013 в 10:04

Mike's user avatar

9

Посмотрите в сторону .NET Framework(С#, etc…), или Qt(С++, etc…)
Есть проекты вроде PHP-Qt, но использовать их я бы не советовал.

UPD. Qt является кроссплатформенным, поэтому портировать на адроид будет много проще.

ответ дан 7 окт 2013 в 10:24

flax's user avatar

flaxflax

5181 золотой знак5 серебряных знаков18 бронзовых знаков

@myvzar, Вы пишете

и там был страшный черный экран ожидавший ввода.

А это тот начальный этап, который Вам обязательно предстоит пройти на любом языке, перед тем, как начать работать с GUI.

Для M$ же, видимо, лучшим выбором будет C#, но если Вы не хотите навсегда зависнуть в форточках, то попробуйте освоить Python.

ответ дан 8 окт 2013 в 8:27

avp's user avatar

avpavp

45.3k6 золотых знаков44 серебряных знака114 бронзовых знаков

Java. Быстро на ней пишется, быстро изучается. Горы документации на русском языке. Да и под андроид потом писать пригодится. Там ведь тоже java.

ответ дан 8 окт 2013 в 8:37

dlarchikov's user avatar

dlarchikovdlarchikov

4,40517 серебряных знаков41 бронзовый знак

В планах написать чтото похожее и для Android.

Java + swt

ответ дан 8 окт 2013 в 7:59

Alex Kapustin's user avatar

Alex KapustinAlex Kapustin

11.6k18 серебряных знаков22 бронзовых знака

Если вы планируете потом портировать программу на Android, то, как сказали ранее, вам поможет Java.
Но Android также поддерживает язык C++ (JNI/JNA). Моё мнение таково: на Java легко писать, но программы выполняются относительно медленно. На С++ писать сложнее, но код выполняется намного быстрее.
Я никому не навязываю своё мнение, так что решать вам)

ответ дан 8 окт 2013 в 11:18

Helisia's user avatar

HelisiaHelisia

3,6101 золотой знак22 серебряных знака46 бронзовых знаков

1

Есть очень хороший функциональный язык autoIT. Для маленьких десктопных приложений очень даже ничего.

ответ дан 12 мая 2015 в 15:05

lampa's user avatar

lampalampa

18.1k23 серебряных знака48 бронзовых знаков

Учили паскаль, хотите кодить для винды, тогда вам прямая дорога к embarcadero, 5 кликов мышью и полноценная программа для работы с БД готова.

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

ответ дан 27 дек 2013 в 18:42

Xokyopo's user avatar

XokyopoXokyopo

3761 серебряный знак9 бронзовых знаков

2

���� ���� ���������� ���������, ��� ���� �������� �� ����������, ��������. � ���� ��� ����� ���� �� ����������, ������� ���� ��� �������.

��� � ����� � � ��� �������� � ���� �������, ��� ������ �����-���� ���� �� ����� ���� �����. ������, ��� ������������ ����� ������ ;)

�� ������ ���� �� python. ������������ �������� � ������������������ �����. ��� ������� ������� �� python — exe-����� ������� �� �������. � ����� ������ ������� ������������ — Python ����������� ������, � ��� ���������� GUI � Python �� ���������� ������������. ����, Python — �� ������� ��� ���������� �������������.

RAD �� ����� �����, ���� ����� ���-�� ������ ��������� GUI. ���������� �������� ���� ��� ������-������ HTML ����أ� ����� �� ������. HTML ������� ������ � ��� ������. � ��� ������ ���� � ������� � ��������. ����, RAD — �� �����. ��������� UI ������.

������. �� � exe �������. �������, ����� ����������� ������. ������ ������ ������ ����� ��������� ���� ��������� �ݣ �������������� ���-��, � ������ ����������� ������, � ������ ����� ��� ���������. �����, ����� ����� ����� ������� ������ ������������ �� ����������� ������ (� ���� ������������ Path � �.�.).

���ף����. ����������� ��������� ��� ���������. ��� ��������, ��� ��� �����. ��������� ����� ������� � ����� �� ������. ���!
� ����� �������, — ����� �� ��������, ������� � ���� ������� � ����� �� ������? �� �����. ����� ��������� �������� �� ���� � ����� ��������� � ����� �����. ����� � ����� ��������� ����������� � �����, �� ����������� ��������� msi ���������, � �� zip. ����� ��������� ���� ������������ ���� �������, ��� �������.

�����. ��������� ���� ���� �ݣ ������ �������.

������. ���������������� ���� �������� �������� �������� ������.

�������. ������� ������������ ���������� ��������. � ������ �-�������� �������� web. ��� �� ������� ������� ��������� ���� ���������������� «��� �������».

�������. ������� ��� �� ����� ����������� ���������� ���� ��������� � �������. ������: ������� � �������� ������ ���������. � �����, ���� ��� ����� ��� �� ����, ��� � ��������� ��� ���������� ����������.

����. ��-��!!

�������� ���������� �������� ������ ���������������� � ���������:
«���������� ��� ������ ���������»

����������� ���������� ��������� Adobe AIR c ������ Flex. IDE — flashdevelop.

P.s. ����������� �����?
P.p.s. �������. �� ������ ���� ���� ����� �� flex — ����� � ��� �������������� :)

Ядро Microsoft Windows разработано в основном на языке C, с некоторыми частями на языке ассемблера. На протяжении десятилетий наиболее часто используемая операционная система в мире, занимающая около 90% рынка, была основана на ядре, написанном на C.

Windows написана на C или C ++?

Для тех, кто заботится о таких вещах: многие спрашивают, написана ли Windows на C или C ++. Ответ заключается в том, что, несмотря на объектно-ориентированный дизайн NT, как и большинство операционных систем, Windows почти полностью написана на языке C. Почему? C ++ требует затрат с точки зрения занимаемой памяти и накладных расходов на выполнение кода.

Windows / Написано на

Использует ли Microsoft C ++?

C ++ — это язык рабочей лошадки в Microsoft, который использует C ++ для создания многих своих основных приложений. … C ++ широко используется в индустрии программного обеспечения и остается одним из самых популярных языков, когда-либо созданных.

Какой язык кодирования использует Windows 10?

Windows 10

Версия операционной системы Windows NT
Снимок экрана Windows 10 версии 20H2, показывающий меню «Пуск» и Центр действий в светлой теме
разработчик Microsoft
Написано в С, С ++, С #
Статус поддержки

C ++ лучше Python?

Производительность C ++ и Python также заканчивается этим выводом: C ++ намного быстрее Python. В конце концов, Python — это интерпретируемый язык, и он не может совпадать с компилируемым языком, таким как C ++. Хорошая новость заключается в том, что вы можете получить лучшее из обоих миров, комбинируя код C ++ и Python.

C все еще используется в 2020 году?

Наконец, статистика GitHub показывает, что и C, и C ++ являются лучшими языками программирования для использования в 2020 году, поскольку они по-прежнему входят в первую десятку списка. Так что ответ — НЕТ. C ++ по-прежнему остается одним из самых популярных языков программирования.

Python написан на C или C ++?

Python написан на C (на самом деле реализация по умолчанию называется CPython). Python написан на английском языке. Но есть несколько реализаций: PyPy (написано на Python)

Написана ли Java на C?

Самый первый компилятор Java был разработан Sun Microsystems и был написан на C с использованием некоторых библиотек из C ++. Сегодня компилятор Java написан на Java, а JRE — на C.

Для чего используется Python?

Python — это язык программирования общего назначения, а это означает, что, в отличие от HTML, CSS и JavaScript, он может использоваться для других типов программирования и разработки программного обеспечения, помимо веб-разработки. Это, среди прочего, включает в себя внутреннюю разработку, разработку программного обеспечения, анализ данных и написание системных скриптов.

Используется ли Python в Microsoft?

Установка Python в Microsoft Store включает стандартный менеджер пакетов pip. Pip позволяет вам устанавливать и управлять дополнительными пакетами, которые не являются частью стандартной библиотеки Python. Чтобы подтвердить, что у вас также есть pip для установки пакетов и управления ими, введите pip –version.

Может ли Python заменить C ++?

В целом Python лучше, чем C ++, с точки зрения простоты и легкого синтаксиса. Но C ++ лучше с точки зрения производительности, скорости, обширных областей применения и т. Д. Q # 3) Может ли Python заменить C ++? Ответ: НЕТ.

Какие компании используют Python?

8 компаний-разработчиков программного обеспечения мирового уровня, использующих Python

  • Промышленный свет и магия.
  • Google.
  • Facebook.
  • Instagram.
  • Spotify.
  • Quora.
  • Netflix.
  • Dropbox.

Что мне следует изучать C или C ++?

Нет необходимости изучать C перед изучением C ++. Это разные языки. Распространено заблуждение, что C ++ каким-то образом зависит от C, а не является полностью определенным языком сам по себе. Тот факт, что C ++ имеет один и тот же синтаксис и много одинаковой семантики, не означает, что вам нужно сначала изучить C.

Linux написан на C или C ++?

Linux. Linux также написан в основном на C, с некоторыми частями сборки. Около 97 процентов из 500 самых мощных суперкомпьютеров в мире работают под управлением ядра Linux.

Почему C более популярен, чем C ++?

Самая большая практическая причина для предпочтения C заключается в том, что поддержка более распространена, чем C ++. Есть много платформ, особенно встроенных, на которых даже нет компиляторов C ++. Также существует вопрос совместимости для поставщиков.

Содержание

  • Создаем собственное программное обеспечение для Windows
  • Способ 1: Программы для написания программ
  • Способ 2: Язык программирования и среда разработки
  • Вопросы и ответы

Как создать программу

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

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

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

Способ 1: Программы для написания программ

Если вы интересовались созданием игр, то знаете о специальных инструментах, куда уже встроено множество компонентов и записаны основные скрипты. Юзеру остается лишь создать из этого цельную картину, систематизируя имеющиеся данные. Примерно по такому же принципу работает и ПО, позволяющее создавать собственные приложения без знания языков программирования. За пример мы взяли HiAsm, поскольку это единственное оптимальное решение с полной локализацией на русский язык.

Скачать HiAsm Studio с официального сайта

  1. Сразу приступим к рассмотрению простой инструкции по созданию примитивной программы в HiAsm. Для начала перейдите по указанной выше ссылке, чтобы скачать и установить используемый сегодня инструмент.
  2. После запуска ознакомьтесь с представленной информацией по использованию и решению частых проблем. Сразу хотим отметить, что некоторые антивирусы распознают HiAsm как вредоносный код, блокируя запускающиеся файлы. Поэтому при возникновении неполадок рекомендуем добавить инструмент в исключения или на время выключать защиту операционной системы.
  3. Инструкция по использованию программного обеспечения HiAsm Studio

  4. Через меню «Файл» создайте новый проект.
  5. Переход к созданию нового проекта в программе HiAsm Studio

  6. Появится новое окно с выбором различных типов приложений. Сегодня мы хотим сконцентрироваться на стандартной программе для Windows с графическим интерфейсом.
  7. Выбор типа приложения для написания в программе HiAsm Studio

  8. За пример возьмем простое электронное меню с выбором блюд через всплывающий список, а также с возможностью указания количества необходимых порций. Данный выбор был сделан лишь для того, чтобы продемонстрировать работу основных элементов HiAsm. Сначала перейдем к добавлению нового элемента в главное окно, нажав на соответствующую кнопку.
  9. Открытие панели элементов для добавления в программу HiAsm Studio

  10. В открывшемся окне вы увидите, что все объекты распределены по группам, чтобы было удобно выбирать требуемое. Создадим всплывающий список, нажав по нему.
  11. Выбор всплывающего списка для добавления в программу HiAsm Studio

  12. Переместите элемент на рабочую область, а затем соедините с главным окном.
  13. Соединение всплывающего списка с главным меню в программе HiAsm Studio

  14. Дважды щелкните по списку, чтобы заполнить строки. Каждую новую позицию пишите с новой строки.
  15. Редактирование пунктов добавленного списка в HiAsm Studio

  16. Подтвердите изменения, щелкнув на зеленую галочку.
  17. Сохранение изменений в добавленном списке HiAsm Studio

  18. Теперь давайте добавим обычный текст, который будет свидетельствовать о названии всплывающего меню.
  19. Переход к добавлению надписи в программу HiAsm Studio

  20. Откройте объект и заполните его содержимым.
  21. Набор текста для надписи в главном окне HiAsm Studio

    Lumpics.ru

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

  24. Все это тоже нужно будет связать с главным окном.
  25. Привязка изображения к главному окну создаваемой программы в HiAsm Studio

  26. HiAsm поддерживает изображения разных размеров и форматов, добавляется оно точно так же, как в случае с текстом.
  27. Добавление изображения в объект HiAsm Studio

  28. Дополнительно присутствует встроенный редактор, позволяющий изменить определенные части картинки.
  29. Редактирование добавленного изображения в HiAsm Studio

  30. Далее через «Вид» вы можете запустить «Редактор формы».
  31. Переход в режим редактирования вида HiAsm Studio

  32. Он позволит расположить все компоненты в необходимом месте на окне путем перемещения и масштабирования.
  33. Редактирование расположения объектов в программе HiAsm Studio

  34. Каждый объект или меню редактируется через окно «Свойства элемента». Запустите его, чтобы увидеть основные параметры, предварительно выбрав одно из меню или окон.
  35. Открытие окна свойств элемента программы в HiAsm Studio

  36. Здесь вы можете менять основной фон, устанавливать размеры, расположение курсора, положение относительно основного окна и добавить одну из множества точек.
  37. Настройка свойств главного окна в программе HiAsm Studio

  38. Окно свойств по умолчанию находится справа. Давайте обратим внимание на редактирование текста. Выберите шрифт, цвет и размер. В разделе «Style» активируется курсив, подчеркивание или выделение жирным.
  39. Настройка текста через вкладку Свойства в программе HiAsm Studio

  40. Добавим перемещаемый ползунок, чтобы регулировать количество порций.
  41. Добавление ползунка определения количества в программе HiAsm Studio

  42. В меню «Свойства» потребуется настроить минимальное и максимальное значение отметок, например, от 1 до 6.
  43. Настройка количества сечений для ползунка в программе HiAsm Studio

  44. После каждого изменения можете запускать программу, чтобы ознакомиться с результатами и убедиться в отсутствии ошибок.
  45. Проверка внешнего вида программы в HiAsm Studio

  46. По завершении мы предлагаем добавить кнопку «ОК», подтверждающую готовность заказа. Она находится в разделе «Rush-Контролы».
  47. Добавление кнопки подтверждения в программу HiAsm Studio

  48. Задайте кнопке название, например «ОК» или «Подтвердить заказ».
  49. Настройка кнопки подтверждения в программе HiAsm Studio

  50. После завершения добавления двух позиций у нас получилась программа, которую вы видите на скриншоте ниже. Конечно, здесь еще нужно работать с оформлением и другими недостатками функциональности, внешнего вида. Однако этот пример был создан только ради того, чтобы продемонстрировать принцип действия HiAsm.
  51. Предварительный просмотр программы перед сохранением в HiAsm Studio

  52. Если хотите сделать перерыв или сохранить готовый проект для дальнейшего конвертирования в исполняемый файл, нажмите на кнопку «Сохранить» и выберите место на жестком диске.
  53. Сохранение готового проекта в HiAsm Studio

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

Перейти на официальный форум HiAsm

Способ 2: Язык программирования и среда разработки

Как уже было сказано ранее, абсолютно все программы пишутся на определенном языке программирования. В некоторых сложных проектах бывает задействовано сразу несколько ЯП. Такой способ написания софта самый сложный, но при освоении одного из языков вы получаете практически безграничные возможности в кодировании программного обеспечения, утилит или отдельных скриптов. Главная задача — определиться с языком программирования. На этот вопрос постарались дать ответ специалисты из известного обучающего сервиса GeekBrains. Всю необходимую информацию вы найдете по указанной ниже ссылке.

5 языков программирования, которые надо учить первыми

Теперь же давайте рассмотрим несколько вариантов обеспечения, написанного при помощи упомянутых в статье ЯП. В первую очередь затронем Python, который некоторые программисты считают самым простым языком. Чтобы на экране появилось простое графическое окно размером на весь экран, придется подключить стандартную библиотеку Tkinter и написать код такого формата:

from tkinter import *

class Paint(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent

def main():
root = Tk()
root.geometry("1920x1080+300+300")
app = Paint(root)
root.mainloop()

if __name__ == "__main__":
main()

Отображение окна созданного на языке программирования Python

Далее добавляется код, который вы видите на скриншоте ниже. Он реализует примерно такие же функции, как стандартная программа Paint.

Открывок кода графического приложения на Python

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

Внешний вид графического приложения на Python

Как видите, разобраться в приложениях с GUI (графическим интерфейсом) не так уж и сложно, однако сначала лучше начать с консольных скриптов и небольших программ. Освоить Python вам помогут свободные материалы, уроки и литература, которой сейчас вполне достаточно, чтобы самостоятельно изучить необходимый материал.

В приведенной статье на GeekBrains отдельное внимание уделено и C#, который называют универсальным языком программирования для тех, кто еще не определился, в какой области хочет применять свои навыки. Разработка ПО для Windows ведется в официальной среде от Microsoft под названием Visual Studio. Код внешне выглядит так, как вы видите ниже:

namespace MyWinApp
{
using System;
using System.Windows.Forms;

public class MainForm : Form
{
// запускаем приложение
public static int Main(string[] args)
{
Application.Run(new MainForm());
return 0;
}
}
}

Как видите, существуют определенные различия с тем же Python. Если скопировать этот код, вставить его в IDE и скомпилировать, на экране появится простейшее графическое окно, куда уже в дальнейшем и будут прикрепляться кнопки, блоки и другие объекты.

Внешний вид графического приложения на языке C#

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

Подробнее: Выбираем среду программирования

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

Введение.

  • Некоторые сведения о программировании Windows-приложений
  • Программная среда Windows
  • Интерфейс вызовов функций в Windows
  • Библиотеки динамической загрузки (DLL)
  • Win16 или Win32
  • Интерфейс GDI
  • Многозадачность в Windows
  • Взаимодействие программ и Windows
  • Основы программирования под Windows
  • Функция WinMain()
  • Функция окна
  • Цикл сообщений
  • Класс окна
  • Типы данных в Windows
  • Преимущества использования MFC
  • Обзор среды Microsoft Developer Studio
  • Библиотека MFC
  • Архитектура приложения
  • Каркас приложения
  • При определении производного класса программист может:
  • Каркас приложений
  • Проект приложения
  • Использование средств разработки
  • Типы мастеров проектов
  • Преимущества мастеров проектов
  • Обзор возможностей ClassWizard
  • Имена, используемые в MFC

Эти главы являются некоторым пособием для тех, кто хочет познакомиться с языком программирования C++ и Visual C++.

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

Чтобы облегчить работу программиста практически все современные компиляторы с языка C++ содержат специальные библиотеки классов. Такие библиотеки включают в себя практически весь программный интерфейс Windows и позволяют пользоваться при программировании средствами более высокого уровня, чем обычные вызовы функций. За счет этого значительно упрощается разработка приложений, имеющих сложный интерфейс пользователя, облегчается поддержка технологии OLE и взаимодействие с базами данных.

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

Подобные средства автоматизированного создания приложений включены в компилятор Microsoft Visual C++ и называются MFC AppWizard. Заполнив несколько диалоговых панелей, можно указать характеристики приложения и получить его тексты, снабженные обширными комментариями. MFC AppWizard позволяет создавать однооконные и многооконные приложения, а также приложения, не имеющие главного окна, -вместо него используется диалоговая панель. Можно также включить поддержку технологии OLE, баз данных, справочной системы.

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

Нужно отметить, что MFC AppWizard создает тексты приложений только с использованием библиотеки классов MFC (Microsoft Foundation Class library). Поэтому только изучив язык C++ и библиотеку MFC, можно пользоваться средствами автоматизированной разработки и создавать свои приложения в кратчайшие сроки.

Некоторые сведения о программировании Windows-приложений

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

Программная среда Windows

Рассмотрим наиболее важные моменты работы Windows и принципы взаимодействия программ с ней.

Интерфейс вызовов функций в Windows

Благодаря данному интерфейсу доступ к системным ресурсам осуществляется через целый рад системных функций. Совокупность таких функций называется прикладным программным интерфейсом, или API (Application Programming Interfase). Для взаимодействия с Windows приложение запрашивает функции API, с помощью которых реализуются все необходимые системные действия, такие как выделение памяти, вывод на экран, создание окон и т.п.

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

Библиотеки динамической загрузки (DLL)

Поскольку API состоит из большого числа функций, может сложиться впечатление, что при компиляции каждой программы, написанной для Windows, к ней подключается код довольно значительного объема. В действительности это не так. Функции API содержатся в библиотеках динамической загрузки (Dynamic Link Libraries, или DLL), которые загружаются в память только в тот момент, когда к ним происходит обращение, т.е. при выполнении программы. Рассмотрим, как осуществляется механизм динамической загрузки.

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

Win16 или Win32

В настоящее время широко распространены две версии API. Первая называется Win16 и представляет собой 16-разрядную версию, используемую в Windows 3.1. Вторая, 32-разрядная версия, называется Win32 и используется в Windows 95 и Windows NT. Win32 является надмножеством для Win16 (т.е. фактически включает в себя этот интерфейс), так как большинство функций имеет то же название и применяется аналогичным образом. Однако, будучи в принципе похожими, оба интерфейса все же отличаются друг от друга. Win32 поддерживает 32-разрядную линейную адресацию, тогда как Win16 работает только с 16-разрядной сегментированной моделью памяти. Это привело к тому, что некоторые функции были модифицированы таким образом, чтобы принимать 32-разрядные аргументы и возвращать 32-разрядные значения. Часть из них пришлось изменить с учетом 32-разрядной архитектуры. Была реализована поддержка потоковой многозадачности, новых элементов интерфейса и прочих нововведений Windows.

Так как Win32 поддерживает полностью 32-разрядную адресацию, то логично, что целые типы данных (intergers) также объявлены 32-разрядными. Это означает, что переменные типа int и unsignerd будут иметь длину 32 бита, а не 16, как в Windows 3.1. Если же необходимо использовать переменную или константу длиной 16 бит, они должны быть объявлены как short. (дальше будет показано, что для этих типов определены независимые typedef-имена.) Следовательно, при переносе программного кода из 16-разрядной среды необходимо убедиться в правильности использования целочисленных элементов, которые автоматически будут расширены до 32 битов, что целочисленных элементов, которые автоматически будут расширены до 32 битов, что может привести к появлению побочных эффектов.

Другим следствием 32-разрядной адресации является то, что указатели больше не нужно объявлять как near и far. Любой указатель может получить доступ к любому участку памяти. В Windows 95 и Windows NT константы near и far объявлены (с помощью директивы #define)пустыми.

Интерфейс GDI

Одним из подмножеств API является GDI (Graphics Device Interfase — интерфейс графического устройства). GDI — это та часть Windows, которая обеспечивает поддержку аппаратно-независимой графики. Благодаря функциям GDI Windows-приложение может выполняться на самых различных компьютерах.

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

Как известно, все версии Windows поддерживают многозадачность. В Windows 3.1 имеется только один тип многозадачности — основанный на процессах. В более передовых системах, таких как Windows 95 и Windows NT, поддерживается два типа многозадачности: основанный на процессах и основанный на потоках. Давайте рассмотрим их чуть подробнее.

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

Поток — это отдельная часть исполняемого кода. Название произошло от понятия «направление протекания процесса». В многозадачности данного типа отдельные потоки внутри одного процесса также могут выполняться одновременно. Все процессы имеют по крайней мере один поток, но в Windows 95 и Windows NT их может быть несколько.

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

Есть и другое существенное различие между многозадачностями Windows 3.1 и Windows 95/NT. В Windows 3.1 используется неприоритетная многозадачность. Это означает, что процесс, выполняющийся в данный момент, получает доступ к ресурсам центрального процессора и удерживает их в течение необходимого ему времени. Таким образом, неправильно выполняющаяся программа может захватить все ресурсы процессора и не давать выполняться другим процессам. В отличие от этого в Windows 95 и Windows NT используется приоритетная многозадачность. В этом случае каждому активному потоку предоставляется определенный промежуток времени работы процессора. По истечению данного промежутка управление автоматически передается следующему потоку. Это не дает возможность программам полностью захватывать ресурсы процессора. Интуитивно должно быть понятно, что такой способ более предпочтителен.

Взаимодействие программ и Windows

Во многих операционных системах взаимодействие между системой и программой инициализирует программа. Например, в DOS программа запрашивает разрешение на ввод и вывод данных. Говоря другими словами, не- Windows-программы сами вызывают операционную систему. Обратного процесса не происходит. В Windows все совершенно наоборот: именно система вызывает программу. Это осуществляется следующим образом: программа ожидает получения сообщения от Windows. Когда это происходит, то выполняется некоторое действие. После его завершения программа ожидает следующего сообщения.

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

Основы программирования под Windows

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

Функция WinMain()

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

Функция окна

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

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

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

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

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

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

Класс окна

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

Специфика программ для Windows

Структура Windows-программ отличается от структуры программ других типов. Это вызвано двумя обстоятельствами: во-первых, способом взаимодействия между программой и Windows, описанным выше; во-вторых, правилами, которым следует подчиняться для создания стандартного интерфейса Windows-приложения (т.е. чтобы сделать программу «похожей » на Windows-приложение).

Цель Windows — дать человеку, который хотя бы немного знаком с системой, возможность сесть за компьютер и запустить любое приложение без предварительной подготовки. Для этого Windows предоставляет дружественный интерфейс пользователя. Теоретически, если пользователь сумел запустить одно Windows-приложение, то он сумеет запустить и любое другое. Конечно, на практике придется немного потренироваться, чтобы научиться использовать большинство программ с максимальной эффективностью. Однако это связано исключительно с тем, что программа делает, а не с тем, как ею пользоваться. Ведь, фактически, значительная часть кода Windows-приложения предназначена именно для организации интерфейса с пользователем.

Хотя создание удобного интерфейса «под Windows» является основной задачей при написании любой Windows-программы, такой интерфейс не создается автоматически. То есть вполне можно написать программу, в которой элементы интерфейса используются неэффективно. Чтобы этого избежать, необходимо целенаправленно применять методику, описанную в данной книге. Только программы, написанные таким способом, будут выглядеть и работать действительно так, как надлежит Windows-программам.

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

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

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

Преимущества использования MFC

Как уже упоминалось, MFC — это базовый набор (библиотека) классов, написанных на языке С++ и предназначенных для упрощения и ускорения процесса программирования для Windows. Библиотека содержит многоуровневую иерархию классов, насчитывающую около 200 членов. Они дают возможность создавать Windows-приложения на базе объектно-ориентированного подхода. С точки зрения программиста, MFC представляет собой каркас, на основе которого можно писать программы для Windows.

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

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

Еще одним существенным преимуществом MFC является упрощение взаимодействия с прикладным программным интерфейсом (API) Windows. Любое приложение взаимодействует с Windows через API, который содержит несколько сот функций. Внушительный размер API затрудняет попытки понять и изучить его целиком. Зачастую даже сложно проследить, как отдельные части API связанны друг с другом! Но поскольку библиотека MFC объединяет (путем инкапсуляции) функции API в логически организованное множество классов, интерфейсом становится значительно легче управлять.

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

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

Обзор среды Microsoft Developer Studio

Студия разработчика фирмы Microsoft (Microsoft Developer Studio) — это интегрированная среда для разработки, позволяющая функционировать различным средам разработки, одна из которых Visual C++, другая — Visual J++. В дальнейшем будет идти речь только о среде разработки Visual C++.

В студии разработчика можно строить обычные программы на C и С++, создавать статические и динамические библиотеки, но основным режимом работы является создание Windows-приложений с помощью инструмента MFC AppWizard (Application Wizard — мастер приложений) и библиотеки базовых классов MFC (Microsoft Foundation Class Library). Такие приложения называются MFC-приложениями. Главная особенность этих Windows-приложений состоит в том, что они работают как совокупность взаимодействующих объектов, классы которых определены библиотекой MFC.

Библиотека MFC

Главная часть библиотеки MFC состоит из классов, используемых для построения компонентов приложения. С каждым MFC-приложением связывается определяющий его на верхнем уровне объект theApp, принадлежащий классу, производному от CWinApp.

Как правило, структура приложения определяется архитектурой Document-View (документ-облик). Это означает, что приложение состоит из одного или нескольких документов — объектов, классы которых являются производными от класса CDocument (класс «документ»). С каждым из документов связаны один или несколько обликов — объектов классов, производных от CView (класс «облик «) и определяющих облик документа.

Класс CFrameWnd («окна-рамки») и производные от него определяют окна-рамки на дисплее. Элементы управления, создаваемые при проектировании интерфейса пользователя, принадлежат семейству классов элементов управления. Появляющиеся в процессе работы приложения диалоговые окна — это объекты классов, производных от CDialog.

Классы CView, CFrameWnd, CDialog и все классы элементов управления наследуют свойства и поведение своего базового класса CWnd («окно»), определяющего по существу Windows-окно. Этот класс в свою очередь является наследником базового ласса CObject («объект»).

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

Архитектура приложения

У всех Windows-приложений фиксированная структура, определяемая функцией WinMain. Структура приложения, построенного из объектов классов библиотеки MFC, является еще более определенной.

Приложение состоит из объекта theApp, функции WinMain, и некоторого количества других объектов. Сердцевина приложения — объект theApp — отвечает за создание всех остальных объектов и обработку очереди сообщений. Объект theApp является глобальным и создается еще до начала работы функции WinMain. Работа функции WinMain заключается в последовательном вызове двух методов объекта theApp: InitInstance и Run. В терминах сообщений можно сказать, WinMain посылает объекту theApp сообщение InitInstance, которое приводит в действие метод InitInstance.

Получив сообщение InitInstance, theApp создает внутренние объекты приложения. Процесс создания выглядит как последовательное порождение одних объектов другими. Набор объектов, порождаемых в начале этой цепочки, определен структурой MFC практически однозначно — это главная рамка, шаблон, документ, облик. Их роли в работе приложения будут обсуждаться позже.

Следующее сообщение, получаемое theApp, — Run — приводит в действие метод Run. Оно как бы говорит объекту: «Начинай работу, начинай процесс обработки сообщений из внешнего мира». Объект theApp циклически выбирает сообщения из очереди и инициирует обработку сообщений объектами приложения.

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

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

При работе приложения возникают и обычные вызовы одними объектами методов других объектов. В объектно-ориентированной терминологии такие вызовы могут называться сообщениями. В Visual C++ некоторым методам приписан именно этот статус (например, методу OnDraw).

Важное значение имеют также объекты документ, облик и главная рамка. Здесь отметим только, что документ содержит данные приложения, облик организует представление этих данных на экране, а окно главной рамки — это окно, внутри которого размещены все остальные окна приложения.

Каркас приложения

Наследование — одна из фундаментальных идей объектно-ориентированного программирования. Именно этот механизм наследования позволяет программисту дополнять и переопределять поведение базового класса, не вторгаясь в библиотеку MFC, которая остается неизменной. Все изменения делаются в собственном производном классе. Именно в этом и заключается работа программиста.

Объекты, их которых состоит приложение, являются объектами классов, производных от классов библиотеки MFC. Разработка приложения состоит в том, что программист берет из библиотеки MFC классы CWinApp, CFrameWnd, CDocument, CView и т.д. и строит производные классы. Приложение создается как совокупность объектов этих производных классов. Каждый объект несет в себе как наследуемые черты, определяемые базовыми классами, так и новые черты, добавленные программистом. Наследуемые черты определяют общую схему поведения, свойственную таким приложениям. Новые же черты позволяют реализовать специфические особенности поведения приложения, необходимые для решения стоящей перед ним задачи.

При определении производного класса программист может:

  • переопределить некоторые методы базового класса, причем те методы, что не были переопределены, будут наследоваться в том виде, в каком они существуют в базовом классе;
  • добавить новые методы;
  • добавить новые переменные.

Приложение, построенное на основе библиотеки MFC, — «айсберг», большая часть которого невидима, но является основой всего приложения. Часть приложения, лежащую в библиотеке MFC, — framework — называется каркасом приложения. Рассмотрим работу приложения как процесс взаимодействия между каркасом и частью приложения, разработанной программистом. Совершенно естественно, что в методах, определенных программистом, могут встречаться вызовы методов базового класса, что вполне можно рассматривать как вызов функции из библиотеки. Важнее, однако, что и метод производного класса, определенный программистом, может быть вызван из метода родительского класса. Другими словами, каркас и производный класс в этом смысле равноправны — их методы могут вызывать друг друга. Такое равноправие достигается благодаря виртуальным методам и полиморфизму, имеющимся в арсенале объектно-ориентированного программирования.

Если метод базового класса объявлен виртуальным и разработчик переопределил его в производном классе, это значит, что при вызове данного метода в некоторой полиморфной функции базового класса в момент исполнения будет вызван метод производного класса и, следовательно, каркас вызывает метод, определенный программистом. Точнее говоря, обращение к этому методу должно производиться через ссылку на производный объект либо через объект, являющийся формальным параметром и получающий при вызове в качестве своего значения объект производного класса. Когда вызывается виртуальный метод М1, переопределенный разработчиком, то согласно терминологии Visual C++, каркас посылает сообщение М1 объекту производного класса, а метод М1 этого объекта обрабатывает это сообщение. Если сообщение М1 послано объекту производного класса, а обработчик этого сообщения не задан программистом, объект наследует метод М1 ближайшего родительского класса, в котором определен этот метод. Если же обработчик такого сообщения создан программистом, он автоматически отменяет действия, предусмотренные родительским классом в отсутствие этого обработчика.

Каркас приложений

С Visual C++ тесно связано еще одно понятие — каркас приложений, которое близко и созвучно понятию каркаса приложения, но в отличие от него относится не к одному конкретному приложению, а к библиотеке, с помощью которой строятся многие приложения. Каркас приложений — это библиотека классов, из которых программист берет не только набор классов, играющих роль дополнительных типов данных, но и классы, служащие строительными блоками приложения на самом верхнем уровне. С этой точки зрения, каркас приложения является частью каркаса приложений, относящейся к данному приложению. Примеры каркасов приложений — библиотеки классов MFC и OWL.

Проект приложения

О принципах устройства приложения рассказывалось выше. Теперь рассмотрим, как оно создается с помощью Visual C++. Сначала разберем одно важное понятие — проект. До сих пор приложение рассматривалось, как только как совокупность объектов базовых и производных классов. Но для обеспечения работы приложения требуется нечто большее — наряду с описанием классов необходимо описание ресурсов, связанных с приложением, нужна справочная система и т.п. Термин «проект» как раз и используется, когда имеется в виду такой более общий взгляд на приложение.

В среде Visual C++ можно строить различные типы проектов. Такие проекты после их создания можно компилировать и запускать на исполнение. Фирма Microsoft разработала специальный инструментарий, облегчающий и ускоряющий создание проектов в среде Visual C++. Например, мастер MFC AppWizard (exe) позволяет создать проект Windows-приложения которое имеет однодокументный, многодокументный или диалоговый интерфейс и использует библиотеку MFC.

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

Использование средств разработки

В состав компилятора Microsoft Developer Studio встроены средства, позволяющие программисту облегчить разработку приложений. В первую очередь к ним относятся MFC AppWisard, ClassWizard и редактор ресурсов.

Благодаря MFC AppWizard среда разработчика позволяет быстро создавать шаблоны новых приложений. При этом программисту не приходится писать ни одной строчки кода. Достаточно ответить на ряд вопросов, касающихся того, какое приложение требуется создать, и исходные тексты шаблона приложения вместе с файлами ресурсов готовы. Эти тексты можно оттранслировать и получить готовый загрузочный модуль приложения.

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

Для создания ресурсов приложения предназначен редактор ресурсов. Он позволяет быстро создавать новые меню, диалоговые панели, добавлять кнопки к панели управления toolbar и т.д.

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

Типы мастеров проектов

В среде Visual C++ можно строить различные типы проектов. Такие проекты после их создания можно компилировать и запускать на исполнение. Фирма Microsoft разработала специальный инструментарий, облегчающий и ускоряющий создание проектов в среде Visual C++.

Рассмотрим некоторые типы проектов, которые можно создавать при помощи различных средств (мастеров проектов) Microsoft Visual C++:

  • MFC AppWizard (exe) — при помощи мастера приложений можно создать проект Windows-приложения которое имеет однодокументный, многодокументный или диалоговый интерфейс. Однодокументное приложеие может предоставлять пользователю в любой момент времени работать только с одним файлом. Многодокументное приложение, напротив, может одновременно представлять несколько документов, каждый в собственном окне. Пользовательский интерфейс диалогового приложения представляет собой единственное диалоговое окно.
  • MFC AppWizard (dll) — этот мастер приложений позволяет создать структуру DLL, основанную на MFC. При помощи него можно определить характеристики будующей DLL.
  • AppWizard ATL COM — это средство позволяет создать элемент управления ActiveX или сервер автоматизации, используя новую библиотеку шаблонов ActiveX (ActiveX Template Library — ATL). Опции этого мастера дают возможность выбрать активный сервер (DLL) или исполняемый внешний сервер (exe-файл).
  • Custom AppWizard — при помощи этого средства можно создать пользовательские мастера AppWizard. Пользовательский мастер может базироваться на стандартных мастерах для приложений MFC или DLL, а также на существующих проектах или содержать только определеямые разработчиком шаги.
  • DevStudio Add-in Wizard — мастер дополнений позволяет создавать дополнения к Visual Studio. Библиотека DLL расширений может поддерживать панели инструментов и реагировать на события Visual Studio.
  • MFC ActiveX ControlWizard — мастер элементов управления реализует процесс создания проекта, содержащего один или несколько элементов управления ActiveX, основанных на элементах управления MFC.
  • Win32 Application — этот мастер позволяет создать проект обычного Window-приложения. Проект создается незаполненным, файлы с исходным кодом в него следует добавлять вручную.
  • Win32 Console Application — мастер создания проекта консольного приложения. Консольная приложение — это программа, которая выполняется из командной cтроки окна DOS или Windows и не имеет графического интерфейса (окон). Проект консольного приложения создается пустым, предполагая добавление файлов исходного текста в него вручную.
  • Win32 Dynamic-Link Library — создание пустого проекта динамически подключаемой библиотеки. Установки компилятора и компоновщика будут настроены на создание DLL. Исходные файлы следует добавлять вручную.
  • Win32 Static Library — это средство создает пустой проект, предназначенный для генерации статической (объектной) библиотеки. Файлы с исходным кодом в него следует добавлять вручную.

Преимущества мастеров проектов

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

Например, все Windows-приложения имеют достаточно общую структуру, и, следовательно, можно построить некоторые шаблонные заготовки, подходящие для того или иного типа проектов. Построению таких заготовок способствует то, что приложения, создаваемые на основе MFC, строятся из элементов фиксированных классов. Логическим развитием этой идеи было введение специальных классов и специальной архитектуры построения приложения, которая подходила бы широкому классу приложений. О такой архитектуре уже упоминалось, когда речь шла о библиотеке MFC, — это архитектура Document-View. Она является основной, но не единственной при построении проектов в среде Visual C++.

Суть этой архитектуры в том, что работу многих приложений можно рассматривать как обработку документов. При этом можно отделить сам документ, отвечающий за представление и хранение данных, от образа этого документа, видимого на экране и допускающего взаимодействие с пользователем, который просматривает и (или) редактирует документ. В соответствии с этой архитектурой библиотека MFC содержит два семейства классов, производных от базовых классов CDocument и CView.

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

Начальная заготовка — остов приложения — создается в диалоге с пользователем инструментальным средством AppWizard. В процессе диалога пользователь определяет тип и характеристики проекта, который он хочет построить. Определив, какие классы из MFC необходимы для этого проекта, AppWizard строит остовы всех нужных производных классов. Построенный AppWizard остов приложения содержит все необходимые файлы для создания стартового приложения, которое является законченным приложением и обладает разумными функциональными свойствами, общими для целого класса приложений. Естественно, никаких специфических для данного приложения свойств остов не содержит. Они появятся на следующем этапе, когда программист начнет работать с остовом, создавая из заготовки свое собственное приложение. Тем не менее стартовое приложение можно транслировать и запускать на исполнение.

Термин остов (приложения, класса, функции) применяется для заготовок, создаваемых инструментальными средствами AppWizard и ClassWizard. Нужно подчеркнуть — остов приложения и каркас приложения — разные понятия.

Создаваемый остов приложения составлен так, что в дальнейшей работе с проектом можно использовать другое инструментальное средство — ClassWizard (мастер классов).

Обзор возможностей ClassWizard

Средство ClassWizard предоставляет широкий спектр услуг. Он позволяет не только добавлять к существующему классу новые методы и данные.

Создание нового класса. При помощи ClassWizard можно добавить новый класс, созданный на основе базовых классов. В качестве базового класса можно использовать классы, наследованные от класса CCmdTarget или класса CRecordset. Для наследования классов от других базовых классов использовать средства ClassWizard нельзя. Такие классы надо создавать вручную, непосредственно в текстовом редакторе.

Объекты, порожденные от класса CCmdTarget, могут обрабатывать сообщения Windows и команды, поступающие от меню, кнопок, акселераторов. Класс CCmdTarget и другие наследованные от него классы имеют таблицу сообщений (Message Map) — набор макрокоманд, позволяющий сопоставить сообщения Windows и команды метода класса.

Полученная заготовка класса полностью работоспособна. Ее можно дополнить по своему усмотрению новыми методами и данными. Эту работу можно выполнить вручную, но гораздо лучше и проще воспользоваться услугами ClassWizard. За счет использования ClassWizard процедура создания собственного класса значительно ускоряется и уменьшается вероятность совершить ошибку во время объявления методов.

Включение в класс новых методов. Очень удобно использовать ClassWizard для включения в состав класса новых методов. Можно добавлять к классу методы, служащие для обработки сообщений Windows и команд от объектов, а также методы, переопределяющие виртуальные методы базовых классов.

ClassWizard не только позволяет добавить в класс новые методы, но и удалить их. ClassWizard самостоятельно удалит объявление метода из класса.

Включение в класс новых элементов данных. ClassWizard позволяет включать в класс не только новые методы, но и элементы данных, связанные с полями диалоговых панелей, форм просмотра и форм для просмотра записей баз данных и полей наборов записей. ClassWizard использует специальные процедуры, чтобы привязать созданные им элементы данных к класса к полям диалоговых панелей. Эти процедуры носят названия «обмен данными диалоговой панели» и «проверка данных диалоговой панели» (Dialog Data Exchange and Dialog Data Validation — DDX/DDV). Чтобы привязать поля из наборов записей к переменным, используется процедура обмена данными с полями записей (Record Field Exchange — RFX).

Процедуры DDX/DDV и RFX значительно упрощают программисту работу с диалоговыми панелями. Они позволяют связать поля диалоговых панелей и переменные. Когда пользователь редактирует поля диалоговых панелей, процедуры DDV проверяют введенные значения и блокируют ввод запрещенных значений. Затем процедуры DDX автоматически копируют содержимое полей диалоговых панелей в привязанные к ним элементы данных класса. И наоборот, когда приложение изменяет элементы данных класса, привязанные к полям диалоговой панели, процедуры DDX могут сразу отобразить новые значения полей на экране компьютера.

Имена, используемые в MFC

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

Названия всех классов и шаблонов классов библиотеки MFC начинаются с заглавной буквы C. При наследовании классов от классов MFC можно давать им любые имена. Рекомендуется начинать их названия с заглавной буквы C. Это сделает исходный текст приложения более ясным для понимания.

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

Библиотека MFC включает в себя, помимо классов, набор служебных функций. Названия этих функций начинаются с символов Afx, например AfxGetApp. Символы AFX являются сокращением от словосочетания Application FrameworkX, означающих основу приложения, его внутреннее устройство.

Символы AFX встречаются не только в названии функций MFC. Многие константы, макрокоманды и другие символы начинаются с этих символов. В общем случае AFX является признаком, по которому можно определить принадлежность того или иного объекта (функция, переменная, ключевое слово или символ) к библиотеке MFC.

Когда приложение разрабатывается средствами MFC AppWizard и ClassWizard, они размещают в исходном тексте приложения комментарии следующего вида:

	//{{AFX_ 	... 	//}}AFX_

Такие комментарии образуют блок кода программы, который управляется только средствами MFC AppWizard и ClassWizard. Пользователь не должен вручную вносить изменения в этом блоке. Для этого необходимо употреблять средства ClassWizard.

В следующей таблице представлено краткое описание некоторых блоков //{{AFX_:

Блок Описание
//{{AFX_DATA
//}}AFX_DATA
Включает объявление элементов данных класса. Используется в описании классов диалоговых панелей.
//{{AFX_DATA_INIT
//}}AFX_DATA_INIT
Включает инициализацию элементов данных класса. Используется в файле реализации классов диалоговых панелей.
//{{AFX_DATA_MAP
//}}AFX_DATA_MAP
Включает макрокоманды DDX, предназначенные для связывания элементов данных класса и органов управления диалоговых панелей. Используется в файле реализации классов диалоговых панелей.
//{{AFX_MSG
//}}AFX_MSG
Включает описание методов, которые предназначены для обработки сообщений. Этот блок используется при описании класса.
//{{AFX_MSG_MAP
//}}AFX_MSG_MAP
Включает макрокоманды таблицы сообщений класса. Используются совместно с AFX_MSG.
//{{AFX_VIRTUAL
//}}AFX_VIRTUAL
Включает описание переопределенных виртуальных методов класса. Блок AFX_VIRTUAL используется при описании класса.

MFC AppWizard и ClassWizard помогают разрабатывать приложения. Они создают все классы и методы, необходимые для его работы. Программисту остается дописать к ним свой код. В тех местах, где можно вставить свой код, MFC AppWizard и ClassWizard, как правило помещают комментарии:

 //TODO:

Для того что бы перейти к Visual C++, целесообразно получить некоторое представление о просто языке C++, так как он является базовым. Что бы начать обучение вам нужно сначала поставить какую-нибудь версию Visual C++. Лучше, конечно, если у вас есть место на HDD, поставить Visual C++ версии 6. Но можно поставить версию 5 или 4. Все мои примеры написаны на шестой версии, но они должны работать и на младших версиях. Многие думают, что если они поставили Visual C++, то могут писать программы только под Windows, но это не правильно. Visual C++ позволяет писать программы и на простом C++, как бы под DOS. Ну вот, я думаю, и можно начинать.

Понравилась статья? Поделить с друзьями:
  • На каком языке программирования пишут приложения для windows
  • На какой диск ставить файл подкачки windows 10 для игр
  • На диске не найдены файлы операционной системы windows 10 0x490
  • На windows 7 не устанавливается обновление kb4535102
  • На каком языке программирования пишется windows