CComControl – třída
Tato třída poskytuje metody pro vytváření a správu ovládacích prvků ATL.
Důležité
Tuto třídu a její členy nelze použít v aplikacích, které se spouští v prostředí Windows Runtime.
Syntaxe
template <class T, class WinBase = CWindowImpl<T>>
class ATL_NO_VTABLE CComControl : public CComControlBase,
public WinBase;
Parametry
T
Třída implementuje ovládací prvek.
WinBase
Základní třída, která implementuje funkce vytváření oken. Výchozí hodnota je CWindowImpl.
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CComControl::CComControl | Konstruktor |
Veřejné metody
Název | Popis |
---|---|
CComControl::ControlQueryInterface | Načte ukazatel na požadované rozhraní. |
CComControl::CreateControlWindow | Vytvoří okno pro ovládací prvek. |
CComControl::FireOnChanged | Upozorní jímku kontejneru, že se změnila vlastnost ovládacího prvku. |
CComControl::FireOnRequestEdit | Upozorní jímku kontejneru, že se chystá změnit vlastnost ovládacího prvku a že objekt žádá jímku, jak pokračovat. |
CComControl::MessageBox | Voláním této metody vytvoříte, zobrazíte a zobrazíte okno se zprávou. |
Poznámky
CComControl
je sada užitečných pomocných funkcí ovládacích prvků a základních datových členů pro ovládací prvky ATL. Při vytvoření standardního ovládacího prvku nebo DHTML ovládací prvek pomocí PRŮVODCE ovládacím prvku ATL průvodce automaticky odvozuje vaši třídu z CComControl
. CComControl
odvozuje většinu jeho metod z CComControlBase.
Další informace o vytvoření ovládacího prvku najdete v kurzu ATL. Další informace o Průvodci projektem ATL naleznete v článku Vytvoření projektu ATL.
Ukázku metod a datových CComControl
členů najdete v ukázce CIRC .
Hierarchie dědičnosti
WinBase
CComControl
Požadavky
Hlavička: atlctl.h
CComControl::CComControl
Konstruktor
CComControl();
Poznámky
Volá CComControlBase konstruktor, který předává m_hWnd
datový člen zděděný prostřednictvím CWindowImpl.
CComControl::ControlQueryInterface
Načte ukazatel na požadované rozhraní.
virtual HRESULT ControlQueryInterface(const IID& iid, void** ppv);
Parametry
iid
[v] Identifikátor GUID požadovaného rozhraní.
ppv
[ven] Ukazatel na ukazatel rozhraní identifikovaný parametrem iid nebo NULL, pokud rozhraní nebylo nalezeno.
Poznámky
Zpracovává pouze rozhraní v tabulce mapování modelu COM.
Příklad
// Retrieve the control's IOleObject interface. Note interface
// is automatically released when pOleObject goes out of scope
CComPtr<IOleObject> pOleObject;
ControlQueryInterface(IID_IOleObject, (void**)&pOleObject);
CComControl::CreateControlWindow
Ve výchozím nastavení vytvoří okno pro ovládací prvek voláním CWindowImpl::Create
.
virtual HWND CreateControlWindow(HWND hWndParent, RECT& rcPos);
Parametry
hWndParent
[v] Popisovač v okně nadřazeného nebo vlastníka Musí být zadán platný popisovač okna. Řídicí okno je omezeno na oblast nadřazeného okna.
RcPos
[v] Počáteční velikost a umístění okna, které se má vytvořit.
Poznámky
Tuto metodu přepište, pokud chcete udělat něco jiného než vytvořit jedno okno, například vytvořit dvě okna, z nichž jedna se stane panelem nástrojů pro váš ovládací prvek.
Příklad
RECT rc = {10,10,210,110};
HWND hwndParent, hwndControl;
// get HWND of control's parent window from IOleInPlaceSite interface
m_spInPlaceSite->GetWindow(&hwndParent);
hwndControl = CreateControlWindow(hwndParent, rc);
CComControl::FireOnChanged
Upozorní jímku kontejneru, že se změnila vlastnost ovládacího prvku.
HRESULT FireOnChanged(DISPID dispID);
Parametry
dispID
[v] Identifikátor vlastnosti, která se změnila.
Návratová hodnota
Jedna ze standardních hodnot HRESULT.
Poznámky
Pokud vaše třída ovládacího prvku je odvozena z IPropertyNotifySink, tato metoda volá CFirePropNotifyEvent::FireOnChanged upozornit všechna propojená IPropertyNotifySink
rozhraní, že se zadaná vlastnost ovládacího prvku změnila. Pokud vaše třída ovládacího prvku není odvozena IPropertyNotifySink
, tato metoda vrátí S_OK.
Tato metoda je bezpečná pro volání, i když váš ovládací prvek nepodporuje spojovací body.
Příklad
STDMETHODIMP CMyControl::put_MyText(BSTR newVal)
{
// store newVal in CComBstr member
m_bstrMyText = newVal;
// note the DISPID for the MyText property is 3 in this example
FireOnChanged(3);
return S_OK;
}
CComControl::FireOnRequestEdit
Upozorní jímku kontejneru, že se chystá změnit vlastnost ovládacího prvku a že objekt žádá jímku, jak pokračovat.
HRESULT FireOnRequestEdit(DISPID dispID);
Parametry
dispID
[v] Identifikátor vlastnosti, která se má změnit.
Návratová hodnota
Jedna ze standardních hodnot HRESULT.
Poznámky
Pokud vaše třída ovládacího prvku je odvozena z IPropertyNotifySink, tato metoda volá CFirePropNotifyEvent::FireOnRequestEdit oznámit všem připojeným IPropertyNotifySink
rozhraním, že se zadaná vlastnost ovládacího prvku chystá změnit. Pokud vaše třída ovládacího prvku není odvozena IPropertyNotifySink
, tato metoda vrátí S_OK.
Tato metoda je bezpečná pro volání, i když váš ovládací prvek nepodporuje spojovací body.
Příklad
STDMETHODIMP CMyControl::put_MyTitle(BSTR newVal)
{
// the DISPID for MyTitle in this example is 4
DISPID dispID = 4;
// make sure we can change the property
if (FireOnRequestEdit(dispID) == S_FALSE)
return S_FALSE;
// store newVal in CComBstr member
m_bstrMyTitle = newVal;
// signal that the property has been changed
FireOnChanged(dispID);
return S_OK;
}
CComControl::MessageBox
Voláním této metody vytvoříte, zobrazíte a zobrazíte okno se zprávou.
int MessageBox(
LPCTSTR lpszText,
LPCTSTR lpszCaption = _T(""),
UINT nType = MB_OK);
Parametry
lpszText
Text, který se má zobrazit v poli se zprávou
lpszCaption
Název dialogového okna. Pokud je hodnota NULL (výchozí), použije se název Chyba.
nType
Určuje obsah a chování dialogového okna. Seznam různých dostupných polí zpráv najdete v dokumentaci k sadě Windows SDK v položce MessageBox. Výchozí nastavení poskytuje jednoduché tlačítko OK .
Návratová hodnota
Vrátí celočíselnou hodnotu určující jednu z hodnot položek nabídky uvedené v části MessageBox v dokumentaci k sadě Windows SDK.
Poznámky
MessageBox
je užitečný jak při vývoji, tak jako snadný způsob zobrazení chybové nebo výstražné zprávy uživateli.
Viz také
CWindowImpl – třída
Přehled třídy
CComControlBase – třída
CComCompositeControl – třída