处理有关OnShow事件c和x2B的消息+;建设者 我使用C++ Builder(BCB6),并在:
活动有:处理有关OnShow事件c和x2B的消息+;建设者 我使用C++ Builder(BCB6),并在:,c++,message-queue,show,c++builder,c++builder-6,C++,Message Queue,Show,C++builder,C++builder 6,活动有: Application->ProcessMessages 我想知道以下方面的具体责任: Application->ProcessMessages 它到底做了什么?我们什么时候用它?什么时候会引起exp 谢谢 BDS 2006 IDE帮助说明了Application->ProcessMessagesthis: 中断应用程序的执行,以便它可以处理消息队列 调用ProcessMessages以允许应用程序处理当前在消息队列中的消息ProcessMessages循环Window
Application->ProcessMessages
我想知道以下方面的具体责任:
Application->ProcessMessages
它到底做了什么?我们什么时候用它?什么时候会引起exp
谢谢
Application->ProcessMessages
this:
中断应用程序的执行,以便它可以处理消息队列
调用ProcessMessages
以允许应用程序处理当前在消息队列中的消息ProcessMessages
循环Windows消息循环,直到其为空,然后将控制权返回给应用程序
忽略消息处理只会影响调用ProcessMessages
的应用程序,而不会影响其他应用程序。在冗长的操作中,周期性地调用ProcessMessages
允许应用程序响应绘画和其他消息
ProcessMessages
不允许应用程序空闲,而HandleMessage
允许应用程序空闲OnShow
。我会将ProcessMessages
放在阻止应用程序的计算中(如果计算在OnShow
中,则它是OK否则它将是无用的。无论如何,只有当窗体转到Visible
时才会调用OnShow
,请不要将其误认为OnActivate
或OnPaint
)btStart,btStop
),然后按如下方式为它们创建单击事件:
//---------------------------------------------------------------------------
bool go=false;
//---------------------------------------------------------------------------
void __fastcall TForm1::btStartClick(TObject *Sender)
{
int i=0;
for (go=true;go;)
{
Caption=i; i++;
Application->ProcessMessages();
Sleep(100);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btStopClick(TObject *Sender)
{
go=false;
}
//---------------------------------------------------------------------------
当您启动应用程序并单击btStart
时,它将在Form1
的Caption
字段中开始递增整数,并在您单击btStop
时停止。在计数期间,应用程序仍有响应(可以单击、移动、调整大小等)。您需要在关闭应用程序之前停止(析构函数等待从所有事件中返回)。如果您rem出应用程序->ProcessMessages();
,则应用程序将计数,但不会停止,因为由于冻结,您无法单击btStop
。要关闭,请单击IDE,然后按CTRL+F2Application->ProcessMessages
this:
中断应用程序的执行,以便它可以处理消息队列
调用ProcessMessages
以允许应用程序处理当前在消息队列中的消息。ProcessMessages
循环Windows消息循环,直到其为空,然后将控制权返回给应用程序
忽略消息处理只会影响调用ProcessMessages
的应用程序,而不会影响其他应用程序。在冗长的操作中,周期性调用ProcessMessages
可使应用程序响应绘制和其他消息
ProcessMessages
不允许应用程序空闲,而HandleMessage
允许应用程序空闲OnShow
。我会将ProcessMessages
放在阻塞应用程序的计算中(如果计算在OnShow
中,则它是OK否则它将是无用的。无论如何,只有当窗体转到Visible
时才会调用OnShow
,请不要将其误认为OnActivate
或OnPaint
)btStart,btStop
),然后按如下方式为它们创建单击事件:
//---------------------------------------------------------------------------
bool go=false;
//---------------------------------------------------------------------------
void __fastcall TForm1::btStartClick(TObject *Sender)
{
int i=0;
for (go=true;go;)
{
Caption=i; i++;
Application->ProcessMessages();
Sleep(100);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btStopClick(TObject *Sender)
{
go=false;
}
//---------------------------------------------------------------------------
当您启动应用程序并单击btStart
时,它将在Form1
的Caption
字段中开始递增整数,并在您单击btStop
时停止。在计数期间,应用程序仍有响应(可以单击、移动、调整大小等)。您需要在关闭应用程序之前停止(析构函数等待从所有事件中返回)。如果您rem出应用程序->ProcessMessages();
,则应用程序将计数,但不会停止,因为由于冻结,您无法单击btStop
。要关闭,请单击IDE,然后按CTRL+F2希望它能澄清一些问题。终于完成了编辑。顺便说一句,BCB6比t更糟糕