Sdílet prostřednictvím


CComCompositeControl – třída

Tato třída poskytuje metody potřebné k implementaci složeného ovládacího prvku.

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 CComCompositeControl : public CComControl<T,CAxDialogImpl<T>>

Parametry

T
Třída odvozená z CComObjectRoot nebo CComObjectRootEx a také z jakéhokoli jiného rozhraní, které chcete podporovat pro složený ovládací prvek.

Členové

Veřejné konstruktory

Název Popis
CComCompositeControl::CComCompositeControl Konstruktor
CComCompositeControl::~CComCompositeControl Destruktor.

Veřejné metody

Název Popis
CComCompositeControl::AdviseSinkMap Voláním této metody poradit nebo nepovolit všechny ovládací prvky hostované složeným ovládacím prvku.
CComCompositeControl::CalcExtent Voláním této metody vypočítáte velikost v jednotkách HIMETRIC prostředku dialogového okna použitého k hostování složeného ovládacího prvku.
CComCompositeControl::Create Tato metoda je volána k vytvoření ovládacího okna pro složený ovládací prvek.
CComCompositeControl::CreateControlWindow Voláním této metody vytvořte okno ovládacího prvku a doporučte všechny hostované ovládací prvky.
CComCompositeControl::SetBackgroundColorFromAmbient Voláním této metody nastavíte barvu pozadí složeného ovládacího prvku pomocí barvy pozadí kontejneru.

Veřejné datové členy

Název Popis
CComCompositeControl::m_hbrBackground Štětec na pozadí.
CComCompositeControl::m_hWndFocus Popisovač okna, na které je aktuálně fokus.

Poznámky

Třídy odvozené z třídy CComCompositeControl dědí funkce složeného ovládacího prvku ActiveX. Ovládací prvky ActiveX odvozené z CComCompositeControl jsou hostovány standardním dialogovým oknem. Tyto typy ovládacích prvků se nazývají složené ovládací prvky, protože jsou schopné hostovat jiné ovládací prvky (nativní ovládací prvky Windows a ovládací prvky ActiveX).

CComCompositeControl identifikuje prostředek dialogového okna, který se má použít při vytváření složeného ovládacího prvku vyhledáním výčtového datového člena v podřízené třídě. IDD člena této podřízené třídy je nastaveno na ID prostředku dialogového okna, které se použije jako okno ovládacího prvku. Následuje příklad datového členu, který třída odvozená z CComCompositeControl by měla obsahovat k identifikaci prostředku dialogového okna ovládacího prvku:

enum { IDD = IDD_MYCOMPOSITE };

Poznámka:

Složené ovládací prvky jsou vždy ovládací prvky s okny, i když mohou obsahovat ovládací prvky bez oken.

Ovládací prvek implementovaný odvozenou CComCompositeControltřídou má předdefinované výchozí chování tabulátoru. Když ovládací prvek dostane fokus tím, že se přesune na záložku v aplikaci obsahující aplikaci, následné stisknutí klávesy TAB způsobí, že se fokus bude cyklicky procházet všemi ovládacími prvky obsaženými v složených ovládacích prvcích, pak z složeného ovládacího prvku a na další položku v pořadí karet kontejneru. Pořadí ovládacích prvků hostovaných ovládacích prvků je určeno prostředkem dialogového okna a určuje pořadí, ve kterém bude provádění ovládacích prvků tabbing probíhat.

Poznámka:

Aby akcelerátory správně fungovaly s objektem CComCompositeControl, je nutné načíst tabulku akcelerátoru při vytváření ovládacího prvku, předat popisovač a počet akcelerátorů zpět do IOleControlImpl::GetControlInfo a nakonec zničit tabulku při uvolnění ovládacího prvku.

Příklad

// Example for overriding IOleControlImpl::GetControlInfo()
// This example uses the accelerator table from the project resources
// with the identifier IDR_ACCELTABLE
// Define GetControlInfo() in the header of your composite 
// control class as follows:

STDMETHOD(GetControlInfo)(CONTROLINFO* pCI)
{
    // Load the accelerator table from the resource
    pCI->hAccel = LoadAccelerators(_AtlBaseModule.GetResourceInstance(), 
       MAKEINTRESOURCE(IDR_ACCELTABLE));

    if (pCI->hAccel == NULL)
        return E_FAIL;

    // Get the number of accelerators in the table
    pCI->cAccel = (USHORT)CopyAcceleratorTable(pCI->hAccel, NULL, 0);
    // The following is optional if you want your control
    // to process the return and/or escape keys
    // pCI.dwFlags = CTRLINFO_EATS_RETURN | CTRLINFO_EATS_ESCAPE;
    pCI->dwFlags = 0;

    return S_OK;
}

Hierarchie dědičnosti

WinBase

CComControlBase

CComControl

CComCompositeControl

Požadavky

Hlavička: atlctl.h

CComCompositeControl::AdviseSinkMap

Voláním této metody poradit nebo nepovolit všechny ovládací prvky hostované složeným ovládacím prvku.

HRESULT AdviseSinkMap(bool bAdvise);

Parametry

bAdvise
True, pokud se doporučuje všechny ovládací prvky; jinak nepravda.

Návratová hodnota

Hodnota Popis
S_OK Všechny ovládací prvky v mapě jímky událostí byly úspěšně připojeny nebo odpojeny od zdroje událostí.
E_FAIL Ne všechny ovládací prvky v mapě jímky událostí můžou být úspěšně připojené nebo odpojené od zdroje událostí.
E_POINTER Tato chyba obvykle značí problém s položkou v mapě jímky událostí ovládacího prvku nebo problém s argumentem šablony použitým v IDispEventImpl základní IDispEventSimpleImpl třídě.
CONNECT_E_ADVISELIMIT Spojovací bod již dosáhl svého limitu připojení a nemůže přijmout žádné další.
CONNECT_E_CANNOTCONNECT Jímka nepodporuje rozhraní vyžadované tímto spojovacím bodem.
CONNECT_E_NOCONNECTION Hodnota cookie nepředstavuje platné připojení. Tato chyba obvykle značí problém s položkou v mapě jímky událostí ovládacího prvku nebo problém s argumentem šablony použitým v IDispEventImpl základní IDispEventSimpleImpl třídě.

Poznámky

Základní implementace této metody hledá položky v mapě jímky událostí. Pak radí nebo neunadvisí spojovací body k objektům MODELU COM, které jsou popsány položkami jímky mapy událostí. Tato metoda členu také spoléhá na skutečnost, že odvozená třída dědí z jedné instance IDispEventImpl každého ovládacího prvku v mapě jímky, která má být doporučena nebo nepřipojena.

CComCompositeControl::CalcExtent

Voláním této metody vypočítáte velikost v jednotkách HIMETRIC prostředku dialogového okna použitého k hostování složeného ovládacího prvku.

BOOL CalcExtent(SIZE& size);

Parametry

velikost
Odkaz na SIZE strukturu, kterou má tato metoda vyplnit.

Návratová hodnota

TRUE, pokud je ovládací prvek hostován dialogovým oknem; jinak NEPRAVDA.

Poznámky

Velikost se vrátí v parametru size .

CComCompositeControl::Create

Tato metoda je volána k vytvoření ovládacího okna pro složený ovládací prvek.

HWND Create(
    HWND hWndParent,
    RECT& /* rcPos */,
    LPARAM dwInitParam = NULL);

Parametry

hWndParent
Popisovač nadřazeného okna ovládacího prvku.

RcPos
Vyhrazeno.

dwInitParam
Data, která se mají předat ovládacímu prvku během vytváření ovládacích prvků. Data předaná jako dwInitParam se zobrazí jako parametr LPARAM zprávy WM_INITDIALOG , která se odešle do složeného ovládacího prvku při jeho vytvoření.

Návratová hodnota

Popisovač nově vytvořeného dialogového okna složeného ovládacího prvku

Poznámky

Tato metoda se obvykle volá při místní aktivaci ovládacího prvku.

CComCompositeControl::CComCompositeControl

Konstruktor

CComCompositeControl();

Poznámky

Inicializuje CComCompositeControl::m_hbrBackground a CComCompositeControl::m_hWndFocus datové členy null.

CComCompositeControl::~CComCompositeControl

Destruktor.

~CComCompositeControl();

Poznámky

Odstraní objekt pozadí, pokud existuje.

CComCompositeControl::CreateControlWindow

Voláním této metody vytvořte okno ovládacího prvku a doporučte všechny hostované ovládací prvky.

virtual HWND CreateControlWindow(
    HWND hWndParent,
    RECT& rcPos);

Parametry

hWndParent
Popisovač nadřazeného okna ovládacího prvku.

RcPos
Obdélník pozice složeného ovládacího prvku v souřadnicích klienta vzhledem k hWndParent.

Návratová hodnota

Vrátí popisovač do nově vytvořeného dialogového okna složeného ovládacího prvku.

Poznámky

Tato metoda volá CComCompositeControl::Create a CComCompositeControl::AdviseSinkMap.

CComCompositeControl::m_hbrBackground

Štětec na pozadí.

HBRUSH m_hbrBackground;

CComCompositeControl::m_hWndFocus

Popisovač okna, na které je aktuálně fokus.

HWND m_hWndFocus;

CComCompositeControl::SetBackgroundColorFromAmbient

Voláním této metody nastavíte barvu pozadí složeného ovládacího prvku pomocí barvy pozadí kontejneru.

HRESULT SetBackgroundColorFromAmbient();

Návratová hodnota

Vrátí S_OK při úspěchu nebo chybu HRESULT při selhání.

Viz také

CComControl – třída
Základy složeného ovládacího prvku
Přehled třídy