文本输入框(TextInput)
文本框控件可用于显示文本,且允许用户编辑与文本框产生交互。该文本输入框支持一个基础输入框所需要的几乎一切功能,如多行编辑,鼠标选中,HOME、END、全选快捷键等等。
在 HiEasyX 中,文本输入框及其变体的原型函数定义如下:
void TextInput(TextInputProfile &Profile);
参数
参数 | 含义 | 默认取值 |
---|---|---|
Profile | 文本输入框的资料结构体 | 无 |
资料结构体
文本输入框的资料结构体定义如下:
struct TextInputProfile {
HXString Text;
HXPoint Size{400, 300};
HXPoint Where{0, 0};
HXGInt SelectingPoint = 0;
time_t CursorClock;
bool DisplayCursor = false;
std::vector<Cursor> Cursors;
bool MouseStyle = false;
bool OnFocus = false;
bool InDrag = false;
float VerticalVPer = 0;
float HorizontalVPer = 0;
TextInputScrollButtonProfile VerticalButton{};
TextInputScrollButtonProfile HorizontalButton{};
};
变量 | 含义 | 默认取值 |
---|---|---|
Text | 输入框的文本 | 无 |
Size | 输入框的大小 | {400, 300}} |
Where | API 内部变量 | |
SelectingPoint | API 内部变量 | |
CursorClock | API 内部变量 | |
DisplayCursor | API 内部变量 | |
Cursors | API 内部变量 | |
MouseStyle | API 内部变量 | |
OnFocus | 输入框是否处于用户焦点,如果是则为 true 否则为 false | false |
InDrag | API 内部变量 | |
VerticalVPer | 输入框的竖直的浏览进度,取值范围大于等于零小于等于一 | 0 |
HorizontalVPer | 输入框的水平的浏览进度,取值范围大于等于零小于等于一 | 0 |
VerticalButton | 竖直的拖拽按钮的资源结构体 | ∅ |
HorizontalButton | 水平的拖拽按钮的资源结构体 | ∅ |
示例
该示例代码同样可以在代码仓库下 /example/EasyX/TextInput.cpp
中找到。
#include <include/hex.h>
#include <include/impl/EasyX/hex_impl_easyx.h>
int main() {
initgraph(640, 480);
BeginBatchDraw();
HX::HXInitForEasyX();
HX::SetBuffer(GetWorkingImage());
setbkcolor(RGB(180, 180, 180));
HX::WindowProfile windowProfile;
windowProfile.Size = { 600, 400 };
while (true) {
cleardevice();
HX::HXBegin();
ExMessage message{};
while (peekmessage(&message)) {
HX::PushMessage(HX::GetHXMessage(&message));
}
HX::Window(HXStr("文本输入框控件示例"), windowProfile);
static HX::TextInputProfile textInputProfile;
textInputProfile.Size = { windowProfile.Size.X - 20, windowProfile.Size.Y - 100 };
HX::TextInput(textInputProfile);
if (textInputProfile.OnFocus) {
HX::Text(HXStr("输入框处于焦点中"));
}
HX::End();
HX::Render();
FlushBatchDraw();
Sleep(1);
}
return 0;
}