閱讀英文

共用方式為


控制事件 (COM)

除了提供屬性和方法之外,控件也會提供傳出介面,以通知其用戶端的事件。 用戶端必須支持處理這些事件。 如需可連接物件運作方式的詳細資訊,請參閱 COM 和 連線 able Objects 中的事件。

控件可以針對不同的用途支援不同的傳出介面。 所有傳出介面都會在控件的類型資訊中標示為來源介面,但只有一個會標示為預設,表示它是主要傳出介面。

容器可以支援控制項所定義的一或多個傳出介面。 控件應該準備好處理只支援部分傳出介面的容器。

控制項支援四種事件:

  • 要求事件。 控件會透過呼叫傳出介面中的方法,要求其用戶端的許可權來執行某些動作,從而觸發要求事件。 用戶端會透過控件所呼叫之 方法中的布爾值 out 參數,向控件發出訊號。 因此,用戶端可以防止控件執行動作。
  • 事件之前。 控件會透過在傳出介面中呼叫 方法,以通知其用戶端帽子,因此會觸發before事件。 客戶端沒有機會防止動作,但可以採取任何必要步驟,因為即將發生的動作。
  • 事件之後。 控件會通知其用戶端,它剛在傳出介面中呼叫 方法,進而觸發 after 事件。 同樣地,客戶端無法取消此動作,但它可以在發生動作時採取必要步驟。
  • 執行事件。 控件會觸發 do 事件,以允許其用戶端覆寫控件的動作,並提供一些替代或補充動作。 通常,控件呼叫 do 事件的方法有數個參數,可與用戶端就會發生的動作進行交涉。

以下是針對控件可支援的標準事件所定義:Click、DblClick、KeyDown、KeyPress、KeyUp、MouseMove、MouseUp 和 Error。 所有這些標準事件都有負的 DISPID 值,表示其標準狀態。

使用 TRUE 呼叫 IOleControl::FreezeEvents 方法時,會告訴控件容器是否會在以 FALSE 再次呼叫 FreezeEvents 之前,困擾處理控件的事件。 在此期間,控件無法依賴容器實際處理任何事件。 如果必須處理事件,控件應該將事件排入佇列,以便在使用 FALSE 呼叫 FreezeEvents引發事件。

ActiveX 控制項