BeginWaitCursor()、EndWaitCursor()和RestoreWaitCursor()3个成员函数处理等待光标
2013-07-22 15:27
357 查看
CCmdTarget类定义BeginWaitCursor()、EndWaitCursor()和RestoreWaitCursor()3个成员函数处理等待光标。BeginWaitCursor()将光标设置为沙漏形状,该函数有可能被程序框架调用,通知用户状态忙,例如当加载和存储文档时。EndWaitCursor()将光标恢复为沙漏之前的形状,一般与BeginWaitCursor()配合使用。
在实际编程中,在一个比较耗费机时的处理前应该主动调用BeginWaitCursor()设置光标,在处理结束时要调用EndWaitCursor()恢复光标。例如:
如果在BeginWaitCursor()和EndWaitCursor()之间的处理中,弹出了模式对话框,光标会由沙漏变为标准形状(通常是标准箭头)。为处理这种情形,可以在对话框关闭后,调用成员RestoreWaitCursor()重新将光标设置回沙漏形状,直到处理结束后调用EndWait Cursor()。例如:
但如果弹出的是MessageBox()消息框,就不必调用RestoreWaitCursor(),光标会自动恢复为沙漏。
在非CCmdTarget派生类中,可以使用CWaitCursor类设置等待光标。该类的构造函数和析构函数相当于CCmdTarget::BeginWaitCursor()和CCmdTarget::EndWaitCursor(),成员函数Restore()相当于CCmdTarget:: RestoreWaitCursor()。
在实际编程中,在一个比较耗费机时的处理前应该主动调用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()。
相关文章推荐
- BeginWaitCursor()、EndWaitCursor()和RestoreWaitCursor()3个成员函数处理等待光标
- VC中BeginWaitCursor()和EndWaitCursor()函数
- BeginWaitCursor()和EndWaitCursor()函数
- VC中BeginWaitCursor()和EndWaitCursor()函数
- MFC:: BeginWaitCursor()和EndWaitCursor()函数
- 处理cursor: pin S wait on X等待事件
- VC中BeginWaitCursor()和EndWaitCursor()函数 【转】
- cursor: pin S wait on X等待事件的处理过程(转载)
- linux内核中等待队列 (函数wait_event与wake_up)
- STL中vector容器 begin()与end()函数、front()与back()的用法
- 一种实现Win32消息处理处理函数的新方法 - 基于Thunk实现的类成员消息处理函数
- C++STL中vector容器 begin()与end()函数、front()与back()的用法
- _beginthreadex使用WaitForMultipleObjects等待退出的问题
- vector容器 begin()与end()函数、front()与back()的用法
- linux内核中等待队列 (函数wait_event与wake_up)
- 在MFC中类内部建立线程处理函数以便调用类的成员函数和变量
- list(链表)常用成员(顺序容器)----插入push_back,push_front,insert删除pop_back,pop_front,erase,clear遍历begin,end判空emp
- string基本的类成员函数的使用(at、length、size、begin、empty、resize)
- boost库学习随记六:使用同步定时器、异步定时器、bind、成员函数回调处理、多线程的同步处理示例等
- linux内核中等待队列 (函数wait_event与wake_up)