mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
105 lines
1.9 KiB
C++
105 lines
1.9 KiB
C++
|
#include "stdafx.h"
|
||
|
#include "Button.h"
|
||
|
#include "Form.h"
|
||
|
|
||
|
namespace Forms
|
||
|
{
|
||
|
Button::Button()
|
||
|
: ButtonBase(), _DialogResult(DialogResult::None)
|
||
|
{
|
||
|
SetStyle(ControlStyles::StandardClick | ControlStyles::StandardDoubleClick, false);
|
||
|
|
||
|
// We are a button control
|
||
|
this->_RTTI = ControlTypes::Button;
|
||
|
}
|
||
|
|
||
|
DialogResult Button::GetDialogResult()
|
||
|
{
|
||
|
return this->_DialogResult;
|
||
|
}
|
||
|
|
||
|
void Button::SetDialogResult(DialogResult Value)
|
||
|
{
|
||
|
this->_DialogResult = Value;
|
||
|
}
|
||
|
|
||
|
void Button::PerformClick()
|
||
|
{
|
||
|
if (CanSelect())
|
||
|
{
|
||
|
ResetFlagsAndPaint();
|
||
|
OnClick();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Button::NotifyDefault(bool Value)
|
||
|
{
|
||
|
if (IsDefault() != Value)
|
||
|
SetIsDefault(Value);
|
||
|
}
|
||
|
|
||
|
void Button::OnClick()
|
||
|
{
|
||
|
auto Form = this->FindForm();
|
||
|
|
||
|
if (Form != nullptr)
|
||
|
((Forms::Form*)Form)->SetDialogResult(this->_DialogResult);
|
||
|
|
||
|
// Call base event last
|
||
|
ButtonBase::OnClick();
|
||
|
}
|
||
|
|
||
|
void Button::OnMouseUp(const std::unique_ptr<MouseEventArgs>& EventArgs)
|
||
|
{
|
||
|
if (EventArgs->Button == MouseButtons::Left && GetFlag(ButtonFlags::FlagMousePressed))
|
||
|
{
|
||
|
auto isMouseDown = GetFlag(ButtonFlags::FlagMouseDown);
|
||
|
|
||
|
if (GetStyle(ControlStyles::UserPaint))
|
||
|
{
|
||
|
this->ResetFlagsAndPaint();
|
||
|
}
|
||
|
|
||
|
if (isMouseDown)
|
||
|
{
|
||
|
auto Pt = PointToScreen({ (INT)EventArgs->X, (INT)EventArgs->Y });
|
||
|
|
||
|
POINT nPt;
|
||
|
nPt.x = Pt.X;
|
||
|
nPt.y = Pt.Y;
|
||
|
|
||
|
if (WindowFromPoint(nPt) == this->_Handle)
|
||
|
{
|
||
|
if (GetStyle(ControlStyles::UserPaint))
|
||
|
OnClick();
|
||
|
|
||
|
OnMouseClick(EventArgs);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Call base event last
|
||
|
ButtonBase::OnMouseUp(EventArgs);
|
||
|
}
|
||
|
|
||
|
CreateParams Button::GetCreateParams()
|
||
|
{
|
||
|
auto Cp = ButtonBase::GetCreateParams();
|
||
|
|
||
|
Cp.ClassName = "BUTTON";
|
||
|
|
||
|
if (GetStyle(ControlStyles::UserPaint))
|
||
|
Cp.Style |= BS_OWNERDRAW;
|
||
|
else
|
||
|
{
|
||
|
Cp.Style |= BS_MULTILINE;
|
||
|
Cp.Style |= BS_PUSHBUTTON;
|
||
|
|
||
|
if (this->IsDefault())
|
||
|
Cp.Style |= BS_DEFPUSHBUTTON;
|
||
|
}
|
||
|
|
||
|
return Cp;
|
||
|
}
|
||
|
}
|