共用方式為


IProgressNotify::OnProgress 方法 (objidl.h)

通知已註冊的物件和應用程式下載作業的進度。

語法

HRESULT OnProgress(
  [in] DWORD dwProgressCurrent,
  [in] DWORD dwProgressMaximum,
  [in] BOOL  fAccurate,
  [in] BOOL  fOwner
);

參數

[in] dwProgressCurrent

可用的數據量。

[in] dwProgressMaximum

要下載的數據總量。

[in] fAccurate

指出 dwProgressCurrentdwProgressMaximum 中值的精確度。 它們是可靠的 (TRUE) 或不可靠的 (FALSE) 。 FALSE 值表示尚未下載之數據的實際位置或數量的控制結構無法使用。

[in] fOwner

指出這個 OnProgress 呼叫是否可以控制作業的封鎖行為。 如果為 TRUE,則呼叫端可以使用 OnProgress 的傳回值來封鎖 (STG_S_BLOCK) 、重試 (STG_S_RETRYNOW) 或監視作業 (STG_S_MONITORING) 。 如果為 FALSE則 OnProgress 的傳回值不會影響封鎖行為。

傳回值

這個方法可以傳回標準傳回值E_FAIL、E_INVALIDARG、E_OUTOFMEMORY和E_UNEXPECTED,以及下列值。

傳回碼 Description
STG_S_RETRYNOW
呼叫端是立即重試作業。 (這個值最適用於在回呼例程內封鎖的應用程式。)
STG_S_BLOCK
呼叫端是封鎖下載,並視需要重試呼叫,以判斷是否有其他數據可用。 如果沒有在連接點上註冊任何接收,這是預設行為。
STG_S_MONITORING
回呼收件者會將下載程式的控制權放棄給相同數據流上已註冊進度通知接收的其他物件或應用程式之一。 如果通知接收只對收集統計數據感興趣,這非常有用。
E_PENDING
數據目前無法使用。 呼叫端是在一些所需的間隔之後再試一次。 如果異步記憶體是以非封鎖模式運作,通知接收會傳回此值。

備註

接收可由指定記憶體的任何子記憶體或子數據流繼承。 如果未註冊接收,線程將會封鎖,直到要求的數據可供使用,或下載程式取消下載。

如果多個物件或應用程式已在單一數據流上註冊進度通知接收,則只有其中一個物件可以控制下載的行為。 下載的擁有權會移至第一個接收以向記憶體或串流註冊,或如果記憶體是以 ASYNC_MODE_COMPATIBILITY.) 建立記憶體,則任何可能繼承自父記憶體的建議面板 (

任何一個接收都可以藉由將STG_S_MONITORING傳回給發出目前呼叫端的連接點,將控制權放棄至下一個連接點。 連接點透過接收STG_S_BLOCK或STG_S_RETRYNOW) 取得控制 (之後,呼叫 OnProgress 的所有後續連接點都會將 fOwner 設定為 FALSE

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 objidl.h

另請參閱

IProgressNotify