-
Автор темы
- #1
году так 2010-2013(точно не помню) изучал STL, в частности, так называемые, "callback function". В параллели понадобилось что-то простое и быстрое для создания окна и базовых контролов, что бы не нужно было каждый раз городить код и что бы выглядело красиво. В конечном итоге родилась идея написать обертку над winapi, используя изучаемые в данный момент методы, завернув все в статическую библиотеку. Были написаны базовые методы, которые часто использовались мной в той или иной ситуации(от простого инжектора до корпоративных плагин-модулей). В скором времени дело было заброшено и случайно найдено на старой флешке уже "в наши дни") Возникла мысль слегка реанимировать старый проект и скинуть сюда с примерами его использования.
Что умеет(не все показано):
Дописывать полнофункциональный GUI нет смысла, так как готовых решений и так полно, а вот показать свою старую работу думаю стоит. Основные принципы работы кода это callback и лямбда функции, которые зачастую бывают полезными, а на фоне новых стандартов С++17 так вообще необходимы.
Подключаем как любое другое СДК. Библиотека собрана с использованием набора инструментов v141 в режиме MT.
Создаем проект "Приложение Window.exe", пустой. В настройках каталогов указываем пути к библиотеке(Lib и Include).
Создаем три фаила:
cMyWindow.h создаем класс и подключаем библиотеку
cMyWindow.cpp описываем
Base.cpp описываем точку входа и создаем экземпляр нашего нового класса и запускаем обработку сообщений
Собираем, запускаем, радуемся
Что умеет(не все показано):
Дописывать полнофункциональный GUI нет смысла, так как готовых решений и так полно, а вот показать свою старую работу думаю стоит. Основные принципы работы кода это callback и лямбда функции, которые зачастую бывают полезными, а на фоне новых стандартов С++17 так вообще необходимы.
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
Подключаем как любое другое СДК. Библиотека собрана с использованием набора инструментов v141 в режиме MT.
Создаем проект "Приложение Window.exe", пустой. В настройках каталогов указываем пути к библиотеке(Lib и Include).
Создаем три фаила:
- Base.cpp - точка входа
- cMyWindow.cpp - описание методов класса
- cMyWindow.h - список методов и свойств
cMyWindow.h создаем класс и подключаем библиотеку
Код:
#pragma once
#include <memory>
#include <algorithm>
#include <IWindow.hpp>
#pragma comment( lib, "WLib_x86.lib" )
class cMyWindow
{
public:
cMyWindow(HINSTANCE hInstance);
~cMyWindow(void);
private:
void OnCreate(void);
std::unique_ptr<IWindow> m_pWindow;
HWND m_hWnd;
HINSTANCE m_hInstance;
};
Код:
#include "cMyWindow.h"
cMyWindow::cMyWindow(HINSTANCE hInstance)
: m_hInstance(hInstance)
{
//создаем окно
m_pWindow.reset(new IWindow(hInstance, "MyWindow_class", "DEMO::Window", 800, 600, m_hWnd));
if (m_pWindow.get() != nullptr)
{
//если удалось создать объект, то работаем дальше
OnCreate();
}
}
void cMyWindow::OnCreate(void)
{
//тут будем создавать контролы и обработчики
}
cMyWindow::~cMyWindow()
{
//умные указатели, мусор сами почистят
}
Код:
#include"cMyWindow.h"
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char* lpszCommandLine, int iCommandShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpszCommandLine);
UNREFERENCED_PARAMETER(iCommandShow);
cMyWindow m_pDemoWindow(hInstance);
MSG Msg = { 0 };
while (GetMessage(&Msg, 0, 0, 0) > 0)
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}
Последнее редактирование: