跳到主要内容

文本输入框(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}}
WhereAPI 内部变量
SelectingPointAPI 内部变量
CursorClockAPI 内部变量
DisplayCursorAPI 内部变量
CursorsAPI 内部变量
MouseStyleAPI 内部变量
OnFocus输入框是否处于用户焦点,如果是则为 true 否则为 falsefalse
InDragAPI 内部变量
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;
}