easyX做登录界面,文本输入显示问题

-1

麻烦有人能详细看一下,有点急,我会尽量写注释讲清楚,麻烦大家了!有必要可以有偿!!本人qq1561844542,求帮助!

//显示主界面的函数
void Manage::runMain()
{
	int op = CHOCICE_AGAIN; //默认刚开始显示主界面
	Window::beginDraw();

	while (true)
	{
		Window::clr();
		print_Background(Main_bk);
		if (Window::ifHaveMsg())
			m_msg = Window::getMsg(); //一直读取消息
		switch (op)
		{
		case CHOCICE_AGAIN:
			op = MainWaitChoice(); //主界面
			break;
		case MANAGER:
			op = ManagerPage(); //管理员界面
			break;
		default:
			exit(1);
			break;
		}
		Window::flushDraw();
	}
	Window::endDraw();
}
//主界面函数
//有两个按钮,一是管理员入口,二是学生入口,目前只做了管理员入口
int Manage::MainWaitChoice()
{
	for (int index = 0; index < Main_Page_Btn.size(); index++)
	{
		Main_Page_Btn[index]->show(); //按钮类的显示函数
		Main_Page_Btn[index]->eventLoop(m_msg);
		if (Main_Page_Btn[index]->ifClicked())
			return index;
	}
    return CHOCICE_AGAIN;
}
//管理员登录界面
int Manage::ManagerPage()
{
	//背景
	print_Background(Manager_bk);
	//标题
	setbkmode(TRANSPARENT);
	setcolor(WHITE);
	settextstyle(40, 0, "黑体");
	outtextxy(380, 100, "管理员登录");
	//第一个文本框,用于记录用户名
	Manager_Page_Text_Btn[0]->show(); //文本框类的显示函数
	Manager_Page_Text_Btn[0]->eventLoop(m_msg);

	return MANAGER;
}

在管理员界面函数中,文本框类的eventLoop函数如下

void TextBox::eventLoop(const ExMessage& msg)
{
    m_msg = msg;
   if (ifHover()) //如果鼠标悬停在当前的文本框上表示可以输入
   {
        showCursor(); //显示光标
        if (m_msg.message == WM_KEYDOWN) //如果消息是按键按下
        {
            if (m_msg.vkcode == VK_NUMPAD0) //如果按下的是0,将0放入数组中用于显示
                this->append('0');
        }
   }
}

这里加上ifHover()这个判断条件,运行的时候鼠标悬停在文本框上时,能做到显示光标,但是输入0的时候不仅不显示0,光标还会消失,点一下鼠标左键光标会出现,但是数字0还是没有。

而且如果把if(ifHover())这个判断去掉的话,按一下0会出现很多的0

0

请描述清楚:

1. 具体什么显示问题?

2. 提供一个可以编译的、能体现你的问题的代码(删掉无关代码)

ava
慢羊羊

2021-9-7

谢谢,重新用_getch()解决了! -  ‭‭用户eb1a  2021-9-7
技术讨论社区