从下面的2种技术中选择其一,一个比较简单、另一个更简单。
第1种技术:
调用CCmdTarget::BeginWaitCursor()把光标变为沙漏,调用CCmdTarget::EndWaitCursor()把光标恢复到以前的状态。注意:这两种调用增加或减少一个内部的参考总数。也就是说,如果调用了BeginWaitCursor()2次,那么也应该调用EndWaitCursor()2次,这样才能使光标恢复到普通状态。下面的代码说明了如何使用这些函数:
注意:只能在CCmdTarget派生类的上下文中使用这种技术。幸运的是,因为CWnd类派生于CCmdTarget,所以这包括了所有的窗口类以及从CDocument和CWinApp派生出的所有类。
第2种技术:
CWaitCursor提供了一种更简单的方式来显示一个沙漏光标:在应用程序对象中,CWaitCursor的构造函数和析构函数分别调用BeginWaitCursor()和EndWaitCursor()。因此,只要简单的在堆栈中生产CWaitCursor对象的一个实例来显示沙漏光标,直到CWaitCursor变量跳出该范围。
使用CWaitCursor 对象代替BeginWaitCursor()和EndWaitCursor()调用,也可以得到较稳固的代码。C++语言保证了可以在所有场合调用CWaitCursor 的析构函数,因此,可以把光标恢复到普通状态。