Начала API-программирования
API-программирование не предполагает использование каких либо библиотек, кроме тех, которые поставляются вместе с операционной системой Windows. Поскольку это не учебник, я свободен изложения азов программирования в Visual Studio. Я надеюсь, что читающие этот текст могут свободно создать проект для Visual С++. Я всегда создаю пустые проекты, так как люблю начинать все с самого начала. Наверное ассемблер научил меня этому. В Windows существуют приложения двух типов: консольные и графические. Предполагается, что консольные работают с текстовыми окнами - консолями, аграфические создают графические окна. Впрочем это до определенной степени условность, так как консольное приложение может создавать графическое окно, а графические приложения могут создавать консольные окна. Не забудем также указать в настройке проекта, что мы создаем 64-битовое приложение. Для этого надо вызвать окно Менеджера Конфигурации (Configuration Manager), а в нем, я надеюсь, вы уже без особого труда во всем разберетесь.

В Visual Studia все нужные динамические библиотеки подключаются автоматически и после компиляции указываются в секции импорта исполняемого модуля. Поэтому мы просто используем нужные функции и не задумываемся о том, что их надо подключать (при необходимости они подгружаются автоматичесие). Но есть и другой способ использования нужной динамической библиотеки, я бы назвал этот способ 'ручным', по 'научному' это называется позднее динамическое связывание. Придет время и я расскажу об этом. А сейчас пока просто будем использовать функции API без всякой заботы 'что и как'. Также я надеюсь, что язык C вы тоже знаете. Если же нет, то добро пожаловать на другой мой ресурс. Условимся также не использовать функции из стандартных библиотек языка C - будем обходится собственными силами и функциями API. Вот такой подход я бы и назвал чистым API-программированием.

Приложение, которое вы видите ниже, ну уж совсем просто. В нем ничего нет. Есть только API-функция, вызывающая информационное сообщение. Без этого вызова было бы уж совсем не интересно.
#include <Windows.h>
int CALLBACK WinMain(
_In_ HINSTANCE hInstance,
_In_ HINSTANCE hPrevInstance,
_In_ LPSTR lpCmdLine,
_In_ int nCmdShow
)
{
MessageBoxW(0,L"Это перовое простейшее приложение, написанное на API-windows.",L"Информационное сообщение",0);
return 0;
}

Программа хоть и элементарна, но требует нескольких пояснений. Начну с функции WinMain. Конечно, легко догадаться, что это просто заменитель главной функции main в случае графических приложений. Для консольных приложений по прежнему используется главная функция с именем main. Функция имеет четыре параметра, которые я пока комментировать не буду, хотя, я уверен, что некоторые уже догадались, что из себя представляют последние два. Заголовочный файл windows.h - основной заголовочный файл при API-программировании в Windows. Он будет присутствовать во всех наших приложениях. Выход из приложения осуществляется стандартно с помощью оператора return. Наконец обратимся к API функции MessageBoxW. Функция осуществляет вывод информационного сообщения. Она обладает довольно разнообразными возможностями. В данном случае мы используем простейший ее вариант. Обратим внимание на суффикс 'W' в конце функции. Он означает, что все строковые параметры функции API должны быть представлены в двухбайтовой кодировке Unicode. В наших приложениях мы будем использовать только эту кодировку. Если у функции нет строковых параметров, то и указанный суффикс у ней отсутствует. Первый параметр функции представляет собой дескриптор окна, которому принадлежит данное сообщение. Если параметр равен 0, то и окна собственника у данного сообщения нет. Второй параметр функции это само информационное сообщение. Оно может либо строковой константой или указателем на строку символов в Unicode-кодировке. Преффикс 'L' как раз и сообщает компилятору, что данная строка должна кодироваться в Unicode. Третий параметр это заголовок информационного окна. Наконец последний параметр задает в каком виде это окно появляется. 0 означает, что мы используем простейший вариант окна с кнопкой Ok. Я думаю, что вы самостоятельно сможете узнать и другие значения этого параметра, если вам это интересно.

Ну вот пока все. Наслаждайтесь программированием.

 Назад       Заметки       Сайт       Страница-портал       Журнал
(c) Copyright Владислава Юрьевич Пирогов