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 CComCompositeControl
tří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
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