Udostępnij za pośrednictwem


Klasa CComCompositeControl

Ta klasa udostępnia metody wymagane do zaimplementowania złożonej kontrolki.

Ważne

Tej klasy i jej składowych nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows.

Składnia

template <class T>
class CComCompositeControl : public CComControl<T,CAxDialogImpl<T>>

Parametry

T
Klasa, pochodząca z CComObjectRoot lub CComObjectRootEx, a także z innych interfejsów, które mają być obsługiwane dla kontrolki złożonej.

Elementy członkowskie

Konstruktory publiczne

Nazwa/nazwisko opis
CComCompositeControl::CComCompositeControl Konstruktor.
CComCompositeControl::~CComCompositeControl Destruktora.

Metody publiczne

Nazwa/nazwisko opis
CComCompositeControl::AdviseSinkMap Wywołaj tę metodę, aby doradzić lub nienadzorować wszystkich kontrolek hostowanych przez kontrolkę złożoną.
CComCompositeControl::CalcExtent Wywołaj tę metodę, aby obliczyć rozmiar w jednostkach HIMETRIC zasobu okna dialogowego używanego do hostowania złożonej kontrolki.
CComCompositeControl::Create Ta metoda jest wywoływana w celu utworzenia okna sterowania dla kontrolki złożonej.
CComCompositeControl::CreateControlWindow Wywołaj tę metodę, aby utworzyć okno sterowania i zalecić dowolną hostowaną kontrolkę.
CComCompositeControl::SetBackgroundColorFromAmbient Wywołaj tę metodę, aby ustawić kolor tła kontrolki złożonej przy użyciu koloru tła kontenera.

Publiczne elementy członkowskie danych

Nazwa/nazwisko opis
CComCompositeControl::m_hbrBackground Szczotka tła.
CComCompositeControl::m_hWndFocus Uchwyt okna, który obecnie ma fokus.

Uwagi

Klasy pochodzące z klasy CComCompositeControl dziedziczą funkcjonalność kontrolki złożonej ActiveX. Kontrolki ActiveX pochodzące z CComCompositeControl programu są hostowane przez standardowe okno dialogowe. Te typy kontrolek są nazywane kontrolkami złożonymi, ponieważ są w stanie hostować inne kontrolki (natywne kontrolki systemu Windows i kontrolki ActiveX).

CComCompositeControl identyfikuje zasób okna dialogowego, który ma być używany w tworzeniu złożonej kontrolki, wyszukując wyliczony element członkowski danych w klasie podrzędnej. Identyfikator elementu członkowskiego tej klasy podrzędnej jest ustawiony na identyfikator zasobu okna dialogowego, który będzie używany jako okno kontrolki. Poniżej przedstawiono przykład składowej danych, z którego powinna znajdować się klasa pochodząca z CComCompositeControl klasy w celu zidentyfikowania zasobu okna dialogowego, który ma być używany w oknie kontrolki:

enum { IDD = IDD_MYCOMPOSITE };

Uwaga

Kontrolki złożone są zawsze kontrolkami okien, chociaż mogą zawierać kontrolki bez okien.

Kontrolka zaimplementowana przez klasę pochodną CComCompositeControlma domyślne zachowanie tabulacji wbudowane. Gdy kontrolka odbiera fokus, będąc na karcie w aplikacji zawierającej, po kolei naciśnięcie TAB spowoduje, że fokus będzie przechodzić przez wszystkie zawarte kontrolki złożone, a następnie poza kontrolką złożoną i do następnego elementu w kolejności tabulatora kontenera. Kolejność tabulacji hostowanych kontrolek jest określana przez zasób okna dialogowego i określa kolejność występowania tabulacji.

Uwaga

Aby akceleratory działały prawidłowo z elementem CComCompositeControl, należy załadować tabelę akceleratora podczas tworzenia kontrolki, przekazać uchwyt i liczbę akceleratorów z powrotem do elementu IOleControlImpl::GetControlInfo, a na koniec zniszczyć tabelę po zwolnieniu kontrolki.

Przykład

// 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;
}

Hierarchia dziedziczenia

WinBase

CComControlBase

CComControl

CComCompositeControl

Wymagania

Nagłówek: atlctl.h

CComCompositeControl::AdviseSinkMap

Wywołaj tę metodę, aby doradzić lub nienadzorować wszystkich kontrolek hostowanych przez kontrolkę złożoną.

HRESULT AdviseSinkMap(bool bAdvise);

Parametry

bAdvise
Prawda, jeśli wszystkie kontrole mają być zalecane; w przeciwnym razie wartość false.

Wartość zwracana

Wartość Opis
S_OK Wszystkie kontrolki na mapie ujścia zdarzeń zostały pomyślnie połączone lub odłączone od źródła zdarzeń.
E_FAIL Nie wszystkie kontrolki na mapie ujścia zdarzeń mogą zostać pomyślnie połączone lub odłączone od źródła zdarzeń.
E_POINTER Ten błąd zwykle wskazuje problem z wpisem na mapie ujścia zdarzeń kontrolki lub problemem z argumentem szablonu używanym w klasie bazowej IDispEventImpl lub IDispEventSimpleImpl .
CONNECT_E_ADVISELIMIT Punkt połączenia osiągnął już limit połączeń i nie może go już zaakceptować.
CONNECT_E_CANNOTCONNECT Ujście nie obsługuje interfejsu wymaganego przez ten punkt połączenia.
CONNECT_E_NOCONNECTION Wartość pliku cookie nie reprezentuje prawidłowego połączenia. Ten błąd zwykle wskazuje problem z wpisem na mapie ujścia zdarzeń kontrolki lub problemem z argumentem szablonu używanym w klasie bazowej IDispEventImpl lub IDispEventSimpleImpl .

Uwagi

Podstawowa implementacja tej metody wyszukuje wpisy na mapie ujścia zdarzeń. Następnie zaleca lub nie nadzoruje punktów połączenia z obiektami COM opisanymi przez wpisy ujścia mapy ujścia zdarzeń. Ta metoda składowa opiera się również na tym, że klasa pochodna dziedziczy z jednego wystąpienia IDispEventImpl dla każdej kontrolki na mapie ujścia, która ma być zalecana lub nienadzorowana.

CComCompositeControl::CalcExtent

Wywołaj tę metodę, aby obliczyć rozmiar w jednostkach HIMETRIC zasobu okna dialogowego używanego do hostowania złożonej kontrolki.

BOOL CalcExtent(SIZE& size);

Parametry

rozmiar
Odwołanie do SIZE struktury, która ma zostać wypełniona przez tę metodę.

Wartość zwracana

WARTOŚĆ TRUE, jeśli kontrolka jest hostowana przez okno dialogowe; w przeciwnym razie FAŁSZ.

Uwagi

Rozmiar jest zwracany w parametrze size .

CComCompositeControl::Create

Ta metoda jest wywoływana w celu utworzenia okna sterowania dla kontrolki złożonej.

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

Parametry

hWndParent
Uchwyt do okna nadrzędnego kontrolki.

rcPos
Zarezerwowany.

dwInitParam
Dane, które mają być przekazywane do kontrolki podczas tworzenia kontrolki. Dane przekazane jako dwInitParam będą wyświetlane jako parametr LPARAM komunikatu WM_INITDIALOG , który zostanie wysłany do kontrolki złożonej po jej utworzeniu.

Wartość zwracana

Dojście do nowo utworzonej kontrolki złożonej okno dialogowe.

Uwagi

Ta metoda jest zwykle wywoływana podczas aktywacji w miejscu kontrolki.

CComCompositeControl::CComCompositeControl

Konstruktor.

CComCompositeControl();

Uwagi

Inicjuje elementy członkowskie danych CComCompositeControl::m_hbrBackground i CComCompositeControl::m_hWndFocus do wartości NULL.

CComCompositeControl::~CComCompositeControl

Destruktora.

~CComCompositeControl();

Uwagi

Usuwa obiekt tła, jeśli istnieje.

CComCompositeControl::CreateControlWindow

Wywołaj tę metodę, aby utworzyć okno sterowania i poinformować wszystkie hostowane kontrolki.

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

Parametry

hWndParent
Uchwyt do okna nadrzędnego kontrolki.

rcPos
Prostokąt położenia kontrolki złożonej we współrzędnych klienta względem hWndParent.

Wartość zwracana

Zwraca uchwyt do nowo utworzonej kontrolki złożonej okno dialogowe.

Uwagi

Ta metoda wywołuje CComCompositeControl ::Create i CComCompositeControl::AdviseSinkMap.

CComCompositeControl::m_hbrBackground

Szczotka tła.

HBRUSH m_hbrBackground;

CComCompositeControl::m_hWndFocus

Uchwyt okna, który obecnie ma fokus.

HWND m_hWndFocus;

CComCompositeControl::SetBackgroundColorFromAmbient

Wywołaj tę metodę, aby ustawić kolor tła kontrolki złożonej przy użyciu koloru tła kontenera.

HRESULT SetBackgroundColorFromAmbient();

Wartość zwracana

Zwraca S_OK powodzenia lub błąd HRESULT w przypadku niepowodzenia.

Zobacz też

Klasa CComControl
Podstawy sterowania złożonego
Omówienie klasy