1. 程式人生 > >軟體正在執行時,介面上顯示打圈圈,等待任務執行完成

軟體正在執行時,介面上顯示打圈圈,等待任務執行完成

1.BeginWaitCursor()是CCmdTarget類的函式

  函式原型:void   BeginWaitCursor();  
  功能簡介:本函式用於顯示沙漏游標。呼叫本函式顯示沙漏游標,告訴使用者系統正在執行,繁忙。
  注意:在不是處理單個訊息時,BeginWaitCursor()可能不像其它函式那樣有效,例如:OnSetCursor()的處理也能改變游標形狀。  
2.函式EndWaitCursor可以恢復此前的游標。
--------------------- 
作者:行者無疆帆 
來源:CSDN 
原文:https://blog.csdn.net/yf0811240333/article/details/38760003 
版權宣告:本文為博主原創文章,轉載請附上博文連結!

 

SetCapture():

該函式在屬於當前執行緒的指定窗口裡設定滑鼠捕獲。一旦視窗捕獲了滑鼠,所有滑鼠輸入都針對該視窗,無論游標是否在視窗的邊界內。同一時刻只能有一個視窗捕獲滑鼠。如果滑鼠游標在另一個執行緒建立的視窗上,只有當滑鼠鍵按下時系統才將滑鼠輸入指向指定的視窗。

當你不在需要繼續獲得滑鼠訊息就要應該呼叫ReleaseCapture()釋放掉,否則別的執行緒想呼叫就會失敗。記住:SetCapture()和ReleaseCapture()必須成對呈現。

        BeginWaitCursor();
		SetCapture();
		while(!m_ImgShow.m_ltCurCorImg.empty()&&!m_ImgShow.m_bganyu)
		{
			num++;
			CLog::GetInstance()->WriteLog(_T("正在儲存資料,num:%d"),num);
			Sleep(50);
		}
		if (m_vImgBig.size()!=0)
		{
			CLog::GetInstance()->WriteLog(_T("儲存多圖干預資料m_vImgBig"));
			m_correctMultiImgs.SaveImgVectorLayers(m_vImgBig);
		}
		if (m_vImgBig.size()!=0)
		{
			CLog::GetInstance()->WriteLog(_T("儲存多圖干預資料m_vImgSmall"));
			m_correctMultiImgs.SaveImgVectorLayers(m_vImgSmall);
		}
		
		EndWaitCursor();
		ReleaseCapture();