c++builder一个非常奇怪的有关问题!
c++builder一个非常奇怪的问题!!!!!
预期结果:Button1被点击一次之后Edit1先显示“0”,然后再显示“1”;
运行结果:只显示“1”!!!
疑 问:为什么没有达到预期的结果呢?我用VB试了,是可以达到预期的结果,但是c++builder不行!!!小弟是初学者,还望各位赐教啊!!!
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit1->Text=0;
Sleep(1000);
Edit1->Text=1;
}
------解决方案--------------------
不完全正确,当你Edit1->Text=0;执行这一句给edit赋值后,text的值已经变成"0"了,但是UI上还没有来得及更新,因为都是在主线程中的,必须等到你这个函数执行完才会更新,但是在函数执行完之前你又给赋值"1"了,所以你看不到显示0的这段时间,加入Application->ProcessMessages(); 就是让你的赋值0之后,主线程先处理一下没处理的消息,让UI把text值更新显示出来.
预期结果:Button1被点击一次之后Edit1先显示“0”,然后再显示“1”;
运行结果:只显示“1”!!!
疑 问:为什么没有达到预期的结果呢?我用VB试了,是可以达到预期的结果,但是c++builder不行!!!小弟是初学者,还望各位赐教啊!!!
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit1->Text=0;
Sleep(1000);
Edit1->Text=1;
}
------解决方案--------------------
不完全正确,当你Edit1->Text=0;执行这一句给edit赋值后,text的值已经变成"0"了,但是UI上还没有来得及更新,因为都是在主线程中的,必须等到你这个函数执行完才会更新,但是在函数执行完之前你又给赋值"1"了,所以你看不到显示0的这段时间,加入Application->ProcessMessages(); 就是让你的赋值0之后,主线程先处理一下没处理的消息,让UI把text值更新显示出来.