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 | const uklí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