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()