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

系统控件基础 更多...

#include <SysControlBase.h>

类 HiEasyX::SysControlBase 继承关系图:
HiEasyX::Container HiEasyX::SysButton HiEasyX::SysCheckBox HiEasyX::SysComboBox HiEasyX::SysEdit HiEasyX::SysGroup HiEasyX::SysGroupBox HiEasyX::SysRadioButton HiEasyX::SysStatic

Public 成员函数

 SysControlBase ()
 
virtual ~SysControlBase ()
 
void UpdateRect (RECT rctOld) override
 响应更新区域消息 更多...
 
virtual LRESULT UpdateMessage (UINT msg, WPARAM wParam, LPARAM lParam, bool &bRet)
 更新消息,此函数无需用户调用 更多...
 
HWND Create (HWND hParent, RECT rct, std::wstring strText=L"")
 
HWND Create (HWND hParent, int x, int y, int w, int h, std::wstring strText=L"")
 
void Remove ()
 移除控件 更多...
 
HWND GetHandle () const
 
SysControlType GetControlType () const
 获取此控件类型 更多...
 
bool IsEnable ()
 
void Enable (bool enable)
 
bool IsVisible ()
 
void Show (bool show)
 
bool IsFocused ()
 
void SetFocus (bool focused)
 
int GetTextLength ()
 
std::wstring GetText ()
 
void SetText (std::wstring wstr)
 
HFONT GetFont ()
 
void SetFont (int h, int w=0, std::wstring typeface=L"")
 
int GetID ()
 
- 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)
 

Protected 成员函数

HWND CreateControl (HWND hParent, LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle)
 创建控件 更多...
 
virtual void RealCreate (HWND hParent)=0
 实际调用的创建控件函数(各种控件实现不同,但内部都调用 CreateControl 创建控件) 更多...
 

Protected 属性

HWND m_hWnd = nullptr
 
HWND m_hParent = nullptr
 
int m_nID = 0
 
SysControlType m_type = SCT_Unknown
 
- Protected 属性 继承自 HiEasyX::Container
RECT m_rct = { 0 }
 容器区域 更多...
 

详细描述

系统控件基础

在文件 SysControlBase.h35 行定义.

构造及析构函数说明

◆ SysControlBase()

HiEasyX::SysControlBase::SysControlBase ( )

在文件 SysControlBase.cpp39 行定义.

40  {
41  }

◆ ~SysControlBase()

HiEasyX::SysControlBase::~SysControlBase ( )
virtual

在文件 SysControlBase.cpp43 行定义.

44  {
45  Destory();
46  }

成员函数说明

◆ Create() [1/2]

HWND HiEasyX::SysControlBase::Create ( HWND  hParent,
int  x,
int  y,
int  w,
int  h,
std::wstring  strText = L"" 
)

在文件 SysControlBase.cpp69 行定义.

70  {
71  if (!GetHandle())
72  {
73  SetRect(x, y, w, h);
74  RealCreate(hParent);
75  SetText(strText);
76  }
77  return GetHandle();
78  }

◆ Create() [2/2]

HWND HiEasyX::SysControlBase::Create ( HWND  hParent,
RECT  rct,
std::wstring  strText = L"" 
)
    创建控件(从控件对象创建出 UI 实体)
 注意:
    同一个控件对象不能反复创建 UI 实体
参数
[in]hParent父窗口句柄
[in]rct控件区域
[in]strText控件文本
返回
控件窗口句柄

在文件 SysControlBase.cpp58 行定义.

59  {
60  if (!GetHandle())
61  {
62  SetRect(rct);
63  RealCreate(hParent);
64  SetText(strText);
65  }
66  return GetHandle();
67  }

◆ CreateControl()

HWND HiEasyX::SysControlBase::CreateControl ( HWND  hParent,
LPCTSTR  lpszClassName,
LPCTSTR  lpszWindowName,
DWORD  dwStyle 
)
protected

创建控件

参数
[in]hParent父控件
[in]lpszClassName窗口类名
[in]lpszWindowName窗口名
[in]dwStyle窗口样式
返回
窗口句柄

在文件 SysControlBase.cpp17 行定义.

18  {
19  m_hParent = hParent;
20  m_nID = AllocID();
21 
22  CREATESTRUCT c;
23  c.lpCreateParams = 0;
24  c.hInstance = 0;
25  c.hMenu = (HMENU)(long long)GetID();
26  c.hwndParent = hParent;
27  c.cy = GetHeight();
28  c.cx = GetWidth();
29  c.y = GetY();
30  c.x = GetX();
31  c.style = dwStyle;
32  c.lpszName = lpszWindowName;
33  c.lpszClass = lpszClassName;
34  c.dwExStyle = 0;
35 
36  return (HWND)SendMessage(hParent, WM_SYSCTRL_CREATE, (WPARAM)this, (LPARAM)&c);
37  }

◆ Enable()

void HiEasyX::SysControlBase::Enable ( bool  enable)

在文件 SysControlBase.cpp91 行定义.

92  {
93  EnableWindow(GetHandle(), enable);
94  }

◆ GetControlType()

SysControlType HiEasyX::SysControlBase::GetControlType ( ) const
inline

获取此控件类型

在文件 SysControlBase.h114 行定义.

114 { return m_type; }

◆ GetFont()

HFONT HiEasyX::SysControlBase::GetFont ( )

在文件 SysControlBase.cpp142 行定义.

143  {
144  return (HFONT)SendMessage(GetHandle(), WM_GETFONT, 0, 0);
145  }

◆ GetHandle()

HWND HiEasyX::SysControlBase::GetHandle ( ) const
inline

在文件 SysControlBase.h109 行定义.

109 { return m_hWnd; }

◆ GetID()

int HiEasyX::SysControlBase::GetID ( )

在文件 SysControlBase.cpp168 行定义.

169  {
170  return m_nID;
171  }

◆ GetText()

std::wstring HiEasyX::SysControlBase::GetText ( )

在文件 SysControlBase.cpp126 行定义.

127  {
128  int len = GetTextLength();
129  WCHAR* buf = new WCHAR[len + 1];
130  ZeroMemory(buf, sizeof WCHAR * (len + 1));
131  GetWindowText(GetHandle(), buf, len + 1);
132  std::wstring str = buf;
133  delete[] buf;
134  return str;
135  }

◆ GetTextLength()

int HiEasyX::SysControlBase::GetTextLength ( )

在文件 SysControlBase.cpp121 行定义.

122  {
123  return GetWindowTextLength(GetHandle());;
124  }

◆ IsEnable()

bool HiEasyX::SysControlBase::IsEnable ( )

在文件 SysControlBase.cpp86 行定义.

87  {
88  return IsWindowEnabled(GetHandle());
89  }

◆ IsFocused()

bool HiEasyX::SysControlBase::IsFocused ( )

在文件 SysControlBase.cpp106 行定义.

107  {
108  DWORD SelfThreadId = GetCurrentThreadId(); // 获取自身线程 ID
109  DWORD ForeThreadId = GetWindowThreadProcessId(m_hParent, NULL); // 根据窗口句柄获取线程 ID
110  AttachThreadInput(ForeThreadId, SelfThreadId, true); // 附加到线程
111  HWND hWnd = GetFocus(); // 获取具有输入焦点的窗口句柄
112  AttachThreadInput(ForeThreadId, SelfThreadId, false); // 取消附加到线程
113  return hWnd == GetHandle();
114  }

◆ IsVisible()

bool HiEasyX::SysControlBase::IsVisible ( )

在文件 SysControlBase.cpp96 行定义.

97  {
98  return IsWindowVisible(GetHandle());
99  }

◆ RealCreate()

virtual void HiEasyX::SysControlBase::RealCreate ( HWND  hParent)
protectedpure virtual

实际调用的创建控件函数(各种控件实现不同,但内部都调用 CreateControl 创建控件)

参数
[in]hParent父控件句柄

HiEasyX::SysEdit, HiEasyX::SysComboBox, HiEasyX::SysGroupBox, HiEasyX::SysButton, HiEasyX::SysCheckBox, HiEasyX::SysRadioButton, HiEasyX::SysStatic , 以及 HiEasyX::SysGroup 内被实现.

◆ Remove()

void HiEasyX::SysControlBase::Remove ( )

移除控件

在文件 SysControlBase.cpp80 行定义.

81  {
82  Destory();
83  SendMessage(m_hWnd, WM_CLOSE, 0, 0);
84  }

◆ SetFocus()

void HiEasyX::SysControlBase::SetFocus ( bool  focused)

在文件 SysControlBase.cpp116 行定义.

117  {
118  SendMessage(GetHandle(), focused ? WM_SETFOCUS : WM_KILLFOCUS, 0, 0);
119  }

◆ SetFont()

void HiEasyX::SysControlBase::SetFont ( int  h,
int  w = 0,
std::wstring  typeface = L"" 
)

在文件 SysControlBase.cpp147 行定义.

148  {
149  if (m_hFont)
150  {
151  DeleteFont(m_hFont);
152  m_hFont = nullptr;
153  }
154  m_hFont = CreateFont(
155  h, w,
156  0, 0, 0, 0, 0, 0,
157  GB2312_CHARSET,
158  OUT_DEFAULT_PRECIS,
159  CLIP_DEFAULT_PRECIS,
160  DEFAULT_QUALITY,
161  DEFAULT_PITCH | FF_MODERN,
162  typeface.c_str()
163  );
164  SendMessage(GetHandle(), WM_SETFONT, (WPARAM)m_hFont, 0);
165  InvalidateRect(GetHandle(), nullptr, true);
166  }

◆ SetText()

void HiEasyX::SysControlBase::SetText ( std::wstring  wstr)

在文件 SysControlBase.cpp137 行定义.

138  {
139  SetWindowText(GetHandle(), wstr.c_str());
140  }

◆ Show()

void HiEasyX::SysControlBase::Show ( bool  show)

在文件 SysControlBase.cpp101 行定义.

102  {
103  ShowWindow(GetHandle(), show ? SW_SHOW : SW_HIDE);
104  }

◆ UpdateMessage()

LRESULT HiEasyX::SysControlBase::UpdateMessage ( UINT  msg,
WPARAM  wParam,
LPARAM  lParam,
bool &  bRet 
)
virtual

更新消息,此函数无需用户调用

参数
[in]msg新消息
[in]wParam参数
[in]lParam参数
[out]bRet标记是否返回值
返回
不定返回值

HiEasyX::SysEdit, HiEasyX::SysComboBox, HiEasyX::SysButton, HiEasyX::SysCheckBox , 以及 HiEasyX::SysRadioButton 重载.

在文件 SysControlBase.cpp53 行定义.

54  {
55  return LRESULT();
56  }

◆ UpdateRect()

void HiEasyX::SysControlBase::UpdateRect ( RECT  rctOld)
overridevirtual

响应更新区域消息

参数
[in]rctOld旧的区域

重载 HiEasyX::Container .

在文件 SysControlBase.cpp48 行定义.

49  {
50  SetWindowPos(GetHandle(), 0, GetX(), GetY(), GetWidth(), GetHeight(), 0);
51  }

类成员变量说明

◆ m_hParent

HWND HiEasyX::SysControlBase::m_hParent = nullptr
protected

在文件 SysControlBase.h49 行定义.

◆ m_hWnd

HWND HiEasyX::SysControlBase::m_hWnd = nullptr
protected

在文件 SysControlBase.h48 行定义.

◆ m_nID

int HiEasyX::SysControlBase::m_nID = 0
protected

在文件 SysControlBase.h50 行定义.

◆ m_type

SysControlType HiEasyX::SysControlBase::m_type = SCT_Unknown
protected

在文件 SysControlBase.h51 行定义.


该类的文档由以下文件生成:
HiEasyX::AllocID
int AllocID()
自动分配控件 ID
Definition: SysControlBase.cpp:173
HiEasyX::SysControlBase::GetTextLength
int GetTextLength()
Definition: SysControlBase.cpp:121
HiEasyX::Container::GetX
int GetX() const
Definition: HiContainer.h:53
HiEasyX::Container::GetY
int GetY() const
Definition: HiContainer.h:55
HiEasyX::Container::GetWidth
int GetWidth() const
Definition: HiContainer.h:65
HiEasyX::SysControlBase::m_hParent
HWND m_hParent
Definition: SysControlBase.h:49
HiEasyX::SysControlBase::GetHandle
HWND GetHandle() const
Definition: SysControlBase.h:109
HiEasyX::Container::GetHeight
int GetHeight() const
Definition: HiContainer.h:69
HiEasyX::SysControlBase::GetID
int GetID()
Definition: SysControlBase.cpp:168
HiEasyX::SysControlBase::m_type
SysControlType m_type
Definition: SysControlBase.h:51
HiEasyX::SysControlBase::SetText
void SetText(std::wstring wstr)
Definition: SysControlBase.cpp:137
HiEasyX::Container::SetRect
void SetRect(int x, int y, int w, int h)
设置位置和宽高
Definition: HiContainer.cpp:26
WM_SYSCTRL_CREATE
#define WM_SYSCTRL_CREATE
Definition: HiWindow.h:35
HiEasyX::SysControlBase::m_nID
int m_nID
Definition: SysControlBase.h:50
HiEasyX::SysControlBase::m_hWnd
HWND m_hWnd
Definition: SysControlBase.h:48
HiEasyX::SysControlBase::RealCreate
virtual void RealCreate(HWND hParent)=0
实际调用的创建控件函数(各种控件实现不同,但内部都调用 CreateControl 创建控件)