CWaitCursor简介与使用

CWaitCursor没有基类。
CWaitCursor类提供了显示等待光标的直接方式,当你进行冗长的操作时,它通常显示出一个沙漏。好的Windows编程方式要求你在执行耗用大量时间的操作时显示等待光标。
如果要显示等待光标,仅需在进入执行冗长操作的代码之前定义一个CWaitCursor变量。整个对象的构造函数自动地显示等待光标。
当对象超出作用域时(在定义了CWaitCursor对象的代码块的末尾),它的析构函数将光标设为原来的光标。换句话说,该对象自动执行必要的清除工作。
注意:
由于它们的构造函数和析构函数的工作方式,CWaitCursor对象总是被定义为局部变量__它们从不被定义为全局变量,也不用new来分配。如果你执行了可能会使光标改变的操作,比如显示消息框或对话框,则应调用Restore成员函数以恢复光标。即使当前正在显示等待光标也可以调用Restore函数。
显示等待光标的另一种方式是使用CCmdTarget::BeginWaitCursor和CCmdTarget::EndWait Cursor的组合,可能还有CCmdTarget::RestoreWaitCursor。但是,CWaitCursor更易于使用,因为你在完成了冗长的操作之后不必将光标恢复到原来的光标。
注意:
MFC使用虚拟函数CWinApp::DoWaitCursor来设置和恢复光标。你可以重载这个函数以提供自定义的表现方式。
#include <afxwin.h>
请参阅:
CCmdTarget::BeginWaitCursor, CCmdTarget::EndWaitCursor, 
CCmdTarget::RestoreWaitCursor, CWinApp::DoWaitCursor
CWaitCursor类成员
构造/析构 CWaitCursor 构造一个CWaitCursor对象并显示等待光标  
操作 Restore 在光标被改变后恢复等待光标 .#SinaEditor_Temp_FontName
 
 
示例:
// 下面的例子演示了在冗长操作的过程中显示等待光标的一般方式。
void LengthyFunction( )
{
  //你有可能在显示等待光标之前显示一个对话框
  CWaitCursor wait; // 显示等待光标
  // 执行一些冗长的操作
} // 析构函数自动清除等待光标
// 这个例子演示了在代码块内部使用CWaitCursor对象,
// 因此只有当程序执行冗长的操作时才会显示等待光标。
void ConditionalFunction( )
{
  if ( SomeCondition )
  {
    CWaitCursor wait; // 仅在本代码块内部才显示等待光标。
    //执行一些冗长的操作。
  } // 在这个地方,析构函数清除等待光标。
  else
  {
    //没有等待光标__只有快速操作
  }
}
 
CWaitCursor::Restore
void Restore( );
说明:
如果想要恢复等待光标,则应在完成操作后调用这个函数,比如显示消息框或对话框,这可能会使等待光标变为其它光标。
如果当前正显示等待光标,也可以调用Restore函数。
如果你需要在没有定义CWaitCursor对象的函数内部恢复等待光标,则应调用CCmdTarget::RestoreWaitCursor。
示例:
// 这个例子演示了改变等待光标的操作
// 在完成改变光标的操作以后,你应当调用
// CWaitCursor::Restore以恢复光标。
void AnotherLengthyFunction( )
{
  CWaitCursor wait; // 显示等待光标
  //执行一些冗长操作
  //对话框通常会将光标变为标准的箭头光标。
  CSomeDialog dlg;
  dlg.DoModal( );
  //为了将光标变回等待光标,必须调用Restore函数。
  wait.Restore( );
  // 执行一些冗长操作
  // 析构函数自动清除等待光标
}
// 如果等待光标被创建它的函数所调用的函数改变,
// 你可以调用CCmdTarget::RestoreWaitCursor来恢复等待光标。
void CalledFunction()
{
  CSomeDialog dlg;
  dlg.DoModal();
  // 由于CWinApp是从CCmdTarget继承的,我们可以
  // 使用应用程序对象的指针来调用CCmdTarget::RestoreWaitCursor。
  AfxGetApp()->RestoreWaitCursor( );
  // 还有其它冗长操作...
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值