Sdílet prostřednictvím


Mapy událostí

Kdykoli má ovládací prvek oznámit svému kontejneru, že došlo k nějaké akci (určené vývojářem ovládacího prvku) (například stisknutí klávesy, kliknutí myší nebo změna stavu ovládacího prvku), volá funkci vyvolání události. Tato funkce upozorní kontejner ovládacího prvku, že došlo k nějaké důležité akci aktivací související události.

Knihovna tříd Microsoft Foundation nabízí programovací model optimalizovaný pro aktivaci událostí. V tomto modelu se "mapy událostí" používají k určení funkcí, které aktivují události pro konkrétní ovládací prvek. Mapy událostí obsahují jedno makro pro každou událost. Například mapa události, která aktivuje událost kliknutí na skladě, může vypadat takto:

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

Makro EVENT_STOCK_CLICK označuje, že ovládací prvek aktivuje událost kliknutí na skladě při každém zjištění kliknutí myší. Podrobnější výpis dalších akciových událostí najdete v článku Ovládací prvky ActiveX: Události. Makra jsou také k dispozici pro označení vlastních událostí.

I když jsou makra map událostí důležitá, obvykle je přímo nevkládejte. Důvodem je to, že okno Vlastnosti (v zobrazení třídy) automaticky vytváří položky mapy událostí ve zdrojových souborech, když ho použijete k přidružení funkcí pro aktivaci událostí k událostem. Kdykoli chcete upravit nebo přidat položku mapy událostí, můžete použít okno Vlastnosti .

Pro podporu map událostí poskytuje mfc následující makra:

Makra map událostí

Deklarace a vymezení map událostí

Název Popis
DECLARE_EVENT_MAP Deklaruje, že se mapa událostí použije ve třídě k mapování událostí na funkce pro aktivaci událostí (musí se použít v deklaraci třídy).
BEGIN_EVENT_MAP Začíná definice mapy událostí (musí být použita v implementaci třídy).
END_EVENT_MAP Ukončí definici mapy událostí (musí být použita v implementaci třídy).

Makra mapování událostí

Název Popis
EVENT_CUSTOM Určuje, která funkce pro aktivaci událostí aktivuje zadanou událost.
EVENT_CUSTOM_ID Určuje, která funkce pro aktivaci událostí aktivuje zadanou událost s určeným ID odeslání.

Makra mapování zpráv

Název Popis
ON_OLEVERB Označuje vlastní příkaz, který zpracovává ovládací prvek OLE.
ON_STDOLEVERB Přepíše standardní mapování sloves ovládacího prvku OLE.

DECLARE_EVENT_MAP

Každá COleControl-odvozená třída v programu může poskytnout mapu událostí pro určení událostí, které se vaše řízení aktivuje.

DECLARE_EVENT_MAP()

Poznámky

Použijte makro DECLARE_EVENT_MAP na konci deklarace třídy. Potom v souboru .cpp, který definuje členské funkce pro třídu, použijte BEGIN_EVENT_MAP makro, položky maker pro každou událost ovládacího prvku a END_EVENT_MAP makro deklarovat konec seznamu událostí.

Další informace o mapách událostí najdete v článku Ovládací prvky ActiveX: Události.

Požadavky

Záhlaví afxctl.h

BEGIN_EVENT_MAP

Zahájí definici mapy událostí.

BEGIN_EVENT_MAP(theClass,  baseClass)

Parametry

theClass
Určuje název třídy ovládacího prvku, jejíž událost je mapována.

baseClass
Určuje název základní třídy Třídy.

Poznámky

V souboru implementace (.cpp), který definuje členské funkce pro vaši třídu, spusťte mapu události pomocí BEGIN_EVENT_MAP makra, přidejte položky makra pro každou událost a dokončete mapu událostí pomocí makra END_EVENT_MAP.

Další informace o mapách událostí a makrech BEGIN_EVENT_MAP najdete v článku Ovládací prvky ActiveX: Události.

Požadavky

Záhlaví afxctl.h

END_EVENT_MAP

Pomocí END_EVENT_MAP makra ukončete definici mapy událostí.

END_EVENT_MAP()

Požadavky

Záhlaví afxctl.h

EVENT_CUSTOM

Definuje položku mapy událostí pro vlastní událost.

EVENT_CUSTOM(pszName, pfnFire,  vtsParams)

Parametry

pszName
Název události.

pfnFire
Název funkce pro aktivaci události.

vtsParams
Seznam oddělený mezerami s jednou nebo více konstantami určujícími seznam parametrů funkce.

Poznámky

Parametr vtsParams je seznam hodnot oddělených mezerami od VTS_ konstant. Jedna nebo více těchto hodnot oddělených mezerami (nikoli čárkami) určuje seznam parametrů funkce. Příklad:

VTS_COLOR VTS_FONT

určuje seznam obsahující 32bitové celé číslo představující hodnotu barvy RGB následovaný ukazatelem na IFontDisp rozhraní objektu písma OLE.

Konstanty VTS_ a jejich významy jsou následující:

Symbol Typ parametru
VTS_I2 short
VTS_I4 long
VTS_R4 float
VTS_R8 double
VTS_COLOR OLE_COLOR
VTS_CY MĚNA
VTS_DATE DATE
VTS_BSTR constuklízečka*
VTS_DISPATCH LPDISPATCH
VTS_FONT IFontDispatch*
VTS_HANDLE KLIKA
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

Poznámka:

Další variantní konstanty byly definovány pro všechny typy variant s výjimkou VTS_FONT a VTS_PICTURE, které poskytují ukazatel na konstantu dat varianty. Tyto konstanty jsou pojmenovány pomocí VTS_Pconstantname konvence. Například VTS_PCOLOR je ukazatel na VTS_COLOR konstantu.

Požadavky

Záhlaví afxctl.h

EVENT_CUSTOM_ID

Definuje funkci pro aktivaci události pro vlastní událost, která patří do ID odeslání určeného dispid.

EVENT_CUSTOM_ID(
    pszName,
    dispid,
    pfnFire,
    vtsParams)

Parametry

pszName
Název události.

dispid
ID odeslání používané ovládacím prvku při aktivaci události.

pfnFire
Název funkce pro aktivaci události.

vtsParams
Seznam proměnných parametrů předaných kontejneru ovládacího prvku při spuštění události.

Poznámky

Argument vtsParams je seznam hodnot oddělených mezerami od VTS_ konstant. Jedna nebo více těchto hodnot oddělených mezerami, nikoli čárkami, určuje seznam parametrů funkce. Příklad:

VTS_COLOR VTS_FONT

určuje seznam obsahující 32bitové celé číslo představující hodnotu barvy RGB následovaný ukazatelem na IFontDisp rozhraní objektu písma OLE.

Seznam VTS_ konstant najdete v tématu EVENT_CUSTOM.

Požadavky

Záhlaví afxctl.h

ON_OLEVERB

Toto makro definuje položku mapy zpráv, která mapuje vlastní příkaz na konkrétní členovou funkci vašeho ovládacího prvku.

ON_OLEVERB(idsVerbName,  memberFxn)

Parametry

idsVerbName
ID prostředku řetězce názvu příkazu.

memberFxn
Funkce volaná architekturou při vyvolání příkazu.

Poznámky

Editor prostředků lze použít k vytvoření vlastních názvů příkazů, které se přidají do tabulky řetězců.

Prototyp funkce pro memberFxn je:

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

Hodnoty parametrů lpMsg, hWndParent a lpRect pocházejí z odpovídajících IOleObject::DoVerb parametrů členské funkce.

Požadavky

Záhlaví afxole.h

ON_STDOLEVERB

Toto makro použijte k přepsání výchozího chování standardního slovesa.

ON_STDOLEVERB(iVerb, memberFxn)

Parametry

iVerb
Standardní index slovesa, který se přepíše.

memberFxn
Funkce volaná architekturou při vyvolání příkazu.

Poznámky

Standardní index sloves je ve formuláři OLEIVERB_následovaný akcí. OLEIVERB_SHOW, OLEIVERB_HIDE a OLEIVERB_UIACTIVATE jsou příklady standardních sloves.

Popis prototypu funkce, který se má použít jako parametr memberFxn, najdete v ON_OLEVERB.

Požadavky

Záhlaví afxole.h

Viz také

Makra a globální objekty