检查是否被点击其他任意键

我试图找到答案,但我没有找到它。

我想要做这样的事情:当我点击按钮,我想它重复动作直到另一个按钮被点击

我有这样的事情:

void __fastcall TForm1::BitBtn1Click(TObject *Sender) { if(pole!=NULL){ pole->przesun_lidera(pole->wladca); pole->rozstaw(); pole->rysuj_plansze(); } }

我想在“如果”重复的动作,直到我点击另一个按钮。

有人能告诉我,我怎么能做到这一点?

--------------解决方案-------------

我想,你在这里两种可能性。 其一是让一个线程,并在其中执行代码,直到一个条件,另一个按钮设置设定。 另一种可能性是让消息泵,而内循环,通过调用ProcessMessages(),如处理消息

void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
condition = false;
while( !condition && pole!=NULL){
pole->przesun_lidera(pole->wladca);
pole->rozstaw();
pole->rysuj_plansze();
Application->ProcessMessages();
Sleep(1); // don't be a processor hog
}
}

void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
condition = true;
}

您将需要有一个在“背景”执行的函数。

视窗是事件驱动的系统。 当Windows接收事件的功能才被激活。 我的理解是你想要的东西发生在等待发生特定事件(按下按钮)。 事件之间的时间是“背景”的时间。

一个想法是让Windows执行你的函数在等待时。 搜索“Windows自旋等待”网页。 这会给你的信息如何“挂钩”的背景或旋转等待循环的功能。

您可能还需要创建另一个线程作为后台任务。 对后台线程你的第一个按钮单击打开。 后台线程将执行,直到信号灯 等待对象设置。 第二次按下按钮将设置信号灯/ 等待的对象 ,通知后台任务停止。 还有类似的方法,但是这是问题的基础。

分类:C# 时间:2015-03-14 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.748 (s). 10 q(s)