CWaitCursor简介与使用(转)
https://blog.csdn.net/dongyewolong/article/details/7106130
CWaitCursor没有基类。
CWaitCursor类提供了显示等待光标的直接方式,当你进行冗长的操作时,它通常显示出一个沙漏。
如果要显示等待光标,仅需在进入执行冗长操作的代码之前定义一个CWaitCursor变量。整个对象的构造函数自动地显示等待光标。
当对象超出作用域时(在定义了CWaitCursor对象的代码块的末尾),它的析构函数将光标设为原来的光标。
注意:
1、不用new来分配。
由于它们的构造函数和析构函数的工作方式,CWaitCursor对象总是被定义为局部变量。它们从不被定义为全局变量,也不用new来分配。
如果你执行了可能会使光标改变的操作,比如显示消息框或对话框,则应调用Restore成员函数以恢复等待光标。
即使当前正在显示等待光标也可以调用Restore函数。
2、
显示等待光标的另一种方式是使用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 在光标被改变后恢复等待光标 .
MFC使用虚拟函数CWinApp::DoWaitCursor来设置和恢复光标。你可以重载这个函数以提供自定义的表现方式。
#include <afxwin.h>
请参阅:
CCmdTarget::BeginWaitCursor, CCmdTarget::EndWaitCursor,
CCmdTarget::RestoreWaitCursor, CWinApp::DoWaitCursor
CWaitCursor类成员
构造/析构 CWaitCursor 构造一个CWaitCursor对象并显示等待光标
操作 Restore 在光标被改变后恢复等待光标 .
示例:
// 下面的例子演示了在冗长操作的过程中显示等待光标的一般方式。
void LengthyFunction( )
{
//你有可能在显示等待光标之前显示一个对话框
CWaitCursor wait; // 显示等待光标
// 执行一些冗长的操作
} // 析构函数自动清除等待光标
// 这个例子演示了在代码块内部使用CWaitCursor对象,
// 因此只有当程序执行冗长的操作时才会显示等待光标。
void ConditionalFunction( )
{
if ( SomeCondition )
{
CWaitCursor wait; // 仅在本代码块内部才显示等待光标。
//执行一些冗长的操作。
} // 在这个地方,析构函数清除等待光标。
else
{
//没有等待光标__只有快速操作
}
}
// 下面的例子演示了在冗长操作的过程中显示等待光标的一般方式。
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( );
// 还有其它冗长操作...
}
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( );
// 还有其它冗长操作...
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现