【C++】求助,登录界面,每次输入文本都要鼠标动一下才显示该怎么解决?

0

比如输入123,在文本框中并不显示123,但是动一下鼠标就会显示出来,不管移动到哪里,只要动一下就行.....求助该怎么解决

我是用一个文本框类,类里面用char数组存储字符串,每次键盘输入之后调用append函数将输入的字符放进char数组。show函数是显示文本框和框里面的字符,eventLoop循环判断有没有输入

//ManagerPage函数会一直循环调用来显示界面
int Manage::ManagerPage()
{
	//背景
	print_Background(Manager_bk);
	//标题
	setbkmode(TRANSPARENT);
	setcolor(WHITE);
	settextstyle(40, 0, "黑体");
	outtextxy(380, 100, "管理员登录");
	//文本框1
	Manager_Page_Text_Btn[0]->show();
	Manager_Page_Text_Btn[0]->eventLoop(m_msg);
	//文本框2
	Manager_Page_Text_Btn[1]->show();
	Manager_Page_Text_Btn[1]->eventLoop(m_msg);
	//两个按钮
	Manager_Page_Btn[0]->show();
	Manager_Page_Btn[1]->show();
	return MANAGER;
}
//show函数显示文本框
void TextBox::show()
{
    settextstyle(20, 0, "Verdana");
    //输出文本框样式
    setlinecolor(current_c);
    rectangle(m_x, m_y, m_x + m_w, m_y + m_h);
    //输出文本框内容
    outtextxy(m_x + 30, m_y + (m_h - 20) / 2, m_text);
}
void TextBox::eventLoop(const ExMessage& msg)
{
    m_msg = msg;
    if (ifHover()) //如果悬停在输入框内就可输入
    {
        showCursor(); //显示光标
        char c = 0;
        if (_kbhit())
        {
            c = _getch();
            this->append(c);
        }
    }
}
0

文本框的实现可以参考:https://qa.codebus.cn/question/127

你的代码应该是获取鼠标消息的时候并没有处理按键消息。

建议试试新版 easyx 提供的消息函数,可以同时获取鼠标、按键消息,可以简化此类需求的设计。

ava
慢羊羊

2021-9-2

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