问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言设置光标 取消沙漏

发布网友 发布时间:2022-04-27 06:42

我来回答

1个回答

热心网友 时间:2022-06-27 21:43

CCmdTarget类定义BeginWaitCursor()、EndWaitCursor()和RestoreWaitCursor()3个成员函数处理等待光标。BeginWaitCursor()将光标设置为沙漏形状,该函数有可能被程序框架调用,通知用户状态忙,例如当加载和存储文档时。EndWaitCursor()将光标恢复为沙漏之前的形状,一般与BeginWaitCursor()配合使用。
  在实际编程中,在一个比较耗费机时的处理前应该主动调用BeginWaitCursor()设置光标,在处理结束时要调用EndWaitCursor()恢复光标。

  void CWaitCursorDoc::LoadFile(char * Filepath)
  {
    //显示沙漏光标
    BeginWaitCursor();
    //耗费机时的处理过程
    TRACE("正在装入文件,请等待.../n");
    ......
    //恢复为沙漏前的光标形状
    EndWaitCursor();
  }
  如果在BeginWaitCursor()和EndWaitCursor()之间的处理中,弹出了模式对话框,光标会由沙漏变为标准形状(通常是标准箭头)。为处理这种情形,可以在对话框关闭后,调用成员RestoreWaitCursor()重新将光标设置回沙漏形状,直到处理结束后调用EndWait Cursor()。例如:
  void CWaitCursorDoc::LoadFile(char * Filepath)
  {
    WIN32_FIND_DATA FindData;
    //显示沙漏光标
    BeginWaitCursor();
    //耗费机时的处理过程
    if(::FindFirstFile(Filepath,&FindData)==INVALID_HANDLE_VALUE)
    {
      TRACE("打开文件出错,请重新指定文件/n");
      CFileDlg dlg;
      dlg.DoModal();
      //恢复光标的沙漏形状
      RestoreWaitCursor();
    }
    TRACE("正在装入文件,请等待.../n");
    ......
    //恢复沙漏前的光标形状
    EndWaitCursor();
  }
  但如果弹出的是MessageBox()消息框,就不必调用RestoreWaitCursor(),光标会自动恢复为沙漏。
  在非CCmdTarget派生类中,可以使用CWaitCursor类设置等待光标。该类的构造函数和析构函数相当于CCmdTarget::BeginWaitCursor()和CCmdTarget::EndWaitCursor(),成员函数Restore()相当于CCmdTarget:: RestoreWaitCursor()。
MFC中文手册中的解释如下:
CWaitCursor
CWaitCursor没有基类。
CWaitCursor类提供了显示等待光标的直接方式,当你进行冗长的操作时,它通常显示出一个沙漏。好的Windows编程方式要求你在执行耗用大量时间的操作时显示等待光标。
如果要显示等待光标,仅需在进入执行冗长操作的代码之前定义一个CWaitCursor变量。整个对象的构造函数自动地显示等待光标。
当对象超出作用域时(在定义了CWaitCursor对象的代码块的末尾),它的析构函数将光标设为原来的光标。换句话说,该对象自动执行必要的清除工作。
注意:
由于它们的构造函数和析构函数的工作方式,CWaitCursor对象总是被定义为局部变量__它们从不被定义为全局变量,也不用new来分配。
如果你执行了可能会使光标改变的操作,比如显示消息框或对话框,则应调用Restore成员函数以恢复光标。即使当前正在显示等待光标也可以调用Restore函数。
显示等待光标的另一种方式是使用CCmdTarget::BeginWaitCursor和CCmdTarget::EndWait Cursor的组合,可能还有CCmdTarget::RestoreWaitCursor。但是,CWaitCursor更易于使用,因为你在完成了冗长的操作之后不必将光标恢复到原来的光标。
注意:
MFC使用虚拟函数CWinApp::DoWaitCursor来设置和恢复光标。你可以重载这个函数以提供自定义的表现方式。
#include
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机导航地图语音怎么下载 如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 锻炼颈椎的几个动作 水多久能结冰 冰能在多长时间内形成 请问水低于0度会结冰吗? 如何防止脱发严重 C语言光标控制 刚学C语言,求解光标的位置怎么控制? VC++6.0下C语言怎样控制光标 c/c++ 中 关于光标的控制 C如何用键盘上下左右控制光标移动 C语言的光标? C语言里,如何在某行代码处设置断点? 在c语言中怎样设置断点? c语言如何设置断点,有何用处,谢了 天津医科大学和苏州大学哪个药学考研好考?分数线和报录比是多少 考天津医科大学的研究生要求4,6级成绩吗 天津医科大学研究生临床专业历年提档分数线是多少? 2011考研报的是天津医科大学消化内科专业学位,总分331,英语59,*60,西综212,请问我这分数能进复试 考取桂林医学院的研究生相对于天津医科大学的难度大多少!?它的分数线大约在多少分!? 天津医科大学 考研需要多少分呢? 天津医科大学研究生录取分数线是多少分 天津医科大学口腔考研历年分数线是多少 美团没有逾期怎么突然有额度不能用了呢? 美团联名卡有可用额度为什么不能使用 有那些好听的QQ情侣名称 c语言怎么移动光标Xcode系统 荣耀v30pro电用完关机了再充电有影响吗? 2015榆林市绥德县公务员面试人员名单 榆林公务员面试培训辅导机构 砂糖橘热潮来袭,为何人人都炫砂糖橘?真的可以一次吃一筐吗? 安徽省榆林一六年公务员考试排名 沙糖桔是上火的还是下火的 砂糖橘吃多了皮肤真的会变黄吗? 砂糖桔被称为“杀人桔”,这个称号究竟是怎么由来的? 描写沙糖桔的好句好段好词 贡桔与沙塘桔的区别是什么? 2021年汉中公务员政审结束作什么时间公示。 “清明时节雨纷纷,路上行人欲断魂”,此时的降水与哪种天气系统有关(  )A.慢行冷锋B.冷锋C.暖锋D D8560迈锋怎么一键ROOT 下列四幅图中,正确表示冷锋天气的是( )A.B.C.D 形成我国冬季寒潮的天气系统是( ) A.气旋 B.反气旋 C.冷锋 D.暖 下列哪项不属于引起中国大范围暴雨的天气系统?A锋B气旋c东风波D电磁波 下列四种锋中,能够带给人们凉爽晴朗的天气的是 A暖锋B冷锋 C中锋D热锋 "黄梅时节家家雨,青草池塘处处蛙"描写的天气影响因素是()A冷锋B暖锋C准静止锋D气团 下图为锋面示意图,a、b、c、d四地大致位于北半球同一纬度,此时气温最低,气压最高的地点是(不考虑地形