Base Documentation - TonSharp/WAPITIS GitHub Wiki

Introduction

На данный момент фреймворк поддерживает небольшое количество "обёрнутого" функционала WinAPI, а именно готовые структуры и классы для удобного пользования. Общими силами нашего комьюнити мы надеемся сделать WAPITIS мощным и простым инструментом для разработки нативных приложений на WinAPI.

Планы разработки:

  • Добавить поддержку UI элементов
  • Добавить поддержку контекстного меню
  • Добавить поддержку OpenGL

Быстрый доступ:

Structures

CallbackArgs

Находится в файле Args.hpp. Содержит основные аргументы структуры обработки сообщения tagMSG из WinAPI. Передаётся сторонним пользовательским функциям.

struct CallbackArgs
{
  HWND hWnd;
  UINT Msg;
  WPARAM wParam;
  LPARAM lParam;
};

MainArgs

Находится в файле Args.hpp. Содержит в себе все аргументы функции WinMain из WinAPI. Передается сторонним пользовательским функциям.

struct MainArgs
{
  HINSTANCE hInstance;
  HINSTANCE hPrevInstance; 
  LPSTR lpCmdLine; 
  int nCmdShow;
};

Transform

Находится в файле Transform.hpp. Данная структура объединяет переменные Позиции X и Позиции Y или Ширины окна по оси X и Ширины окна по оси Y (вместо стандартных x, y, nWidth, nHeight из WinAPI). Используется другими классами.

struct Transform
{
  int x, y;
};

Classes

Msg

Находится в файле Msg.hpp. Упрощает работу с MSG в WinAPI. Класс не имеет методов для настройки и конструкторов. В основном нужен только для работы фреймворка и не всегда пригодится при разработке приложения.

Get

Метод получает сообщение через системный GetMessage.

BOOL Get()

Dispatch

Метод преобразует сообщение через TranslateMessage и отправляет его через DispatchMessage.

void Dispatch()

wParam

Метод возвращает параметр wParam сообщения.

WPARAM wParam()

WindowClass

Не используется в пользовательском коде (смотреть Window).

Упрощает работу с WNDCLASSEX, оборачивая инициализацию и регистрацию структуры несколькими функциями.

Constructors

Конструктор по умолчанию, принимающий название класса.

WindowClass(wstring className) // (название класса)

InitDefaultClass

Метод инициализации полей класс, принимающий INSTANCE приложения

void InitDefaulClass(HINSTANCE hInstance)

Register

Метод регистрации стандартного класса (вызывается только один раз). Возвращает true если регистрация прошла успешно, иначе - false.

bool Register()

SetClassStyle

Метод устанавливает стиль класса. В качестве аргумента передается комбинация стилей (Вызывается только до регистрации класса. Метод уже учитывает CS_HREDRAW | CS_VREDRAW)

void SetClassStyle(DWORD classStyle)

SetBackgroundColor

Метод устанавливает цвет заднего фона класса. В качестве аргумента передается структура цвета (Аналогично с SetClassStyle)

void SetBackgroundColor(COLORREF bgColor)

GetPointer

Метод получения указателя на структуру WNDCLASSEX.

WNDCLASSEX* GetPointer()

Get

Метод получения структуры WNDCLASSEX.

WNDCLASSEX Get()

Window

Упрощает работу с окнами, а именно с их созданием, отображением и настройкой.

Constructors

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

Window(wstring windowCaption, wstring* className, MainArgs args) // (заголовок окна, ссылка на имя класса, аргументы `_main_`)

RegisterClass

Метод ручной регистрации класса окна. Если регистрация прошла успешно, метод вернет true, иначе - false (Примечание: Не обязательно вручную регистрировать класс окна этим методом. При создании окна регистрация будет выполнена автоматически).

bool RegisterClass()

CreateDefaultWindow

Метод создания стандартного окна. В качестве аргументов принимает родителя и ссылку на пользовательскую функцию обработки сообщений. В случае успешного создания окна, функция возвращает true, иначе - false (Примечание: Пользовательская функция должна иметь возвращаемый тип данных int а также содержать единственный аргумент CallbackArgs)

bool CreateDefaultWindow(HWND parent, int (*callback)(CallbackArgs args))

Пример:

int MainCallback(CallbackArgs args)
{
  return 0;
}

int _main_(MainArgs args)
{
  wstring mainClass = L"MainClass";
  Window* wnd = new Window(L"MainWindow", &mainClass, args);
  wnd->CreateDefaultWindow(NULL, MainCallback);
}

CreateCustomWindow

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

bool CreateCustomWindow(
  DWORD extentedStyle, //Расширенный стиль (`NULL` или комбинация макросов)
  DWORD style,         //Стиль
  Transform pos,       //Позиция
  Transform size,      //Размер
  HWND parent,         //Родительское окно
  HMENU menu,          //Дескриптор меню (`NULL` или что то ещё)
  LPVOID lParam,       //Параметры (обычно `NULL`)
  int (*callback)(CallbackArgs args) //Функция обработчик сообщений
)

Пример:

int MainCallback(CallbackArgs args)
{
  return 0;
}

int _main_(MainArgs args)
{
  wstring mainClass = L"MainClass";
  Window* wnd = new Window(L"MainWindow", &mainClass, args);
  wnd->CreateCustomWindow(NULL, WS_OVERLAPPEDWINDOW, {0, 0}, {300, 300}, NULL, NULL, NULL, MainCalback);
}

Enable

Метод делает окно активным для пользователя (разрешает взаимодействовать с ним).

void Enable()

Disable

Противоположность методу Enable.

void Disable()

SetEnableState

Метод включает или отключает окно (вызывает Enable или Disable).

void SetEnableState(bool state)

SetCaption

Метод установливает заголовок окна.

void SetCaption(wstring newCaption)

SetBackgroundColor

Метод устанавливает цвет заливки окна (указанный в параметре). В отличии от установки цвета заливки в настройке WindowClass, это цвет может устанавливаться и после создания окна.

void SetBackgroundColor(COLORREF color)

Show

Метод отображения окна на экране. Функции создания окна CreateDefaultWindow и CreateCustomWindow уже содержат в себе вызов этого метода, поэтому отдельный его вызов не требуется.

void Show()

Update

Метод обновления окна. Без надобности его ручной вызов не требуется.

void Update()

Get

Метод возвращает дескриптор данного окна.

HWND Get()

GetPoiner

Метод возвращает ссылку на дескриптор данного окна.

HWND* GetPointer()

GetClassPointer

Метод возвращает ссылку на класс окна.

WindowClass* GetClassPointer()