關於進度列控件

進度列是應用程式可用來指出冗長作業進度的視窗。

它是由一個矩形所組成,這個矩形會在作業進行時產生動畫效果。

下圖顯示不使用可視化樣式的進度列。

screen shot of a progress bar that adds rectangles in a line to indicate progress

下圖顯示使用可視化樣式的進度列。 控件的外觀會根據操作系統和選取的主題而有所不同。 如需詳細資訊,請參閱 可視化樣式

screen shot of a progress bar that lengthens an animated green rectangle to indicate progress

詳細資訊包含在下列標題之下。

使用進度列

您可以使用 CreateWindowEx 函式來建立進度列,並指定PROGRESS_CLASS窗口類別。 載入通用控制項 DLL 時,會註冊此視窗類別。 如需詳細資訊,請參閱 關於通用控件

控件也可在 Microsoft Visual Studio 工具箱中取得,其稱為 [進度控件]。

範圍和目前位置

進度列 的範圍 代表作業的整個持續時間,而 目前的位置 代表應用程式完成作業的進度。 視窗程式會使用範圍和目前位置來判斷進度列的百分比,以填滿醒目提示色彩。

如果您未設定範圍值,系統會將最小值設定為 0,並將最大值設定為 100。 您可以使用PBM_SETRANGE訊息,將範圍調整為方便的整數。

進度列提供數個訊息,可用來設定目前的位置。 PBM_SETPOS訊息會將位置設定為指定的值。 PBM_DELTAPOS訊息會將指定的值新增至目前位置,來推進位置。

PBM_SETSTEP訊息可讓您指定進度列的遞增步驟。 之後,每當您將PBM_STEPIT訊息傳送至進度列時,目前的位置會依指定的增量前進。 根據預設,步驟增量會設定為10。

默認進度列訊息處理

本節描述PROGRESS_CLASS類別之視窗程式所處理的訊息。

訊息 已執行處理
WM_CREATE 配置和初始化初始結構。
WM_DESTROY 釋放與進度列相關聯的所有資源。
WM_ERASEBKGND 繪製進度列的背景和框線。
WM_GETFONT 傳回目前字型的句柄。 進度列目前不會繪製文字,因此傳送此訊息不會影響控件。
WM_PAINT 繪製進度列。 如果 wParam 參數不是 NULL,控制項會假設此值為 HDC,並使用該裝置內容繪製。
WM_SETFONT 將句柄儲存至新的字型,並將句柄傳回上一個字型。 進度列目前不會繪製文字,因此傳送此訊息不會影響控件。

 

選框樣式

藉由使用 PBS_MARQUEE 樣式建立進度列控件,您可以以顯示活動但未指出工作完成比例的方式建立進度列控件的動畫效果。 進度列的醒目提示部分會沿著長條的長度重複移動。 您可以藉由傳送 PBM_SETMARQUEE 訊息來啟動和停止動畫,並控制其速度。 選框進度列沒有範圍或位置。

下圖顯示選框模式中的進度列。 醒目提示的部分會在橫條上移動。

screen shot of a progress bar that moves a green highlight across a gray rectangle to indicate progress