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

系统组合框控件 更多...

#include <SysComboBox.h>

类 HiEasyX::SysComboBox 继承关系图:
HiEasyX::SysControlBase HiEasyX::Container

struct  PreStyle
 组合框控件预设样式(必须在创建前设置才有效) 更多...
 

Public 成员函数

 SysComboBox ()
 
 SysComboBox (HWND hParent, RECT rct, std::wstring strText=L"")
 
 SysComboBox (HWND hParent, int x, int y, int w, int h, std::wstring strText=L"")
 
void PreSetStyle (PreStyle pre_style)
 在创建控件前预设样式 更多...
 
LRESULT UpdateMessage (UINT msg, WPARAM wParam, LPARAM lParam, bool &bRet) override
 更新消息,此函数无需用户调用 更多...
 
void RegisterSelMessage (void(*pFunc)(int sel, std::wstring wstrSelText))
 注册选择消息 更多...
 
void RegisterEditMessage (void(*pFunc)(std::wstring wstrText))
 注册编辑消息 更多...
 
int GetSel () const
 获取选中的索引 更多...
 
void SetSel (int sel)
 设置选中的索引 更多...
 
bool SelectString (std::wstring wstrText)
 选择具有指定文本的一项 更多...
 
void AddString (std::wstring wstrText)
 增加项 更多...
 
void InsertString (int index, std::wstring wstrText)
 插入项 更多...
 
void DeleteString (int index)
 删除项 更多...
 
int GetCount ()
 获取列表内容数量 更多...
 
void Clear ()
 清空列表 更多...
 
void ShowDropdown (bool enable)
 显示列表 更多...
 
bool IsSelChanged ()
 判断选择项是否变化 更多...
 
bool IsEdited ()
 判断是否被编辑 更多...
 
- Public 成员函数 继承自 HiEasyX::SysControlBase
 SysControlBase ()
 
virtual ~SysControlBase ()
 
void UpdateRect (RECT rctOld) override
 响应更新区域消息 更多...
 
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 成员函数

void RealCreate (HWND hParent) override
 实际调用的创建控件函数(各种控件实现不同,但内部都调用 CreateControl 创建控件) 更多...
 
- Protected 成员函数 继承自 HiEasyX::SysControlBase
HWND CreateControl (HWND hParent, LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle)
 创建控件 更多...
 

额外继承的成员函数

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

详细描述

系统组合框控件

在文件 SysComboBox.h16 行定义.

构造及析构函数说明

◆ SysComboBox() [1/3]

HiEasyX::SysComboBox::SysComboBox ( )

在文件 SysComboBox.cpp25 行定义.

26  {
27  }

◆ SysComboBox() [2/3]

HiEasyX::SysComboBox::SysComboBox ( HWND  hParent,
RECT  rct,
std::wstring  strText = L"" 
)

在文件 SysComboBox.cpp29 行定义.

30  {
31  Create(hParent, rct, strText);
32  }

◆ SysComboBox() [3/3]

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

在文件 SysComboBox.cpp34 行定义.

35  {
36  Create(hParent, x, y, w, h, strText);
37  }

成员函数说明

◆ AddString()

void HiEasyX::SysComboBox::AddString ( std::wstring  wstrText)

增加项

参数
[in]wstrText项文本

在文件 SysComboBox.cpp122 行定义.

123  {
124  ComboBox_AddString(GetHandle(), wstrText.c_str());
125  }

◆ Clear()

void HiEasyX::SysComboBox::Clear ( )

清空列表

在文件 SysComboBox.cpp142 行定义.

143  {
144  ComboBox_ResetContent(GetHandle());
145  }

◆ DeleteString()

void HiEasyX::SysComboBox::DeleteString ( int  index)

删除项

参数
[in]index项索引

在文件 SysComboBox.cpp132 行定义.

133  {
134  ComboBox_DeleteString(GetHandle(), index);
135  }

◆ GetCount()

int HiEasyX::SysComboBox::GetCount ( )

获取列表内容数量

在文件 SysComboBox.cpp137 行定义.

138  {
139  return ComboBox_GetCount(GetHandle());
140  }

◆ GetSel()

int HiEasyX::SysComboBox::GetSel ( ) const
inline

获取选中的索引

在文件 SysComboBox.h77 行定义.

77 { return m_nSel; }

◆ InsertString()

void HiEasyX::SysComboBox::InsertString ( int  index,
std::wstring  wstrText 
)

插入项

参数
[in]index插入位置
[in]wstrText项文本

在文件 SysComboBox.cpp127 行定义.

128  {
129  ComboBox_InsertString(GetHandle(), index, wstrText.c_str());
130  }

◆ IsEdited()

bool HiEasyX::SysComboBox::IsEdited ( )

判断是否被编辑

在文件 SysComboBox.cpp159 行定义.

160  {
161  bool r = m_bEdited;
162  m_bEdited = false;
163  return r;
164  }

◆ IsSelChanged()

bool HiEasyX::SysComboBox::IsSelChanged ( )

判断选择项是否变化

在文件 SysComboBox.cpp152 行定义.

153  {
154  bool r = m_bSelChanged;
155  m_bSelChanged = false;
156  return r;
157  }

◆ PreSetStyle()

void HiEasyX::SysComboBox::PreSetStyle ( PreStyle  pre_style)

在创建控件前预设样式

在文件 SysComboBox.cpp39 行定义.

40  {
41  if (pre_style.always_show_list)
42  {
43  m_lBasicStyle |= CBS_SIMPLE;
44  m_lBasicStyle &= ~CBS_DROPDOWN;
45  if (!pre_style.editable)
46  m_bSimple_No_Edit = true;
47  }
48  else
49  {
50  if (pre_style.editable)
51  {
52  m_lBasicStyle |= CBS_DROPDOWN;
53  }
54  else
55  {
56  m_lBasicStyle |= CBS_DROPDOWNLIST;
57  }
58  }
59 
60  if (pre_style.sort)
61  m_lBasicStyle |= CBS_SORT;
62  else
63  m_lBasicStyle &= ~CBS_SORT;
64  }

◆ RealCreate()

void HiEasyX::SysComboBox::RealCreate ( HWND  hParent)
overrideprotectedvirtual

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

参数
[in]hParent父控件句柄

实现了 HiEasyX::SysControlBase.

在文件 SysComboBox.cpp5 行定义.

6  {
9  hParent,
10  L"ComboBox",
11  L"",
12  m_lBasicStyle
13  );
14 
15  // CBS_SIMPLE 默认可以编辑
16  // 若要禁用输入,必须获取编辑框的句柄
17  if (m_bSimple_No_Edit)
18  {
19  // 获取输入框句柄,并设置为只读
20  HWND combobox_edit = ChildWindowFromPoint(GetHandle(), { 3,3 });
21  Edit_SetReadOnly(combobox_edit, true);
22  }
23  }

◆ RegisterEditMessage()

void HiEasyX::SysComboBox::RegisterEditMessage ( void(*)(std::wstring wstrText)  pFunc)

注册编辑消息

参数
[in]pFunc消息响应函数

在文件 SysComboBox.cpp106 行定义.

107  {
108  m_pFuncEdit = pFunc;
109  }

◆ RegisterSelMessage()

void HiEasyX::SysComboBox::RegisterSelMessage ( void(*)(int sel, std::wstring wstrSelText)  pFunc)

注册选择消息

参数
[in]pFunc消息响应函数

在文件 SysComboBox.cpp101 行定义.

102  {
103  m_pFuncSel = pFunc;
104  }

◆ SelectString()

bool HiEasyX::SysComboBox::SelectString ( std::wstring  wstrText)

选择具有指定文本的一项

参数
[in]wstrText指定文本
返回
是否选择成功

在文件 SysComboBox.cpp117 行定义.

118  {
119  return ComboBox_SelectString(GetHandle(), -1, wstrText.c_str()) != CB_ERR;
120  }

◆ SetSel()

void HiEasyX::SysComboBox::SetSel ( int  sel)

设置选中的索引

参数
[in]sel选中的索引

在文件 SysComboBox.cpp111 行定义.

112  {
113  m_nSel = sel;
114  ComboBox_SetCurSel(GetHandle(), sel);
115  }

◆ ShowDropdown()

void HiEasyX::SysComboBox::ShowDropdown ( bool  enable)

显示列表

参数
[in]enable是否显示列表

在文件 SysComboBox.cpp147 行定义.

148  {
149  ComboBox_ShowDropdown(GetHandle(), enable);
150  }

◆ UpdateMessage()

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

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

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

重载 HiEasyX::SysControlBase .

在文件 SysComboBox.cpp66 行定义.

67  {
68  if (msg == WM_COMMAND)
69  {
70  if (LOWORD(wParam) == GetID())
71  {
72  switch (HIWORD(wParam))
73  {
74  case CBN_SELCHANGE:
75  m_nSel = ComboBox_GetCurSel(GetHandle());
76  m_bSelChanged = true;
77  if (m_pFuncSel)
78  {
79  int len = ComboBox_GetLBTextLen(GetHandle(), m_nSel);
80  WCHAR* buf = new WCHAR[len + 1];
81  ZeroMemory(buf, (len + 1) * sizeof WCHAR);
82  ComboBox_GetLBText(GetHandle(), m_nSel, buf);
83  m_pFuncSel(m_nSel, buf);
84  delete[] buf;
85  }
86  break;
87 
88  case CBN_EDITUPDATE:
89  m_bEdited = true;
90  if (m_pFuncEdit)
91  m_pFuncEdit(GetText());
92  break;
93  }
94  }
95  }
96 
97  bRet = false;
98  return 0;
99  }

该类的文档由以下文件生成:
HiEasyX::SysControlBase::CreateControl
HWND CreateControl(HWND hParent, LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle)
创建控件
Definition: SysControlBase.cpp:17
HiEasyX::SCT_ComboBox
Definition: SysControlBase.h:29
HiEasyX::SysControlBase::GetHandle
HWND GetHandle() const
Definition: SysControlBase.h:109
HiEasyX::SysControlBase::GetID
int GetID()
Definition: SysControlBase.cpp:168
HiEasyX::SysControlBase::m_type
SysControlType m_type
Definition: SysControlBase.h:51
HiEasyX::SysControlBase::Create
HWND Create(HWND hParent, RECT rct, std::wstring strText=L"")
Definition: SysControlBase.cpp:58
HiEasyX::SysControlBase::m_hWnd
HWND m_hWnd
Definition: SysControlBase.h:48
HiEasyX::SysControlBase::GetText
std::wstring GetText()
Definition: SysControlBase.cpp:126