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="Gdi\WinProc.h" />
|
||||||
<ClInclude Include="Input\HotKey.h" />
|
<ClInclude Include="Input\HotKey.h" />
|
||||||
<ClInclude Include="Input\Input.h" />
|
<ClInclude Include="Input\Input.h" />
|
||||||
|
<ClInclude Include="Overlay\ButtonControl.h" />
|
||||||
<ClInclude Include="Overlay\ComboBoxControl.h" />
|
<ClInclude Include="Overlay\ComboBoxControl.h" />
|
||||||
<ClInclude Include="Overlay\ComboBoxDropDown.h" />
|
<ClInclude Include="Overlay\ComboBoxDropDown.h" />
|
||||||
<ClInclude Include="Overlay\ConfigWindow.h" />
|
<ClInclude Include="Overlay\ConfigWindow.h" />
|
||||||
@ -383,6 +384,7 @@
|
|||||||
<ClCompile Include="Gdi\WinProc.cpp" />
|
<ClCompile Include="Gdi\WinProc.cpp" />
|
||||||
<ClCompile Include="Input\HotKey.cpp" />
|
<ClCompile Include="Input\HotKey.cpp" />
|
||||||
<ClCompile Include="Input\Input.cpp" />
|
<ClCompile Include="Input\Input.cpp" />
|
||||||
|
<ClCompile Include="Overlay\ButtonControl.cpp" />
|
||||||
<ClCompile Include="Overlay\ComboBoxControl.cpp" />
|
<ClCompile Include="Overlay\ComboBoxControl.cpp" />
|
||||||
<ClCompile Include="Overlay\ComboBoxDropDown.cpp" />
|
<ClCompile Include="Overlay\ComboBoxDropDown.cpp" />
|
||||||
<ClCompile Include="Overlay\ConfigWindow.cpp" />
|
<ClCompile Include="Overlay\ConfigWindow.cpp" />
|
||||||
|
@ -567,6 +567,9 @@
|
|||||||
<ClInclude Include="Config\Settings\LogLevel.h">
|
<ClInclude Include="Config\Settings\LogLevel.h">
|
||||||
<Filter>Header Files\Config\Settings</Filter>
|
<Filter>Header Files\Config\Settings</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="Overlay\ButtonControl.h">
|
||||||
|
<Filter>Header Files\Overlay</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="Gdi\Gdi.cpp">
|
<ClCompile Include="Gdi\Gdi.cpp">
|
||||||
@ -893,6 +896,9 @@
|
|||||||
<ClCompile Include="Win32\Version.cpp">
|
<ClCompile Include="Win32\Version.cpp">
|
||||||
<Filter>Source Files\Win32</Filter>
|
<Filter>Source Files\Win32</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="Overlay\ButtonControl.cpp">
|
||||||
|
<Filter>Source Files\Overlay</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ResourceCompile Include="DDrawCompat.rc">
|
<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/ConfigWindow.h>
|
||||||
#include <Overlay/SettingControl.h>
|
#include <Overlay/SettingControl.h>
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
const int CAPTION_HEIGHT = 22;
|
||||||
|
}
|
||||||
|
|
||||||
namespace Overlay
|
namespace Overlay
|
||||||
{
|
{
|
||||||
ConfigWindow::ConfigWindow()
|
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)
|
, m_focus(nullptr)
|
||||||
{
|
{
|
||||||
addControl(Config::alternatePixelCenter);
|
addControl(Config::alternatePixelCenter);
|
||||||
@ -30,6 +40,7 @@ namespace Overlay
|
|||||||
const int rowHeight = 25;
|
const int rowHeight = 25;
|
||||||
|
|
||||||
RECT rect = { 0, index * rowHeight + BORDER / 2, m_rect.right, (index + 1) * rowHeight + BORDER / 2 };
|
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);
|
m_controls.emplace_back(*this, rect, setting);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,6 +52,11 @@ namespace Overlay
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ConfigWindow::onClose(Control& control)
|
||||||
|
{
|
||||||
|
static_cast<ConfigWindow*>(control.getParent())->setVisible(false);
|
||||||
|
}
|
||||||
|
|
||||||
void ConfigWindow::setFocus(SettingControl* control)
|
void ConfigWindow::setFocus(SettingControl* control)
|
||||||
{
|
{
|
||||||
if (m_focus == control)
|
if (m_focus == control)
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
#include <list>
|
#include <list>
|
||||||
|
|
||||||
|
#include <Overlay/ButtonControl.h>
|
||||||
|
#include <Overlay/LabelControl.h>
|
||||||
#include <Overlay/SettingControl.h>
|
#include <Overlay/SettingControl.h>
|
||||||
#include <Overlay/Window.h>
|
#include <Overlay/Window.h>
|
||||||
|
|
||||||
@ -17,10 +19,14 @@ namespace Overlay
|
|||||||
void setFocus(SettingControl* control);
|
void setFocus(SettingControl* control);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
static void onClose(Control& control);
|
||||||
|
|
||||||
virtual RECT calculateRect(const RECT& monitorRect) const override;
|
virtual RECT calculateRect(const RECT& monitorRect) const override;
|
||||||
|
|
||||||
void addControl(Config::Setting& setting);
|
void addControl(Config::Setting& setting);
|
||||||
|
|
||||||
|
LabelControl m_caption;
|
||||||
|
ButtonControl m_closeButton;
|
||||||
std::list<SettingControl> m_controls;
|
std::list<SettingControl> m_controls;
|
||||||
SettingControl* m_focus;
|
SettingControl* m_focus;
|
||||||
};
|
};
|
||||||
|
@ -27,7 +27,10 @@ namespace Overlay
|
|||||||
|
|
||||||
void LabelControl::setColor(COLORREF color)
|
void LabelControl::setColor(COLORREF color)
|
||||||
{
|
{
|
||||||
m_color = color;
|
if (m_color != color)
|
||||||
invalidate();
|
{
|
||||||
|
m_color = color;
|
||||||
|
invalidate();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user