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;
}
}
浙公网安备 33010602011771号