Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

WinAPI C++

Основные возможности WinAPI

Определение 1

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

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

Все языки программирования, способные вызывать такие функции и поддерживающие такие типы данных в программах, исполняемых в среде Windows, позволяют работать с интерфейсом API. К ним относятся, например, C++, Pascal и Visual Basic.

Замечание 1

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

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

Типы данных WinAPI С++

В библиотеке WinAPI определено множество типов данных, подобно языкам C и С++ (int, float, char и другие). Все их можно разделить на несколько категорий:

  • основные;
  • дескрипторные;
  • строковые;
  • вспомогательные.

Далее рассмотрим каждый из этих видов подробнее.

К основным типам данных относятся:

  • BOOL – булевский тип данных, аналогичный bool. Он имеет два значения: NULL или 1;
  • BYTE – байт (восьмибитное беззнаковое целое число), аналогичное типу unsigned char;
  • DWORD – 32-битное беззнаковое целое число, аналогичное unsigned long int и UINT;
  • INT – 32-битное целое, аналогичное типу long int;
  • LONG – 32-битное целое – аналог того же long int;
  • NULL – нулевой указатель, объявляемый следующим образом: void * NULL=0;
  • UINT – 32-битное беззнаковое целое. Аналоги: unsigned long int, DWORD.
«WinAPI C++» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

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

Например, для получения дескриптора для устройства ввода/вывода используется следующая конструкция:

HANDLE h = GetStdHandle(DWORD nStdHandle);

В этой функции мы получили дескриптор (HANDLE h) для считывания входящих и исходящих потоков (std_in и std_out).

Для удобства в WinAPI для обозначения дескрипторных типов данных в их названиях используется первая буква H – от слова handle.

Если говорить о строковых переменных, то важным становится вопрос о кодировке текстовой информации. В операционной системе Windows применяется два вида символьных кодировок: ANSI и UNICODE. Причём однобайтные символы относятся к кодировке ANSI, а двухбайтные – к UNICODE. В зависимости от того, подключён ли юникод в свойствах проекта или нет, в WinAPI есть возможность использования двух видов строк UNICODE или TCHAR (для кодировки ANSI). Различия в их объявлении следующие: либо wchar_t str[10]; либо char str[10]; (создаём строку из 10 элементов в кодировке UNICODE и ANSI, соответственно).

Во всех названиях строковых типов данных используется специальный префикс LP – от словосочетания long pointer (то есть это некоторый указатель).

Вспомогательные типы данных используются в различных функциях библиотеки WinAPI. Рассмотрим некоторые из этих параметров. Например те, которые используются при работе с функцией обратного вызова некоторого действия с окном программы: LRESULT CALLBACK ИмяФункции(HWND hWnd, UINT uMSg, WPARAM wParam, LPARAM lParam);

Здесь используются следующие типы данных:

  • LRESULT – значение, возвращаемое оконной процедурой (имеет тип long);
  • LPARAM – тип для описания lParam (long parameter);
  • WPARAM – тип для описания wParam (word parameter).

Заметим, что WinAPI переопределяет множество типов данных, стандартных для языка C++. Во многом это связано с платформой для которой будет создаваться приложение. Например, тип LRESULT, если приложение скомпилировать для x86, будет являться типом long, но при компиляции для x64, LRESULT окажется типа int64.

Создание WinAPI окна с сообщением

На рисунке представлен код данной программы на языке WinAPI C++:

Код программы. Автор24 — интернет-биржа студенческих работ

Рисунок 1. Код программы. Автор24 — интернет-биржа студенческих работ

Здесь вначале добавляется статичная библиотека WinAPI, которая содержит определения различных функций, а затем подключается заголовочный файл с объявлениями этих функций, структур и констант. Библиотека user32.lib содержит все основные возможности Windows по работе с окнами и обработке различных событий.

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

Также важной является функция WinMain – это точка входа в программу, она вызывается операционной системой.

Воспользуйся нейросетью от Автор24
Не понимаешь, как писать работу?
Попробовать ИИ
Дата написания статьи: 16.08.2021
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot