ITaskbarList3::SetProgressState 方法 (shobjidl_core.h)
設定工作列按鈕上顯示之進度指標的類型和狀態。
語法
HRESULT SetProgressState(
[in] HWND hwnd,
[in] TBPFLAG tbpFlags
);
參數
[in] hwnd
類型: HWND
正在顯示作業進度的視窗控制碼。 此視窗的相關聯工作列按鈕會顯示進度列。
[in] tbpFlags
類型: TBPFLAG
控制進度按鈕目前狀態的旗標。 只指定下列其中一個旗標;所有狀態彼此互斥。
TBPF_NOPROGRESS (0x00000000)
停止顯示進度,並將按鈕傳回其正常狀態。 使用此旗標呼叫這個方法,以在作業完成或取消時關閉進度列。
TBPF_INDETERMINATE (0x00000001)
進度指標的大小不會成長,但會重複沿著工作列按鈕的長度迴圈。 這表示活動,而不指定進度完成的比例。 進行進度,但不會預測作業需要多久的時間。
TBPF_NORMAL (0x00000002)
進度指標會根據完成作業的估計數量,從左至右成長。 這是具決定性的進度指標;正在針對作業持續時間進行預測。
TBPF_ERROR (0x00000004)
進度指標會變成紅色,以顯示其中一個正在廣播進度的視窗中發生錯誤。 這是具決定性的狀態。 如果進度指標處於不確定狀態,則會切換至未指出實際進度的泛型百分比紅色判斷顯示。
TBPF_PAUSED (0x00000008)
進度指標會變成黃色,以顯示進度目前在其中一個視窗中停止,但可由使用者繼續。 沒有任何錯誤狀況存在,而且沒有任何動作會阻止進度繼續。 這是具決定性的狀態。 如果進度指標處於不確定狀態,則會切換為黃色判定顯示泛型百分比,而不是表示實際進度。
傳回值
類型: HRESULT
如果此方法成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。
備註
進度列資訊不會以高對比色彩配置顯示,以確保沒有協助工具需求遭到入侵。
熟悉現有 進度列 控制項的開發人員應該會發現工作列按鈕進度指標在概念和視覺效果中都是類似的體驗。 在這裡,工作列按鈕本身會變成進度列。 工作列按鈕的進度指標應該是相關聯視窗中更詳細進度列的反映。 這可讓使用者查看無法顯示在工作列按鈕中的特定專案,例如百分比數目和剩餘的時間量。 此外,由於工作列按鈕只能顯示群組中單一視窗的進度,因此可讓使用者檢查個別視窗的進度。 它也會在工作列按鈕無法提供進度資訊給使用者,例如在高對比色彩配置中。
請注意,工作列按鈕進度列不適合用于一般周邊動作,例如載入網頁或列印檔案。 該類型的進度應該會繼續顯示在視窗 的狀態列中。
進度指標會顯示在工作列按鈕的圖示或文字與背景之間。 如果作用中工作列按鈕和非作用中的按鈕都顯示進度,則個別進度列中的網底會讓使用中按鈕對使用者而言仍然明顯。 此外,當按鈕用來顯示進度時,例如縮圖顯示等按鈕功能會繼續正常運作。
結束錯誤或暫停狀態時,請使用 TBPF_NORMAL 或 TBPF_INDETERMINATE 旗標再次呼叫此方法,以在取消作業時繼續處於原始狀態或 TBPF_NOPROGRESS 。
工作列按鈕如何選擇群組的進度指標
工作列按鈕一次只能顯示一個視窗的進度指標。 這包括工作列按鈕代表群組的情況,在該群組中有多個視窗正在廣播進度資訊。 在此情況下,工作列按鈕會根據狀態優先順序選擇其進度顯示。 下表顯示狀態優先順序,優先順序為最高 1。優先順序 | State |
---|---|
1 | TBPF_ERROR |
2 | TBPF_PAUSED |
3 | TBPF_NORMAL |
4 | TBPF_INDETERMINATE |
變更視窗的狀態會變更其優先順序,相對於群組中的其他視窗,而此視窗可能會變更群組中的哪個視窗會用於工作列按鈕中的進度指標。
如果是廣播確定進度的兩個視窗之間的優先順序衝突,則會使用具有最小進度的視窗。
根據此優先順序,不確定的進度指標只能在下列情況下顯示在工作列按鈕中:
- 工作列按鈕不代表群組,而它代表的單一視窗已設定TBPF_INDETERMINATE。
- 工作列按鈕代表群組,該群組中只有一個視窗是廣播進度資訊,而該視窗已設定 TBPF_INDETERMINATE。
- 工作列按鈕代表群組、該群組中的多個視窗都是廣播進度資訊,而且所有視窗都已設定 TBPF_INDETERMINATE。
在下列情況下,可以顯示確定進度指標:
- 工作列按鈕不代表群組,而它所代表的單一視窗是廣播確定進度資訊。
- 工作列按鈕代表一個群組,該群組中只有一個視窗是廣播進度資訊,而該視窗則是廣播判斷進度資訊。
- 工作列按鈕代表群組、該群組中的多個視窗正在廣播進度資訊、至少其中一個視窗是廣播確定進度資訊,而且沒有視窗已設定 TBPF_ERROR 或 TBPF_PAUSED。
請注意,對 SetProgressValue 的呼叫會將目前處於不確定模式的進度指標切換 (TBPF_INDETERMINATE) 為一般 (判斷) 顯示並清除 TBPF_INDETERMINATE 旗標。
規格需求
最低支援的用戶端 | Windows 7 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 R2 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | shobjidl_core.h (包括 Shobjidl.h) |
程式庫 | Explorerframe.lib |
Dll | Explorerframe.dll |