问题1:在窗体上,加入TButton 和TLabel
2:在Button的单击事件中:
Label1->Caption 设为0void __fastcall TForm1::Button1Click(TObject *Sender)
{
for(int i=1;i<=10;i++)
{
Label1->Caption=i;
Sleep(100);
}
}
目的是想让Label->Caption依次显示1,2,3,.....10
为使 每个数字显示1秒,加入Sleep(1000),相当于线程停止执行1秒,运行结果如下:单击Button后,Label1->Caption无变化,一直为0.等到10秒后,直接由0变为10.这就奇怪了,为什么不依次1,2,3,4,5,6,7,8,9,10,而是依次就变为10?
尽管是BCB,都是相通的.
兄弟们来看看呀???
2:在Button的单击事件中:
Label1->Caption 设为0void __fastcall TForm1::Button1Click(TObject *Sender)
{
for(int i=1;i<=10;i++)
{
Label1->Caption=i;
Sleep(100);
}
}
目的是想让Label->Caption依次显示1,2,3,.....10
为使 每个数字显示1秒,加入Sleep(1000),相当于线程停止执行1秒,运行结果如下:单击Button后,Label1->Caption无变化,一直为0.等到10秒后,直接由0变为10.这就奇怪了,为什么不依次1,2,3,4,5,6,7,8,9,10,而是依次就变为10?
尽管是BCB,都是相通的.
兄弟们来看看呀???
解决方案 »
- 请问一个关于tooltip的问题
- 招聘 系统设计人员(深圳)
- 请教~关于消息函数的添加出现的问题
- [无聊贴] 终于找到这个谜语的答案,不过...
- 我的服务器程序异常自动关闭,一般是哪些原因呢?!(我的服务器连接了数据库和客户端)
- 很奇怪的问题,为什么__stdcall不好用了??函数名城的修饰完全没去掉!!
- DAO , ADO OLE DB 。。。 谁能比较一下,目前用的做多的是那种?
- 怎样使用延时编程
- 在DLL编程中,导出函数为什么需要extern "C"
- ==================月薪8百,招聘VC通讯编程高手72名,要求待遇进来看.==============
- 关于构造函数中类成员变量赋值和 构造函数传递指针?
- 如何把数据写入access的ole字段。。
正确用法是在你的主线程中用API:
MsgWaitForMultiObjects等待1秒钟超时(通过先创建一个事件)event = CreateEvent(...); // locked state
MsgWaitForMultiObject(1, &event, 1000);或 者:
创建一个新线程,在新线程中运行for循 环 ,代码不变.
所以你上面的程序,给Label1产生了10个刷新消息,但实际只执行一个就够了,因为前一个刷新还没得到执行,后一个刷新又来了,windows自动覆盖前一个,这是优化。
for(int i=1;i<=10;i++)
{
Label1->Caption=i;
//在这里取出消息,再分发消息,让Label1去刷新自己
Sleep(100);
}
{
for(int i=1;i<=10;i++)
{
Label1->Caption= String(i);
Label1->Invalidate();
Label1->Update();
Sleep(100);
}
}