tekno_uttv2/ultimateteknotool.v2/windows_injectorpage.cpp
2020-12-31 15:35:46 +03:00

106 lines
2.6 KiB
C++

#include "pch.h"
#include "windows_injectorpage.h"
#include "Injector.h"
#include "debugconsole.h"
namespace windows_injectorpage {
const wchar_t ws_inject[] = L"inject";
const wchar_t ws_emptytext[] = L"";
constexpr unsigned short maxlen_injectpathtofile = (128 - 32);
class PathAndInjectButton
{
private:
CWindow_edit_cfg path;
CWindow_button injectorbutton;
public:
PathAndInjectButton() = default;
~PathAndInjectButton() = default;
void Build(CWindowsBuilder& builder, int editwidth, int buttonwidth, int height, int gap)
{
constexpr DWORD FlatButtonStyleInvisble = (WS_CHILD & ~WS_VISIBLE) | BS_PUSHBUTTON | BS_CENTER | BS_FLAT;
constexpr DWORD NewEditStyle_Invisible = WS_CHILD & ~WS_VISIBLE | WS_BORDER;
builder.ChangeStyle(NewEditStyle_Invisible);
builder.ChangeHeight(height);
builder.ChangeWidth(editwidth);
builder.ChangeTextP(ws_emptytext);
this->path.Visit(&builder);
builder.ChangeLeftPos(builder.build_left_pos + builder.build_width + gap);
builder.ChangeStyle(FlatButtonStyleInvisble);
builder.ChangeWidth(buttonwidth);
builder.ChangeTextP(ws_inject);
this->injectorbutton.Visit(&builder);
}
void Show() const
{
path.Show();
injectorbutton.Show();
}
void Hide() const
{
path.Hide();
injectorbutton.Hide();
}
void ButtonHandler(WPARAM& wparam)
{
if (injectorbutton.id == LOWORD(wparam))
{
Injector::Inject0r().APC_Inject(CWindowTextReader_GetTextW(&path, maxlen_injectpathtofile));
}
}
void ApplyFonts(CWindowsFontApplier& fontmaster)
{
this->injectorbutton.Visit(&fontmaster);
this->path.Visit(&fontmaster);
}
};
PathAndInjectButton path1;
PathAndInjectButton path2;
};
void windows_injectorpage::Build(CWindowsBuilder& builder, int left, int width, int top, int height, HWND hwnd)
{
builder.ChangeParentHWND(hwnd);
builder.ChangeLeftPos(left);
builder.ChangeTopPos(top);
int gap = 5;
int bwidth = 50;
int editwidth = width - (left*2 + gap + bwidth);
int rheight = 20;
path1.Build(builder, editwidth, bwidth, rheight, gap);
builder.ChangeLeftPos(left);
builder.ChangeTopPos(builder.build_top_pos + builder.build_height + gap);
path2.Build(builder, editwidth, bwidth, rheight, gap);
}
void windows_injectorpage::ApplyFonts(CWindowsFontApplier& fontappl)
{
path1.ApplyFonts(fontappl);
path2.ApplyFonts(fontappl);
}
void windows_injectorpage::Show()
{
path1.Show();
path2.Show();
}
void windows_injectorpage::Hide()
{
path1.Hide();
path2.Hide();
}
void windows_injectorpage::ButtonHandler(WPARAM& param)
{
path1.ButtonHandler(param);
path2.ButtonHandler(param);
}