mirror of
https://github.com/narzoul/DDrawCompat
synced 2024-12-30 08:55:36 +01:00
Added caption and close button to config overlay
This commit is contained in:
parent
87c2af5049
commit
9a37aa6e24
@ -273,6 +273,7 @@
|
||||
<ClInclude Include="Gdi\WinProc.h" />
|
||||
<ClInclude Include="Input\HotKey.h" />
|
||||
<ClInclude Include="Input\Input.h" />
|
||||
<ClInclude Include="Overlay\ButtonControl.h" />
|
||||
<ClInclude Include="Overlay\ComboBoxControl.h" />
|
||||
<ClInclude Include="Overlay\ComboBoxDropDown.h" />
|
||||
<ClInclude Include="Overlay\ConfigWindow.h" />
|
||||
@ -383,6 +384,7 @@
|
||||
<ClCompile Include="Gdi\WinProc.cpp" />
|
||||
<ClCompile Include="Input\HotKey.cpp" />
|
||||
<ClCompile Include="Input\Input.cpp" />
|
||||
<ClCompile Include="Overlay\ButtonControl.cpp" />
|
||||
<ClCompile Include="Overlay\ComboBoxControl.cpp" />
|
||||
<ClCompile Include="Overlay\ComboBoxDropDown.cpp" />
|
||||
<ClCompile Include="Overlay\ConfigWindow.cpp" />
|
||||
|
@ -567,6 +567,9 @@
|
||||
<ClInclude Include="Config\Settings\LogLevel.h">
|
||||
<Filter>Header Files\Config\Settings</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Overlay\ButtonControl.h">
|
||||
<Filter>Header Files\Overlay</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Gdi\Gdi.cpp">
|
||||
@ -893,6 +896,9 @@
|
||||
<ClCompile Include="Win32\Version.cpp">
|
||||
<Filter>Source Files\Win32</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Overlay\ButtonControl.cpp">
|
||||
<Filter>Source Files\Overlay</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="DDrawCompat.rc">
|
||||
|
48
DDrawCompat/Overlay/ButtonControl.cpp
Normal file
48
DDrawCompat/Overlay/ButtonControl.cpp
Normal file
@ -0,0 +1,48 @@
|
||||
#include <Common/Hook.h>
|
||||
#include <Input/Input.h>
|
||||
#include <Overlay/ButtonControl.h>
|
||||
|
||||
namespace Overlay
|
||||
{
|
||||
ButtonControl::ButtonControl(Control& parent, const RECT& rect, const std::string& label, ClickHandler clickHandler)
|
||||
: Control(&parent, rect, WS_BORDER | WS_TABSTOP | WS_VISIBLE)
|
||||
, m_clickHandler(clickHandler)
|
||||
, m_label(*this, rect, label, DT_CENTER)
|
||||
{
|
||||
}
|
||||
|
||||
void ButtonControl::onLButtonDown(POINT pos)
|
||||
{
|
||||
Input::setCapture(this);
|
||||
onMouseMove(pos);
|
||||
}
|
||||
|
||||
void ButtonControl::onLButtonUp(POINT pos)
|
||||
{
|
||||
if (Input::getCapture() == this)
|
||||
{
|
||||
Input::setCapture(m_parent);
|
||||
m_label.setColor(FOREGROUND_COLOR);
|
||||
if (PtInRect(&m_rect, pos))
|
||||
{
|
||||
m_clickHandler(*this);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_parent->onMouseMove(pos);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ButtonControl::onMouseMove(POINT pos)
|
||||
{
|
||||
if (Input::getCapture() == this)
|
||||
{
|
||||
m_label.setColor(PtInRect(&m_rect, pos) ? HIGHLIGHT_COLOR : FOREGROUND_COLOR);
|
||||
}
|
||||
else
|
||||
{
|
||||
Control::onMouseMove(pos);
|
||||
}
|
||||
}
|
||||
}
|
26
DDrawCompat/Overlay/ButtonControl.h
Normal file
26
DDrawCompat/Overlay/ButtonControl.h
Normal file
@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
|
||||
#include <Windows.h>
|
||||
|
||||
#include <Overlay/LabelControl.h>
|
||||
|
||||
namespace Overlay
|
||||
{
|
||||
class ButtonControl : public Control
|
||||
{
|
||||
public:
|
||||
typedef void (*ClickHandler)(Control&);
|
||||
|
||||
ButtonControl(Control& parent, const RECT& rect, const std::string& label, ClickHandler clickHandler);
|
||||
|
||||
virtual void onLButtonDown(POINT pos) override;
|
||||
virtual void onLButtonUp(POINT pos) override;
|
||||
virtual void onMouseMove(POINT pos) override;
|
||||
|
||||
private:
|
||||
ClickHandler m_clickHandler;
|
||||
LabelControl m_label;
|
||||
};
|
||||
}
|
@ -5,10 +5,20 @@
|
||||
#include <Overlay/ConfigWindow.h>
|
||||
#include <Overlay/SettingControl.h>
|
||||
|
||||
namespace
|
||||
{
|
||||
const int CAPTION_HEIGHT = 22;
|
||||
}
|
||||
|
||||
namespace Overlay
|
||||
{
|
||||
ConfigWindow::ConfigWindow()
|
||||
: Window(nullptr, { 0, 0, SettingControl::TOTAL_WIDTH, 300 }, Config::configHotKey.get())
|
||||
: Window(nullptr, { 0, 0, SettingControl::TOTAL_WIDTH, 330 }, Config::configHotKey.get())
|
||||
, m_caption(*this, { 0, 0, SettingControl::TOTAL_WIDTH - CAPTION_HEIGHT + 1, CAPTION_HEIGHT },
|
||||
"DDrawCompat Config Overlay", 0, WS_BORDER | WS_VISIBLE)
|
||||
, m_closeButton(*this,
|
||||
{ SettingControl::TOTAL_WIDTH - CAPTION_HEIGHT, 0, SettingControl::TOTAL_WIDTH, CAPTION_HEIGHT },
|
||||
"X", onClose)
|
||||
, m_focus(nullptr)
|
||||
{
|
||||
addControl(Config::alternatePixelCenter);
|
||||
@ -30,6 +40,7 @@ namespace Overlay
|
||||
const int rowHeight = 25;
|
||||
|
||||
RECT rect = { 0, index * rowHeight + BORDER / 2, m_rect.right, (index + 1) * rowHeight + BORDER / 2 };
|
||||
OffsetRect(&rect, 0, m_caption.getRect().bottom);
|
||||
m_controls.emplace_back(*this, rect, setting);
|
||||
}
|
||||
|
||||
@ -41,6 +52,11 @@ namespace Overlay
|
||||
return r;
|
||||
}
|
||||
|
||||
void ConfigWindow::onClose(Control& control)
|
||||
{
|
||||
static_cast<ConfigWindow*>(control.getParent())->setVisible(false);
|
||||
}
|
||||
|
||||
void ConfigWindow::setFocus(SettingControl* control)
|
||||
{
|
||||
if (m_focus == control)
|
||||
|
@ -2,6 +2,8 @@
|
||||
|
||||
#include <list>
|
||||
|
||||
#include <Overlay/ButtonControl.h>
|
||||
#include <Overlay/LabelControl.h>
|
||||
#include <Overlay/SettingControl.h>
|
||||
#include <Overlay/Window.h>
|
||||
|
||||
@ -17,10 +19,14 @@ namespace Overlay
|
||||
void setFocus(SettingControl* control);
|
||||
|
||||
private:
|
||||
static void onClose(Control& control);
|
||||
|
||||
virtual RECT calculateRect(const RECT& monitorRect) const override;
|
||||
|
||||
void addControl(Config::Setting& setting);
|
||||
|
||||
LabelControl m_caption;
|
||||
ButtonControl m_closeButton;
|
||||
std::list<SettingControl> m_controls;
|
||||
SettingControl* m_focus;
|
||||
};
|
||||
|
@ -27,7 +27,10 @@ namespace Overlay
|
||||
|
||||
void LabelControl::setColor(COLORREF color)
|
||||
{
|
||||
m_color = color;
|
||||
invalidate();
|
||||
if (m_color != color)
|
||||
{
|
||||
m_color = color;
|
||||
invalidate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user