Sdílet prostřednictvím


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

Jméno popis
CComControl::CComControl Konstruktor

Veřejné metody

Jméno 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

CComControlBase

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.

Vrácená 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.

Vrácená 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 .

Vrácená 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