HiEasyX  Ver 0.3.0
EasyX 全面扩展库
HiEasyX::Button类 参考

按钮控件 更多...

#include <Button.h>

类 HiEasyX::Button 继承关系图:
HiEasyX::ControlBase HiEasyX::Container

Public 成员函数

 Button ()
 
 Button (int x, int y, int w, int h, std::wstring wstrText=L"")
 
void SetEnable (bool enable) override
 启用控件 更多...
 
virtual void EnableClassicStyle (bool enable)
 是否启用经典样式 更多...
 
void UpdateMessage (ExMessage msg) override
 更新消息 更多...
 
void Draw (bool draw_child=true) override
 绘制 更多...
 
- Public 成员函数 继承自 HiEasyX::ControlBase
 ControlBase ()
 
 ControlBase (std::wstring wstrText)
 
 ControlBase (int x, int y, int w=0, int h=0, std::wstring wstrText=L"")
 
virtual ~ControlBase ()
 
ControlBaseGetParent ()
 
virtual void SetParent (ControlBase *p)
 设置父控件(父控件调用 AddChild) 更多...
 
virtual bool IsAutoSizeForChild () const
 
virtual void EnableAutoSizeForChild (bool enable)
 为子控件自动改变大小以容纳控件(不容纳负坐标部分) 更多...
 
std::list< ControlBase * > & GetChildList ()
 
size_t GetChildCount ()
 获取子控件总数 更多...
 
virtual void AddChild (ControlBase *p, int offset_x=0, int offset_y=0)
 
virtual void RemoveChild (ControlBase *p)
 
virtual bool IsEnabled () const
 
virtual bool IsVisible () const
 
virtual void SetVisible (bool visible)
 
virtual bool GetAutoRedrawState () const
 
virtual void EnableAutoRedraw (bool enable)
 启用自动重绘(接受到基础消息事件时自动标识需要重绘) 更多...
 
virtual CanvasGetCanvas ()
 
virtual COLORREF GetBkColor () const
 
virtual void SetBkColor (COLORREF color)
 
virtual COLORREF GetTextColor () const
 
virtual void SetTextColor (COLORREF color)
 
virtual void EnableBorder (bool bEnableBorder, COLORREF color=BLACK, int thickness=1)
 
virtual void SetAlpha (BYTE alpha, bool bUseCanvasAlpha, bool isAlphaCalculated)
 
virtual std::wstring GetText () const
 
virtual void SetText (std::wstring wstr)
 
virtual void Draw_Text (int nTextOffsetX=0, int nTextOffsetY=0)
 
virtual void Redraw ()
 重绘控件 更多...
 
virtual void Render (Canvas *dst, RECT *pRct=nullptr, int *pCount=0)
 渲染控件到外部 更多...
 
virtual void SetMsgProcFunc (MESSAGE_PROC_FUNC func)
 设置消息响应函数 更多...
 
virtual void SetMsgProcFunc (MESSAGE_PROC_FUNC_CLASS static_class_func, void *_this)
 设置消息响应函数为静态类函数 更多...
 
virtual bool IsHovered () const
 判断鼠标是否悬停 更多...
 
virtual bool IsFocused () const
 判断是否拥有焦点 更多...
 
virtual bool IsPressed () const
 判断是否按下 更多...
 
- Public 成员函数 继承自 HiEasyX::Container
 Container ()
 
virtual ~Container ()
 
RECT GetRect () const
 
void SetRect (int x, int y, int w, int h)
 设置位置和宽高 更多...
 
void SetRect (RECT rct)
 设置矩形区域 更多...
 
POINT GetPos () const
 
int GetX () const
 
int GetY () const
 
void SetPos (int x, int y)
 
void SetPos (POINT pt)
 
void Move (int x, int y)
 
void MoveRel (int dx, int dy)
 
int GetWidth () const
 
void SetWidth (int w)
 
int GetHeight () const
 
void SetHeight (int h)
 
void Resize (int w, int h)
 

Public 属性

COLORREF m_cBorder_Normal = MODERN_BORDER_GRAY
 
COLORREF m_cBackground_Normal = MODERN_FILL_GRAY
 
COLORREF m_cBorder_Hovered = MODERN_BORDER_BLUE
 
COLORREF m_cBackground_Hovered = MODERN_FILL_BLUE
 
COLORREF m_cBorder_Pressed = MODERN_BORDER_PRESSED_BLUE
 
COLORREF m_cBackground_Pressed = MODERN_FILL_PRESSED_BLUE
 
COLORREF m_cText_Disabled = LIGHTGRAY
 
COLORREF m_cBorder_Disabled = GRAY
 
COLORREF m_cBackground_Disabled = GRAY
 
COLORREF m_cClassicNormalBorder3D = GRAY
 未按下时的 3D 边框颜色(经典样式) 更多...
 
COLORREF m_cClassicPressedBorder3D = LIGHTGRAY
 按下时的 3D 边框颜色(经典样式) 更多...
 

Protected 成员函数

virtual void InitColor ()
 
- Protected 成员函数 继承自 HiEasyX::ControlBase
void UpdateRect (RECT rctOld) override
 更新区域消息处理 更多...
 
void MarkNeedRedrawAndRender ()
 标记需要重绘和渲染 更多...
 
void MarkNeedClearRect (RECT rct)
 标记需要清空矩形区域 更多...
 
virtual void DrawChild ()
 绘制子控件 更多...
 
virtual ExMessage & TransformMessage (ExMessage &msg)
 转换消息 更多...
 
virtual void CallUserMsgProcFunc (int msgid, ExMessage msg)
 分发消息到用户函数 更多...
 
virtual void ChildRectChanged (ControlBase *pChild)
 子控件区域变更 更多...
 

Protected 属性

bool m_bEnableClassicStyle = false
 是否使用经典样式 更多...
 
- Protected 属性 继承自 HiEasyX::ControlBase
bool m_bEnabled = true
 是否可用 更多...
 
bool m_bVisible = true
 是否可见 更多...
 
bool m_bAutoRedrawWhenReceiveMsg = true
 当默认消息处理函数接受到消息时,是否自动标识重绘和渲染 更多...
 
bool m_bRedraw = true
 标识需要重绘 更多...
 
bool m_bRender = true
 标识需要渲染 更多...
 
bool m_bClear = false
 标识需要清空某区域 更多...
 
RECT m_rctClear = { 0 }
 记录需要清空的区域 更多...
 
bool m_bAlwaysRedrawAndRender = false
 总是重绘和渲染(占用更高) 更多...
 
std::wstring m_wstrText
 控件文本 更多...
 
Canvas m_canvas
 画布 更多...
 
BYTE m_alpha = 255
 透明度 更多...
 
bool m_bUseCanvasAlpha = false
 是否使用画布自身的透明度信息 更多...
 
bool m_isAlphaCalculated = false
 画布是否已经计算透明混合颜色 更多...
 
COLORREF m_cBorder = MODERN_BORDER_GRAY
 边框颜色 更多...
 
COLORREF m_cBackground = CLASSICGRAY
 背景色 更多...
 
COLORREF m_cText = BLACK
 文本颜色 更多...
 
bool m_bEnableBorder = true
 是否绘制边框 更多...
 
int m_nBorderThickness = 1
 边框粗细 更多...
 
bool m_bCompleteFirstSetRect = false
 是否已经完成第一次设置区域 更多...
 
ControlBasem_pParent = nullptr
 父控件 更多...
 
std::list< ControlBase * > m_listChild
 子控件 更多...
 
bool m_bAutoSizeForChild = false
 为子控件自动改变大小以容纳控件 更多...
 
MESSAGE_PROC_FUNC m_funcMessageProc = nullptr
 消息处理函数 更多...
 
MESSAGE_PROC_FUNC_CLASS m_funcMessageProc_Class = nullptr
 若绑定的消息处理函数是静态类函数,则记录其地址 更多...
 
void * m_pCalledClass = nullptr
 若绑定的消息处理函数是静态类函数,则记录该类指针 更多...
 
bool m_bHovered = false
 鼠标是否悬停 更多...
 
bool m_bPressed = false
 鼠标是否按下 更多...
 
bool m_bFocused = false
 是否拥有焦点 更多...
 
- Protected 属性 继承自 HiEasyX::Container
RECT m_rct = { 0 }
 容器区域 更多...
 

详细描述

按钮控件

在文件 Button.h16 行定义.

构造及析构函数说明

◆ Button() [1/2]

HiEasyX::Button::Button ( )

在文件 Button.cpp11 行定义.

12  {
13  InitColor();
14  }

◆ Button() [2/2]

HiEasyX::Button::Button ( int  x,
int  y,
int  w,
int  h,
std::wstring  wstrText = L"" 
)

在文件 Button.cpp16 行定义.

17  {
18  SetRect(x, y, w, h);
19  SetText(wstrText);
20  InitColor();
21  }

成员函数说明

◆ Draw()

void HiEasyX::Button::Draw ( bool  draw_child = true)
overridevirtual

绘制

参数
[in]draw_child是否绘制子控件

重载 HiEasyX::ControlBase .

在文件 Button.cpp73 行定义.

74  {
75  if (m_bRedraw)
76  {
77  ControlBase::Draw(false);
78 
80  {
81  if (m_bPressed)
82  {
84  m_canvas.Line(1, 1, 1, GetHeight() - 2);
85  m_canvas.Line(1, 1, GetWidth() - 2, 1);
86  Draw_Text(1, 1);
87  }
88  else
89  {
91  m_canvas.Line(GetWidth() - 2, 1, GetWidth() - 2, GetHeight() - 2);
92  m_canvas.Line(1, GetHeight() - 2, GetWidth() - 2, GetHeight() - 2);
93  Draw_Text();
94  }
95  }
96  else
97  {
98  Draw_Text();
99  }
100  }
101 
102  if (draw_child)
103  {
104  DrawChild();
105  }
106  }

◆ EnableClassicStyle()

void HiEasyX::Button::EnableClassicStyle ( bool  enable)
virtual

是否启用经典样式

参数
[in]enable是否启用

在文件 Button.cpp64 行定义.

65  {
66  m_bEnableClassicStyle = enable;
67  if (enable)
68  {
70  }
71  }

◆ InitColor()

void HiEasyX::Button::InitColor ( )
protectedvirtual

在文件 Button.cpp5 行定义.

◆ SetEnable()

void HiEasyX::Button::SetEnable ( bool  enable)
overridevirtual

启用控件

参数
[in]enable是否启用

重载 HiEasyX::ControlBase .

在文件 Button.cpp23 行定义.

24  {
25  ControlBase::SetEnable(enable);
26  if (!enable)
27  {
31  }
32  else
33  {
34  InitColor();
35  }
36  }

◆ UpdateMessage()

void HiEasyX::Button::UpdateMessage ( ExMessage  msg)
overridevirtual

更新消息

参数
[in]msg消息

重载 HiEasyX::ControlBase .

在文件 Button.cpp38 行定义.

39  {
40  if (m_bVisible && m_bEnabled)
41  {
43 
45  {
46  if (m_bPressed)
47  {
50  }
51  else if (m_bHovered)
52  {
55  }
56  else
57  {
58  InitColor();
59  }
60  }
61  }
62  }

类成员变量说明

◆ m_bEnableClassicStyle

bool HiEasyX::Button::m_bEnableClassicStyle = false
protected

是否使用经典样式

在文件 Button.h20 行定义.

◆ m_cBackground_Disabled

COLORREF HiEasyX::Button::m_cBackground_Disabled = GRAY

在文件 Button.h36 行定义.

◆ m_cBackground_Hovered

COLORREF HiEasyX::Button::m_cBackground_Hovered = MODERN_FILL_BLUE

在文件 Button.h30 行定义.

◆ m_cBackground_Normal

COLORREF HiEasyX::Button::m_cBackground_Normal = MODERN_FILL_GRAY

在文件 Button.h28 行定义.

◆ m_cBackground_Pressed

COLORREF HiEasyX::Button::m_cBackground_Pressed = MODERN_FILL_PRESSED_BLUE

在文件 Button.h32 行定义.

◆ m_cBorder_Disabled

COLORREF HiEasyX::Button::m_cBorder_Disabled = GRAY

在文件 Button.h35 行定义.

◆ m_cBorder_Hovered

COLORREF HiEasyX::Button::m_cBorder_Hovered = MODERN_BORDER_BLUE

在文件 Button.h29 行定义.

◆ m_cBorder_Normal

COLORREF HiEasyX::Button::m_cBorder_Normal = MODERN_BORDER_GRAY

在文件 Button.h27 行定义.

◆ m_cBorder_Pressed

COLORREF HiEasyX::Button::m_cBorder_Pressed = MODERN_BORDER_PRESSED_BLUE

在文件 Button.h31 行定义.

◆ m_cClassicNormalBorder3D

COLORREF HiEasyX::Button::m_cClassicNormalBorder3D = GRAY

未按下时的 3D 边框颜色(经典样式)

在文件 Button.h38 行定义.

◆ m_cClassicPressedBorder3D

COLORREF HiEasyX::Button::m_cClassicPressedBorder3D = LIGHTGRAY

按下时的 3D 边框颜色(经典样式)

在文件 Button.h39 行定义.

◆ m_cText_Disabled

COLORREF HiEasyX::Button::m_cText_Disabled = LIGHTGRAY

在文件 Button.h34 行定义.


该类的文档由以下文件生成:
HiEasyX::Button::m_cBackground_Disabled
COLORREF m_cBackground_Disabled
Definition: Button.h:36
HiEasyX::Button::m_cBorder_Normal
COLORREF m_cBorder_Normal
Definition: Button.h:27
HiEasyX::Button::m_cBorder_Hovered
COLORREF m_cBorder_Hovered
Definition: Button.h:29
HiEasyX::ControlBase::SetEnable
virtual void SetEnable(bool enable)
Definition: ControlBase.cpp:78
HiEasyX::Button::m_cBackground_Normal
COLORREF m_cBackground_Normal
Definition: Button.h:28
HiEasyX::Canvas::Line
void Line(int x1, int y1, int x2, int y2, bool isSetColor=false, COLORREF c=0)
Definition: HiCanvas.cpp:764
HiEasyX::ControlBase::m_bVisible
bool m_bVisible
是否可见
Definition: ControlBase.h:57
HiEasyX::ControlBase::DrawChild
virtual void DrawChild()
绘制子控件
Definition: ControlBase.cpp:246
HiEasyX::Button::m_cText_Disabled
COLORREF m_cText_Disabled
Definition: Button.h:34
HiEasyX::Button::InitColor
virtual void InitColor()
Definition: Button.cpp:5
HiEasyX::Container::GetWidth
int GetWidth() const
Definition: HiContainer.h:65
HiEasyX::ControlBase::m_cText
COLORREF m_cText
文本颜色
Definition: ControlBase.h:76
HiEasyX::Container::GetHeight
int GetHeight() const
Definition: HiContainer.h:69
HiEasyX::ControlBase::m_canvas
Canvas m_canvas
画布
Definition: ControlBase.h:69
CLASSICGRAY
Windows 经典灰
Definition: HiMacro.h:103
HiEasyX::Button::m_cBackground_Hovered
COLORREF m_cBackground_Hovered
Definition: Button.h:30
HiEasyX::Button::m_cBackground_Pressed
COLORREF m_cBackground_Pressed
Definition: Button.h:32
HiEasyX::ControlBase::Draw
virtual void Draw(bool draw_child=true)
绘制控件
Definition: ControlBase.cpp:224
HiEasyX::ControlBase::m_bHovered
bool m_bHovered
鼠标是否悬停
Definition: ControlBase.h:92
HiEasyX::ControlBase::m_bEnabled
bool m_bEnabled
是否可用
Definition: ControlBase.h:56
HiEasyX::Button::m_cClassicPressedBorder3D
COLORREF m_cClassicPressedBorder3D
按下时的 3D 边框颜色(经典样式)
Definition: Button.h:39
HiEasyX::Container::SetRect
void SetRect(int x, int y, int w, int h)
设置位置和宽高
Definition: HiContainer.cpp:26
HiEasyX::ControlBase::UpdateMessage
virtual void UpdateMessage(ExMessage msg)
更新消息
Definition: ControlBase.cpp:391
HiEasyX::Button::m_cBorder_Pressed
COLORREF m_cBorder_Pressed
Definition: Button.h:31
HiEasyX::Button::m_cClassicNormalBorder3D
COLORREF m_cClassicNormalBorder3D
未按下时的 3D 边框颜色(经典样式)
Definition: Button.h:38
HiEasyX::ControlBase::SetText
virtual void SetText(std::wstring wstr)
Definition: ControlBase.cpp:198
HiEasyX::Button::m_bEnableClassicStyle
bool m_bEnableClassicStyle
是否使用经典样式
Definition: Button.h:20
HiEasyX::Canvas::SetLineColor
void SetLineColor(COLORREF color)
Definition: HiCanvas.cpp:616
HiEasyX::ControlBase::Draw_Text
virtual void Draw_Text(int nTextOffsetX=0, int nTextOffsetY=0)
Definition: ControlBase.cpp:205
HiEasyX::ControlBase::m_bPressed
bool m_bPressed
鼠标是否按下
Definition: ControlBase.h:93
HiEasyX::ControlBase::m_bRedraw
bool m_bRedraw
标识需要重绘
Definition: ControlBase.h:61
HiEasyX::ControlBase::m_cBackground
COLORREF m_cBackground
背景色
Definition: ControlBase.h:75
HiEasyX::ControlBase::m_cBorder
COLORREF m_cBorder
边框颜色
Definition: ControlBase.h:74
HiEasyX::Button::m_cBorder_Disabled
COLORREF m_cBorder_Disabled
Definition: Button.h:35