Crazy_Challenger

导航

 

AfxGetApp()->BeginWaitCursor();
AfxGetApp()->EndWaitCursor();
--可以用来在处理需要一定时间的事物时,设置光标的显示状态。

在单线程程序中,如果要执行一个长时间的复杂操作而且界面要有相应的话,可以考虑用自己的消息泵。比如,可以将一个阻塞等待操作放在一个循环中,并将超时值设置得比较小,然后每个等待的片段中用消息泵继续消息循环,使界面能够响应用户操作。等等之类,都可以应用消息泵(调用一个类似这样的函数):

BOOL CChildView::PeekAndPump()
{
MSG msg;
while(::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
{
if(!AfxGetApp()->PumpMessage())
{
::PostQuitMessage(0);
return false;
}
}
return true;
}
PumMessage()收到WM_QUIT消息时返回FALSE。

在激光打标机中有这样的代码
void CControl::DoEvents()
{
MSG msg;
while (::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
{
if (!AfxGetThread()->PumpMessage())
return;
}
}

posted on 2019-07-11 00:02  Crazy_Challenger  阅读(149)  评论(0)    收藏  举报