共用方式為


事件對應

每當控制項要通知其容器已發生一些動作 (例如按鍵動作、滑鼠點選或變更為控制項的狀態) 時 (由控制項開發人員決定),會呼叫引發事件函式。 這個函式會透過引發相關事件,來通知控制項容器已發生一些重要動作。

MFC 程式庫會針對引發事件提供最佳化的程式設計模型。 在這個模型中,是使用「事件對應」來指定要對特定控制項由哪些函式來引發哪些事件。 事件對應對於每個事件都會包含一個巨集。 例如,引發內建 Click 事件的事件對應可能如下所示:

BEGIN_EVENT_MAP(CMyAxCtrl, COleControl)
EVENT_STOCK_CLICK()
END_EVENT_MAP()

EVENT_STOCK_CLICK巨集表示控件會在每次偵測到滑鼠按兩下時引發 Stock Click 事件。 如需其他庫存事件的詳細清單,請參閱 ActiveX 控件:事件一文。 巨集也可用於表示自訂事件。

雖然事件對應巨集很重要,但您通常不會直接將它們插入。 這是因為當您使用它將事件引發函式與事件產生關聯時,[類別檢視] 視窗會自動在來源檔案中建立事件對應專案。 每當您想要編輯或新增事件對應專案時,都可以使用 [ 屬性 ] 視窗。

為支援事件對應,MFC 提供下列巨集:

事件對應巨集

事件對應宣告和區分

名稱 描述
DECLARE_EVENT_MAP 宣告事件對應將用於類別中,以將事件對應至事件引發函式 (必須在類別宣告中使用)。
BEGIN_EVENT_MAP 開始事件對應的定義 (必須在類別實作中使用)。
END_EVENT_MAP 結束事件對應的定義 (必須在類別實作中使用)。

事件對應巨集

名稱 描述
EVENT_CUSTOM 指出將引發指定事件的事件引發函式。
EVENT_CUSTOM_ID 使用指定的分派 ID,指出將引發指定事件的事件引發函式。

訊息對應巨集

名稱 描述
ON_OLEVERB 指出由 OLE 控制項處理的自訂動詞。
ON_STDOLEVERB 覆寫 OLE 控制項的標準動詞對應。

DECLARE_EVENT_MAP

COleControl程式中的每個衍生類別都可以提供事件對應,以指定控件將引發的事件。

DECLARE_EVENT_MAP()

備註

在類別宣告結尾使用DECLARE_EVENT_MAP巨集。 然後,在定義 類別成員函式的.cpp檔案中,使用BEGIN_EVENT_MAP巨集、每個控件事件的巨集專案,以及END_EVENT_MAP巨集來宣告事件清單的結尾。

如需事件對應的詳細資訊,請參閱 ActiveX 控件:事件一文

需求

標頭 afxctl.h

BEGIN_EVENT_MAP

開始事件對應的定義。

BEGIN_EVENT_MAP(theClass,  baseClass)

參數

theClass
指定事件對應為的控制項類別名稱。

baseClass
指定Class基類名稱。

備註

在定義類別成員函式的實作 (.cpp) 檔案中,使用 BEGIN_EVENT_MAP 巨集啟動事件對應,然後新增每個事件的巨集專案,並使用 END_EVENT_MAP 巨集完成事件對應。

如需事件對應和BEGIN_EVENT_MAP巨集的詳細資訊,請參閱 ActiveX Controls:Events 一文

需求

標頭 afxctl.h

END_EVENT_MAP

使用 END_EVENT_MAP 巨集結束事件對應的定義。

END_EVENT_MAP()

需求

標頭 afxctl.h

EVENT_CUSTOM

定義自定義事件的事件對應專案。

EVENT_CUSTOM(pszName, pfnFire,  vtsParams)

參數

pszName
事件的名稱。

pfnFire
事件引發函式的名稱。

vtsParams
一個或多個常數的空間分隔清單,指定函式的參數清單。

備註

vtsParams 參數是常數中以空格分隔的值VTS_清單。 以空格分隔的其中一或多個值(不是逗號)會指定函式的參數清單。 例如:

VTS_COLOR VTS_FONT

指定清單,其中包含代表 RGB 色彩值的 32 位整數,後面接著 OLE 字型物件的介面指標 IFontDisp

VTS_常數及其意義如下:

符號 參數類型
VTS_I2 short
VTS_I4 long
VTS_R4 float
VTS_R8 double
VTS_COLOR OLE_COLOR
VTS_CY CURRENCY
VTS_DATE 日期
VTS_BSTR const煳*
VTS_DISPATCH LPDISPATCH
VTS_FONT IFontDispatch*
VTS_HANDLE HANDLE
VTS_SCODE SCODE
VTS_BOOL BOOL
VTS_VARIANT const VARIANT*
VTS_PVARIANT VARIANT*
VTS_UNKNOWN LPUNKNOWN
VTS_OPTEXCLUSIVE OLE_OPTEXCLUSIVE
VTS_PICTURE IPictureDisp*
VTS_TRISTATE OLE_TRISTATE
VTS_XPOS_PIXELS OLE_XPOS_PIXELS
VTS_YPOS_PIXELS OLE_YPOS_PIXELS
VTS_XSIZE_PIXELS OLE_XSIZE_PIXELS
VTS_YSIZE_PIXELS OLE_YSIZE_PIXELS
TS_XPOS_HIMETRIC OLE_XPOS_HIMETRIC
VTS_YPOS_HIMETRIC OLE_YPOS_HIMETRIC
VTS_XSIZE_HIMETRIC OLE_XSIZE_HIMETRIC
VTS_YSIZE_HIMETRIC OLE_YSIZE_HIMETRIC

注意

除了VTS_FONT和VTS_PICTURE之外,已針對所有變體類型定義其他變數常數,以提供變數數據常數的指標。 這些常數是使用 VTS_Pconstantname 慣例來命名。 例如,VTS_PCOLOR是VTS_COLOR常數的指標。

需求

標頭 afxctl.h

EVENT_CUSTOM_ID

定義屬於dispid指定分派標識碼的自定義事件引發函式。

EVENT_CUSTOM_ID(
    pszName,
    dispid,
    pfnFire,
    vtsParams)

參數

pszName
事件的名稱。

dispid
引發事件時,控件所使用的分派標識符。

pfnFire
事件引發函式的名稱。

vtsParams
引發事件時傳遞至控制容器的參數變數清單。

備註

vtsParams 自變數是常數中以空格分隔的值VTS_清單。 其中一或多個以空格分隔的值,而不是逗號,會指定函式的參數清單。 例如:

VTS_COLOR VTS_FONT

指定清單,其中包含代表 RGB 色彩值的 32 位整數,後面接著 OLE 字型物件的介面指標 IFontDisp

如需常數清單 VTS_ ,請參閱 EVENT_CUSTOM

需求

標頭 afxctl.h

ON_OLEVERB

此巨集會定義訊息對應專案,將自定義動詞對應至控件的特定成員函式。

ON_OLEVERB(idsVerbName,  memberFxn)

參數

idsVerbName
動詞名稱的字串資源標識碼。

memberFxn
當叫用動詞時,由框架呼叫的函式。

備註

資源編輯器可用來建立新增至字串數據表的自定義動詞名稱。

memberFxn 的函式原型為:

BOOL memberFxn(
   LPMSG    lpMsg,
   HWND     hWndParent,
   LPCRECT  lpRect);

lpMsghWndParentlpRect 參數的值取自成員函式的IOleObject::DoVerb對應參數。

需求

標頭 afxole.h

ON_STDOLEVERB

使用這個巨集覆寫標準動詞的預設行為。

ON_STDOLEVERB(iVerb, memberFxn)

參數

iVerb
被覆寫之動詞的標準動詞索引。

memberFxn
當叫用動詞時,由框架呼叫的函式。

備註

標準動詞索引的格式 OLEIVERB_為 ,後面接著動作。 OLEIVERB_SHOW、OLEIVERB_HIDE和OLEIVERB_UIACTIVATE是標準動詞的一些範例。

如需函式原型的描述,請參閱ON_OLEVERB做為 memberFxn 參數。

需求

標頭 afxole.h

另請參閱

巨集和全域